2017-07-23 122 views
2

我有一个简单的SCNNode,我想将它置于真实世界的位置,该节点对应于具有已知坐标的地标。使用真实世界轴承在ARKit场景中定位SCNNode

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

创建该节点后,我设置的位置在百米远从

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

那我想投影节点,但与正确的方位(从用户和里程碑意义的坐标)。我想旋转的y轴旋转的节点(偏航)

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

但是节点仍然指向正北方向,不管我有什么值bearingRadians

我需要做额外的转换吗?

回答

1

随着eulerAngles你只需要在自己的坐标系统中旋转你的节点。

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

查看此ARKit WindRose回购对齐并投影现实世界中的基本方向:https://github.com/vasile/ARKit-CompassRose