【问题标题】:How do you attach an object to your camera position with ARKit Swift?如何使用 ARKit Swift 将对象附加到相机位置?
【发布时间】:2017-11-15 20:23:39
【问题描述】:

我有一些移动的物体,我希望它们能够与玩家发生碰撞。我有能力通过获取我当时的当前位置/方向来从我身上发射物体,但我不明白如何将一个物体附加到我身上,它会一直跟随我的定位。

【问题讨论】:

  • 您在 ARKit 中使用了哪种显示技术?场景套件?精灵套件?统一?等等……
  • 我使用 SceneKit 作为我的显示技术。

标签: swift xcode augmented-reality arkit


【解决方案1】:

在 SceneKit 中,所有可以在场景中占有位置的东西都是(附加到)一个节点。这不仅包括可见物体,还包括光源和相机。当您使用ARSCNView 时,仍然有一个 SceneKit 相机,但 ARKit 控制它的位置/方向。

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

即使在您不自己创建相机的场景中(例如当 SceneKit 和 ARKit 为您管理相机时),您也可以使用视图的 pointOfView 属性获取包含当前相机的节点。 (注:ARSCNViewSCNView 的子类,其大部分有用的API 由SCNSceneRenderer 协议定义。)

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

【讨论】:

    【解决方案2】:

    ARSCNView 有一个属性“pointOfView”。您可以将子节点附加到它。

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

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

    【讨论】:

    • 如果您想将对象添加到相机的节点层次结构中,这很有用,但如果要将其添加到标准场景视图的节点层次结构中,那么我推荐这种方法始终在前面放置一个 SCNNode摄像头:stackoverflow.com/questions/42029347/…
    • 我无法正常工作:sceneView.pointOfView?.addChildNode(...) - 它对我没有任何显示。
    • 你需要给球一个颜色或纹理,然后你就会看到它。
    【解决方案3】:

    以下代码可让我获取相机的当前位置(x、y、z 坐标)。

        let pov = sceneView.pointOfView
        let position = pov?.position
    
        let x = position?.x
        let y = position?.y
        let z = position?.z
    

    【讨论】:

      【解决方案4】:

      你需要接受 Jimi 的回答,并给球一个颜色或纹理才能看到它:

      let ball = SCNSphere(radius: 0.02)
      ball.firstMaterial?.diffuse.contents = UIColor.red
      let ballNode = SCNNode(geometry: ball)
      ballNode.position = SCNVector3Make(0, 0, -0.2)
      self.sceneView.pointOfView?.addChildNode(ballNode)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-06-07
        • 2020-11-24
        • 1970-01-01
        • 1970-01-01
        • 2020-03-18
        • 2018-08-23
        • 2018-01-30
        • 1970-01-01
        相关资源
        最近更新 更多