【发布时间】:2019-10-16 11:09:30
【问题描述】:
我在我的应用程序中使用 AR Core 作为 3D 查看器。我没有使用 Sceneform 进行 AR 渲染,而是使用 3D 渲染模型。我面临的问题是如何通过滑动手势或触摸事件 360 度旋转模型。是否可以使用场景形式,或者我需要使用更困难的方式,例如 open GL。
这是我的代码。
public class FullDegreeActivity extends AppCompatActivity {
SceneView sceneView;
Scene scene;
Node node;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_full_degree);
inIt();
renderObject();
}
private void inIt() {
sceneView = findViewById(R.id.scene_view);
scene = sceneView.getScene();
}
private void renderObject() {
ModelRenderable.builder().setSource(this, Uri.parse("edited.sfb"))
.build().thenAccept(modelRenderable -> {
addNodeToScene(modelRenderable);
}
).exceptionally(throwable -> {
return null;
});
}
private void addNodeToScene(ModelRenderable renderable) {
node = new Node();
node.setParent(scene);
node.setLocalPosition(new Vector3(0f, 0f, -1f));
node.setLocalScale(new Vector3(1f, 1f, 1f));
node.setName("Dog");
node.setRenderable(renderable);
TransformableNode transformableNode = new TransformableNode(sceneView.getTransformationSystem());
transformableNode.setParent(node);
transformableNode.setLocalRotation(Quaternion.axisAngle(new Vector3(1f, 0, 0), 0f));
transformableNode.setRenderable(renderable);
transformableNode.select();
scene.addChild(transformableNode);
}
@Override
protected void onPause() {
super.onPause();
sceneView.pause();
}
@Override
protected void onResume() {
super.onResume();
try {
sceneView.resume();
} catch (CameraNotAvailableException e) {
e.printStackTrace();
}
}
}
【问题讨论】:
-
你有解决方案吗,我一直坚持这个如果你能分享细节会很有帮助