当我点击 ARKit 场景中的一个特定点时,我会得到该点相对于我的设备的位置(我说的对吗?)我想知道地球上该点的绝对位置,而不仅仅是相对于我的设备。
到目前为止,我的逻辑是获取longitude
、latitude
、altitude
、heading(指南针方向)和attitude(旋转)并据此计算出该点的绝对位置。
想知道是否有比这更简单的方法。
最佳答案
ARKit 没有任何用于跟踪设备位置或将内容放置在“绝对”地理空间坐标中的功能。实际上做到这一点(并且做得很好)是一个难题……但是有一些事情可以帮助您。
首先,检查ARSessionConfiguration
worldAlignment
环境。使用默认的 gravity
选项,x 和 z 方向是相对于设备的原始航向的,在您开始 session 时。从那里获得地理空间坐标几乎是不可能的。
但是有了 gravityAndHeading
选项,轴固定为北/南和东/西——ARKit 坐标系原点的位置仍然相对于设备在 session 开始时的位置,但方向是绝对的。这为您提供了与地理空间坐标相互转换的基础。
但仍然存在精度问题。 ARKit 可以跟踪最远几米远的特征,精确到几毫米。 Core Location 以几米的精度跟踪设备。所以,如果你有一个真实世界的功能并且你想把虚拟内容放在它上面......你可以将纬度/经度转换为 ARKit 空间中的一个位置,但是你可能会发现你的内容没有真的排得够近了。
这不是一个无法解决的问题,但也不是一个容易的问题。祝你好运!
关于ios - 在 ARKit 中获取一个点的绝对位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44876262/