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