当我点击ARKit场景中的特定点时,我得到相对于我的设备位置的点的X
,Y
和Z
坐标(我是对的吗?)我想知道该点的绝对位置地球,不只是相对于我的设备。
到目前为止,我的逻辑是得到设备的longitude
,latitude
,altitude
,航向(罗盘方向)和姿态(旋转),并根据它计算点的绝对位置。
想知道是否有比这更简单的方法。
ARKit没有任何跟踪设备位置或在“绝对”地理空间坐标中放置内容的功能。实际上这样做(并且做得很好)是一个很难的问题......但是有一些事情可以帮助你。
首先,看看ARSessionConfiguration
worldAlignment
设置。使用默认的gravity
选项,x和z方向相对于设备的原始标题,从您开始会话时开始。从那里到地理空间坐标几乎是不可能的。
但是使用gravityAndHeading
选项,轴固定为北/南和东/西 - ARKit坐标系原点的位置仍然相对于设备在会话开始时的位置,但方向是绝对的。这为您提供了转换为地理空间坐标/从地理空间坐标转换的基础。
但仍然存在精确度问题。 ARKit可以跟踪几米之外的功能,精确到几毫米。核心位置跟踪设备的精度为几米。所以,如果你有一个真实世界的功能,你想把虚拟内容放在它上面...你可以将一个纬度/经度转换为ARKit空间中的位置,但是你可能会发现你的内容没有真的排队了。
这不是一个无法解决的问题,但也不是一个简单的问题。祝好运!