用 Sceneform sdk 中的另一个可渲染节点替换可渲染节点(相同的旋转、位置和比例)
Replace node renderable ( same rotation, position and scale ) with another node renderable in Sceneform sdk
我是 Android 的 sceneform sdk 新手。我添加了一个 Transformable Node
,然后我应用了一些 rotation , scaling 并改变了它的位置。现在单击按钮我需要放置第二个具有相同旋转、缩放和位置的节点。
为此我所做的是:
Node nodeTwo = new Node(); // second node
nodeTwo.setLocalPosition(nodeOne);
nodeTwo.setLocalRotation(nodeOne);
nodeTwo.setLocalScale(nodeOne);
nodeTwo.setRenderable(renderable);
我也试过 setWorldPosition() , setWorldRotation().
。但是没有任何效果,第二个节点被放置在固定位置和旋转上。
我可以'fix'做些什么吗?
试试这个:
Node nodeTwo = new Node(); // second node
nodeTwo.setWorldPosition(nodeOne.getWorldPosition());
nodeTwo.setWorldRotation(nodeOne.getWorldRotation());
nodeTwo.setWorldScale(nodeOne.getWorldScale());
nodeTwo.setRenderable(renderable);
anchor = hitResult.createAnchor();
anchorNode = new AnchorNode(anchor);
anchorNode.setParent(arView.getArSceneView().getScene());
transformableNode = new TransformableNode(arView.getTransformationSystem()); // As you said i have added one transformablenode which will allow transformation.
transformableNode.setParent(anchorNode);
transformableNode.setRenderable(modelRenderable);
transformableNode.select();
然后我添加了另一个节点,它将用相同的转换替换第一个节点。
Node node = new Node();
Vector3 position = transformableNode.getLocalPosition();
Quaternion rotation = transformableNode.getLocalRotation();
TransformableNode andyNOde = new TransformableNode(arView.getTransformationSystem());
andyNOde.setRenderable(andyRenderable);
andyNOde.setLocalPosition(position);
andyNOde.setLocalRotation(rotation);
andyNOde.setParent(node);
anchorNode.removeChild(transformableNode);
anchorNode.addChild(node);
它正在使用此代码,可能是您做错了什么,请检查您的代码两次。希望对您有所帮助!
我是 Android 的 sceneform sdk 新手。我添加了一个 Transformable Node
,然后我应用了一些 rotation , scaling 并改变了它的位置。现在单击按钮我需要放置第二个具有相同旋转、缩放和位置的节点。
为此我所做的是:
Node nodeTwo = new Node(); // second node
nodeTwo.setLocalPosition(nodeOne);
nodeTwo.setLocalRotation(nodeOne);
nodeTwo.setLocalScale(nodeOne);
nodeTwo.setRenderable(renderable);
我也试过 setWorldPosition() , setWorldRotation().
。但是没有任何效果,第二个节点被放置在固定位置和旋转上。
我可以'fix'做些什么吗?
试试这个:
Node nodeTwo = new Node(); // second node
nodeTwo.setWorldPosition(nodeOne.getWorldPosition());
nodeTwo.setWorldRotation(nodeOne.getWorldRotation());
nodeTwo.setWorldScale(nodeOne.getWorldScale());
nodeTwo.setRenderable(renderable);
anchor = hitResult.createAnchor();
anchorNode = new AnchorNode(anchor);
anchorNode.setParent(arView.getArSceneView().getScene());
transformableNode = new TransformableNode(arView.getTransformationSystem()); // As you said i have added one transformablenode which will allow transformation.
transformableNode.setParent(anchorNode);
transformableNode.setRenderable(modelRenderable);
transformableNode.select();
然后我添加了另一个节点,它将用相同的转换替换第一个节点。
Node node = new Node();
Vector3 position = transformableNode.getLocalPosition();
Quaternion rotation = transformableNode.getLocalRotation();
TransformableNode andyNOde = new TransformableNode(arView.getTransformationSystem());
andyNOde.setRenderable(andyRenderable);
andyNOde.setLocalPosition(position);
andyNOde.setLocalRotation(rotation);
andyNOde.setParent(node);
anchorNode.removeChild(transformableNode);
anchorNode.addChild(node);
它正在使用此代码,可能是您做错了什么,请检查您的代码两次。希望对您有所帮助!