Для этого сразу после создания нового узла используйте свойство экземпляра worldOrientation
, которое управляет ориентацией узла относительно мирового координатного пространства сцены.
var worldOrientation: SCNQuaternion { get set }
Этот кватернион изолирует вращательный аспект матрицы worldTransform
узла, который, в свою очередь, является преобразованием преобразования узла из локального пространства в мировое координатное пространство сцены. То есть он выражает разницу в оси и угле поворота между узлом и rootNode
.
сцены.
let worldOrientation = sceneView.scene.rootNode.worldOrientation
yourNode.rotation = worldOrientation /* X, Y, Z, W components */
P.S. (как вы обновили свой вопрос) :
Если вы используете SpriteKit , 2D-спрайты, которые вы порождаете в ARSKView, всегда обращены к камере. Таким образом, если камера перемещается вокруг определенной точки реальной сцены, все спрайты должны вращаться вокруг своей точки поворота, все еще лицом к камере.
Ничто не может помешать вам использовать SceneKit и SpriteKit вместе .