环境:ARKit 2.0,iPhone X,iOS 12.1
在ARSeesion
状态下运行ARWorldMappingStatusMapped
时,
ARSession.AddAnchor
将指定位置( #A )上的一些自定义锚点添加到了世界地图。然后关闭该应用并重启ARSession
,
ARKitWorldTrackingSessionConfiguration.initialWorldMap
ARSession.runWithConfiguration
重新启动会话。ARSession
的状态指示已将记录的世界地图与当前环境进行对帐时,请从ARWorldMap.anchors
中读取锚点( #B )的位置。< / li>
但是我发现读取锚点( #B )的位置与保存时的位置( #A )相比没有变化。 不正确。为什么?
因为手机的初始位置是坐标原点的位置。应用程序一度关闭,并且手机被移至另一个地方。因此,重新启动ARSeesion
后,坐标原点的位置发生了变化。然后ARSession
还应该将保存在世界地图中的ARAnchors
的位置调和到正确的位置,因此ARAnchors
的位置应该已经更改。
答案 0 :(得分:0)
摘自initialWorldMap
文档:
如果成功,则跟踪状态会在短时间后变为ARCamera.TrackingState.normal,表示当前世界坐标系和锚点与记录的世界地图中的匹配
这些锚点的位置应该相同,但是世界坐标系的原点应在重新定位后发生变化。
答案 1 :(得分:0)
我找到了原因。我重新启动会话进行对帐后,开始了其initialWorldMap
为nil
且运行选项为0
的初始会话。因此,它与协调会话冲突。取消对帐。因此,已加载的锚点的位置不会改变,因为ARSession
不知道它们。