Вы должны предпочесть кватернион перед неоднозначными углами Эйлера.

ожусь в процессе изучения ARKit и Scenekit одновременно, и это было немного сложной задачей.

С созданным сеансом ARWorldTrackingSessionConfiguration мне было интересно, знает ли кто-нибудь, как определить положение «камеры» пользователя в сеансе сцены. Идея в том, что я хочу анимировать объект в направлении текущей позиции пользователя.

let reaperScene = SCNScene(named: "reaper.dae")!
let reaperNode = reaperScene.rootNode.childNode(withName: "reaper", recursively: true)!
reaperNode.position = SCNVector3Make(0, 0, -1)
let scene = SCNScene()
scene.rootNode.addChildNode(reaperNode)

// some unknown amount of time later   
let currentCameraPosition = sceneView.pointOfView?.position
let moveAction = SCNAction.move(to: currentCameraPosition!, duration: 1.0)
reaperNode.runAction(moveAction)

Тем не менее, кажется, что currentCameraPosition всегда [0,0,0], хотя я перемещаю камеру. Есть идеи, что я делаю не так? В конце концов идея состоит в том, чтобы я вращал объект вокруг невидимой сферы, пока он не оказался перед камерой, а затем анимировал его, делая что-то похожее на это:Поверните узел SCNCamera, глядя на объект вокруг воображаемой сферы (таким образом, пользователь видит объект, оживляющий к ним)

Спасибо за любую помощь.

Ответы на вопрос(1)

Ваш ответ на вопрос