Как я могу повернуть объект AR на месте? - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь повернуть объект AR на месте, используя quaternion.axisAngle, но это не работает.

Я просто хочу заставить объект вращаться на месте, вот так .

Это мой код.

//Right Rotation
ImageButton.OnTouchListener controll_BtnRigntRoation = new ImageButton.OnTouchListener() {
    @Override
    public boolean onTouch(View controllRightDown, MotionEvent event) {
        if (controllRightDown == mRightRoation) {
            ma.initModel();
            for (int i=0; i<ma.infoArray.size(); i++) {
                if (ma.infoArray.get(i).getNode().isSelected()) {
                    int finalI = i;
                    ma.arFragment.getArSceneView().getScene().addOnUpdateListener(frameTime -> {
                        Quaternion r1 = Quaternion.axisAngle(new Vector3(0, 0, 1), frameTime.getStartSeconds()* 180); //y 방향으로는 안됨..
                        ma.infoArray.get(finalI).getNode().setLocalRotation(r1);
                    });
                }
            }
        }
        return false;
    }
};

Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 02 июня 2020

Скорее всего, вы захотите использовать трансформируемый узел - это позволит вам выполнить тип вращения, который, как я думаю, вы ищете:

Пример использования:

           var newAnchorNode:AnchorNode = AnchorNode(newAnchor)
           anchorNode.setParent(arFragment.getArSceneView().getScene());
           var transNode = TransformableNode(arFragment.transformationSystem)

           //Rotate the node - i.e set the direction it is 'looking'
           transNode.setLookDirection(Vector3(0f, xPoint, yPoint), topDirection)

           //Set it's parent to the anchor you created and set
           //the renderable
           transNode.setParent(anchorNode);
           transNode.setRenderable(renderable);
...