ios - 在 ARKit 中获取一个点的绝对位置

标签 ios swift core-location core-motion arkit

当我点击 ARKit 场景中的一个特定点时,我会得到该点相对于我的设备的位置(我说的对吗?)我想知道地球上该点的绝对位置,而不仅仅是相对于我的设备。

到目前为止,我的逻辑是获取longitudelatitudealtitude、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/

相关文章:

ios - MKUserTrackingBarButtonItem 在应用被禁止使用当前位置后旋转

ios - 键盘打开时更改 View 位置 - objective-c

ios - 在 Spritekit 中左右倾斜宇宙飞船

iphone - 如何在 iPhone 中创建 ipa 并运行应用程序

iphone - 核心图 - 设置缩放级别以仅显示图形的一部分

ios - 是否可以在 iOS 框架内获取位置?

ios - 从 App 打开 map 返回 Nil 作为自定义点注释的位置标题

ios - 显示 UIPickerView 文本框被选中,选中后隐藏

Swift 协议(protocol)导致无效的重新声明和困惑的函数表

ios - 在 Swift 中将 CLLocation 转换为 MKMapItem