我有一个简单的SCNNode
我想放在真实世界的位置,该节点对应一个已知坐标的地标。
ARKit配置将worldAlignment
属性设置为.gravityAndHeading
,因此x和z轴应该已经以世界为导向。
创建节点后,我将位置设置在距离
100米处node.position = SCNVector3(0, 0, -100)
然后我想投影节点但是具有正确的方位(来自用户和地标坐标)。我试图在y轴旋转(偏航)上旋转节点
node.eulerAngles = SCNVector3Make(0, bearingRadians, 0)
然而,无论我对bearingRadians
的值是多少,节点仍指向北方向。
我是否需要进行额外的转换?
答案 0 :(得分:1)
使用eulerAngles
,您只需在自己的坐标系中旋转节点。
您实际需要的是相对于摄像机位置执行节点的完整变换。转换是-z axis
上的翻译,然后根据您的方位在y-axis
上进行(负)轮换。
查看这个ARKit WindRose仓库,它在现实世界中对齐和投影基本方向:https://github.com/vasile/ARKit-CompassRose