Камера и 3d объект выглядят в противоположном направлении - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь установить мировую и локальную ротацию. Сначала поверните узел по оси x, а затем установите вращение мира в соответствии с гранью.

Но при установке положения в мире это отменяет локальное вращение объекта obj. и не вращается мой объект

scene.addOnUpdateListener(
(FrameTime frameTime) -> {
Collection faceList =
sceneView.getSession().getAllTrackables(AugmentedFace.class);
for (AugmentedFace face : faceList) {
if (!faceNodeMap.containsKey(face)) {
if (faceRegionsRenderable == null)
return;
AugmentedFaceNode faceNode = new AugmentedFaceNode(face);
faceNode.setParent(scene);
FloatBuffer buffer = face.getMeshVertices();
Vector3 vector3 = new Vector3(buffer.get(51), buffer.get(5), buffer.get(281));
faceNode.setLocalPosition(vector3);
faceNode.setLocalRotation(Quaternion.axisAngle(new Vector3(1f, 0, 0), 270f));
// faceNode.setRenderable(faceRegionsRenderable);

                    AugmentedFaceNode node1 = new AugmentedFaceNode(); // Normal Node
                    node1.setFaceMeshMaterialOverride(null);
                    node1.setLocalPosition(vector3);
                    node1.setLocalRotation(Quaternion.axisAngle(new Vector3(1f, 0, 0), 270f));


                    Vector3 cameraPosition = faceNode.getWorldPosition();
                    Vector3 facePosition = node1.getWorldPosition();
                    Vector3 direction = Vector3.subtract(cameraPosition, facePosition);
                    Quaternion lookRotation = Quaternion.lookRotation(direction, Vector3.up());
                    node1.setWorldRotation(lookRotation);




                    node1.setRenderable(faceRegionsRenderable);
                    node1.setFaceMeshTexture(null);
                    node1.setParent(faceNode);
                    faceNodeMap.put(face, faceNode);

                }else {

                }
            }
            // Remove any AugmentedFaceNodes associated with an AugmentedFace that stopped tracking.
            Iterator<Map.Entry<AugmentedFace, AugmentedFaceNode>> iter =
                    faceNodeMap.entrySet().iterator();
            while (iter.hasNext()) {
                Map.Entry<AugmentedFace, AugmentedFaceNode> entry = iter.next();
                AugmentedFace face = entry.getKey();
                if (face.getTrackingState() == TrackingState.PAUSED) {
                    AugmentedFaceNode faceNode = entry.getValue();
                    faceNode.setParent(null);
                    iter.remove();
                }
            }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...