0

我想要一个添加到场景中的节点指向北方。我从核心位置获取标题数据,以便表示设备当前在我的场景创建点处所面对的方向(以及我的根节点所面对的方向),然后我将标题添加到我的新sceneNode'seulerAngles.y中,以进行旋转所以它面向北方。

func renderer(_ renderer: SCNSceneRenderer, didRenderScene scene: SCNScene, atTime time: TimeInterval) {
    if sceneNode == nil,
        let heading = self.locationManager.heading {
        sceneNode = SCNNode()
        sceneNode.eulerAngles.y += Float(heading).degreesToRadians
        sceneView.scene.rootNode.addChildNode(sceneNode)
    }
}

标题信息是正确的,因此将其旋转这么多确实会将其旋转所需的量,假设标题与我的根节点所面对的方向相同。但是我发现我的根节点的方向不等于设备的方向,有时可能会非常偏离。所以这意味着标题与场景节点的“标题”相同的假设是不正确的,我需要能够知道它离标题有多远,这样我就可以在我的sceneNode.

4

1 回答 1

1

将您的会话配置更改worldAlignment.gravityAndHeading.

使用默认.gravity对齐方式,AR 世界坐标系的 x 和 z 轴指向的位置没有绝对参考——它们的方向基于会话开始时设备的初始方向。

使用该.gravityAndHeading选项,x 和 z 轴与罗盘方向对齐,因此您可以安全地相对于罗盘方向确定内容的方向。

于 2017-07-09T15:04:10.513 回答