Я пытаюсь установить мировую и локальную ротацию. Сначала поверните узел по оси 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();
}
}
});