【问题标题】:Getting the absolute position of a point in ARKit在 ARKit 中获取点的绝对位置
【发布时间】:2017-12-06 04:09:04
【问题描述】:
当我点击 ARKit 场景中的特定点时,我会得到该点相对于我设备位置的 X、Y 和 Z 坐标(对吗?)我想要知道该点在地球上的绝对位置,而不仅仅是相对于我的设备。
到目前为止,我的逻辑是获取设备的longitude、latitude、altitude、航向(罗盘方向)和姿态(旋转),并据此计算点的绝对位置。
想知道是否有比这更简单的方法。
【问题讨论】:
标签:
ios
swift
core-location
core-motion
arkit
【解决方案1】:
ARKit 没有任何用于跟踪设备位置或将内容放置在“绝对”地理空间坐标中的功能。实际上这样做(并且做得好)是一个难题......但是有一些事情可以帮助你。
首先,检查ARSessionConfiguration worldAlignment 设置。使用默认的 gravity 选项,x 和 z 方向相对于设备的 original 标题,截至您开始会话时。从那里到达地理空间坐标几乎是不可能的。
但是使用gravityAndHeading 选项,坐标轴固定为北/南和东/西——ARKit 坐标系原点的位置仍然相对于设备在会话开始时的位置,但方向是绝对的。这为您转换到/从地理空间坐标提供了基础。
但仍然存在精度问题。 ARKit 可以跟踪最远几米远的特征,精确到几毫米。 Core Location 以几米的精度跟踪设备。所以,如果你有一个真实世界的功能并且你想在它上面放置虚拟内容......你可以将纬度/经度转换为 ARKit 空间中的位置,但是你可能会发现你的内容没有'' 真的排队不够近。
这不是一个无法解决的问题,但也不是一件容易的事。祝你好运!