首页 文章

使用真实世界的方位定位ARKit场景中的SCNNode

提问于
浏览
2

我有一个简单的 SCNNode ,我想放在真实世界的位置,该节点对应一个已知坐标的地标 .

ARKit配置将 worldAlignment 属性设置为 .gravityAndHeading ,因此x和z轴应该已经以世界为导向 .

创建节点后,我将位置设置在距离的100米处

node.position = SCNVector3(0, 0, -100)

然后我想投影节点,但具有正确的方位(来自用户和地标坐标) . 我试图在y轴旋转上旋转节点(偏航)

node.eulerAngles = SCNVector3Make(0, bearingRadians, 0)

然而,无论我对 bearingRadians 有什么 Value ,节点仍指向北方向 .

我需要做一个额外的转变吗?

1 回答

  • 1

    使用 eulerAngles ,您只需在自己的坐标系中旋转节点 .

    您实际需要的是相对于摄像机位置执行节点的完全变换 . 转换是 -z axis 上的转换,然后根据您的方位在 y-axis 上进行(负)旋转 .

    查看这个ARKit WindRose仓库,它在现实世界中对齐和投影主要方向:https://github.com/vasile/ARKit-CompassRose

相关问题