Замените визуализируемый узел (тот же поворот, положение и масштаб) другим визуализируемым узлом в Sceneform SDK - PullRequest
0 голосов
/ 30 октября 2018

Я новичок в сцене формы SDK для Android. Я добавил один Transformable Node, затем применил вращение, масштабирование и также изменил его положение. Теперь по нажатию кнопки мне нужно разместить второй узел с таким же вращением, масштабированием и положением.

Для этого я сделал:

 Node nodeTwo = new Node(); // second node
 nodeTwo.setLocalPosition(nodeOne);
 nodeTwo.setLocalRotation(nodeOne);
 nodeTwo.setLocalScale(nodeOne);
 nodeTwo.setRenderable(renderable); 

Я также пытался с setWorldPosition() , setWorldRotation().. Но ничего не работает, второй узел помещен в фиксированную позицию и вращение.

Могу ли я что-нибудь сделать, чтобы это исправить?

Ответы [ 2 ]

0 голосов
/ 31 октября 2018
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);

Он работает с этим кодом, может быть, вы что-то делали не так, проверьте код дважды. Надеюсь, это поможет!

0 голосов
/ 30 октября 2018

Попробуйте это:

Node nodeTwo = new Node(); // second node
nodeTwo.setWorldPosition(nodeOne.getWorldPosition()); 
nodeTwo.setWorldRotation(nodeOne.getWorldRotation());
nodeTwo.setWorldScale(nodeOne.getWorldScale());
nodeTwo.setRenderable(renderable); 
...