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

时间:2017-07-23 08:06:56

标签: swift scenekit arkit

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

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

创建节点后,我将位置设置在距离

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

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

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

然而,无论我对bearingRadians的值是多少,节点仍指向北方向。

我是否需要进行额外的转换?

1 个答案:

答案 0 :(得分:1)

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

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

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