Я нахожусь в процессе изучения 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, глядя на объект вокруг воображаемой сферы (таким образом, что пользователь видит объект оживить к ним)
Спасибо за любую помощь.