为什么在 ARKit 将记录的世界地图与当前环境协调后锚点的位置没有改变?
Why anchors' position doesn't change after ARKit reconciling the recorded world map with the current environment?
环境:ARKit 2.0,iPhone X,iOS 12.1
虽然 运行在 ARWorldMappingStatusMapped
状态下 ARSeesion
,
- 通过
ARSession.AddAnchor
. 将指定位置的一些自定义锚点 (#A) 添加到世界地图中
- 世界地图已保存到文件。
然后关闭应用并重启ARSession
,
- 配置加载保存的世界地图并将其分配给
ARKitWorldTrackingSessionConfiguration.initialWorldMap
- 运行 选项 重置跟踪并删除现有锚点
- 然后通过使用上面的配置和运行选项调用
ARSession.runWithConfiguration
重新启动会话。
- 当
ARSession
的状态表明它已经将记录的世界地图与当前环境相协调时,从[=中读取锚点(#B)的位置17=].
但是我发现读取锚点(#B)的位置与保存时的位置(#A相比没有变化). 这是不正确的。为什么?
因为phone的初始位置就是坐标原点的位置。并且该应用程序一度关闭并且 phone 被移动到另一个地方。所以重启ARSeesion
后坐标原点的位置发生了变化。那么ARSession
也应该将保存在世界地图中的ARAnchors
的位置调到合适的位置,所以ARAnchors
的位置应该已经改变了。
来自 initialWorldMap
文档:
If successful, the tracking state becomes ARCamera.TrackingState.normal after a short time, indicating that the current world coordinate system and anchors match those from the recorded world map.
这些锚点的位置应该相同,但是世界坐标系的原点在重新定位后应该改变。
我找到了原因。初始session,其initialWorldMap
为nil
,运行选项为0
,后开始,我重新启动了session 用于协调。所以和调和session有冲突。这取消了协调。因此,加载锚点的位置不会改变,因为它们对于 ARSession
.
是未知的
环境:ARKit 2.0,iPhone X,iOS 12.1
虽然 运行在 ARWorldMappingStatusMapped
状态下 ARSeesion
,
- 通过
ARSession.AddAnchor
. 将指定位置的一些自定义锚点 (#A) 添加到世界地图中
- 世界地图已保存到文件。
然后关闭应用并重启ARSession
,
- 配置加载保存的世界地图并将其分配给
ARKitWorldTrackingSessionConfiguration.initialWorldMap
- 运行 选项 重置跟踪并删除现有锚点
- 然后通过使用上面的配置和运行选项调用
ARSession.runWithConfiguration
重新启动会话。 - 当
ARSession
的状态表明它已经将记录的世界地图与当前环境相协调时,从[=中读取锚点(#B)的位置17=].
但是我发现读取锚点(#B)的位置与保存时的位置(#A相比没有变化). 这是不正确的。为什么?
因为phone的初始位置就是坐标原点的位置。并且该应用程序一度关闭并且 phone 被移动到另一个地方。所以重启ARSeesion
后坐标原点的位置发生了变化。那么ARSession
也应该将保存在世界地图中的ARAnchors
的位置调到合适的位置,所以ARAnchors
的位置应该已经改变了。
来自 initialWorldMap
文档:
If successful, the tracking state becomes ARCamera.TrackingState.normal after a short time, indicating that the current world coordinate system and anchors match those from the recorded world map.
这些锚点的位置应该相同,但是世界坐标系的原点在重新定位后应该改变。
我找到了原因。初始session,其initialWorldMap
为nil
,运行选项为0
,后开始,我重新启动了session 用于协调。所以和调和session有冲突。这取消了协调。因此,加载锚点的位置不会改变,因为它们对于 ARSession
.