如何使用ARKit Swift将物体附加到相机位置?

Jos*_*pen 6 xcode augmented-reality swift arkit

我有移动的物体,我希望能够与玩家碰撞.我有能力通过获取我当前的位置/方向来启动我的物体,但我不明白如何将物体附加到我身上,这将随时跟随我的位置.

ric*_*ter 20

在SceneKit中,可以在场景中具有位置的所有内容(附加到)节点.这不仅包括可见物体,还包括光源和照相机.当你使用时ARSCNView,仍然有一个SceneKit相机,但ARKit控制它的位置/方向.

SceneKit节点创建层次结构:每个节点的位置(和方向等)都相对于其父节点.如果父节点在场景内移动,则其子节点随之移动,以便它们保持相同的父相对位置.因此,如果您希望某些内容始终保持相对于相机的相同位置,则应将该内容设为相机节点的子项.

即使在您不自己创建相机的场景中 - 例如当SceneKit和ARKit为您管理相机时 - 您也可以获得包含具有视图pointOfView属性的当前相机的节点.(注意:ARSCNView是其子类SCNView,其大多数有用的API由SCNSceneRenderer协议定义.)

您可能必须等到会话开始运行才能访问ARKit管理的摄像机节点.


Jim*_*imi 10

ARSCNView有一个属性'pointOfView'.您可以将子节点附加到它.

let ball = SCNSphere(radius: 0.02)
ballNode = SCNNode(geometry: ball)
ballNode?.position = SCNVector3Make(0, 0, -0.2)
sceneView.pointOfView?.addChildNode(ballNode!)
Run Code Online (Sandbox Code Playgroud)

无论您走到哪里,节点都会跟随您的相机.