代码之家  ›  专栏  ›  技术社区  ›  zwcloud

为什么在Arkit将记录的世界地图与当前环境协调后锚的位置没有变化?

  •  1
  • zwcloud  · 技术社区  · 5 年前

    环境:Arkit 2.0、iPhone X、iOS 12.1

    当运行一个 ARSeesion ARWorldMappingStatusMapped 状态,

    1. 一些特定位置的自定义锚定( αa )通过添加到世界地图 ARSession.AddAnchor .
    2. 世界地图被保存到一个文件中。

    那么 关闭 应用程序并重新启动 ARSession ,请

    1. 配置 加载保存的世界地图并将其分配给 ARKitWorldTrackingSessionConfiguration.initialWorldMap
    2. 游程选项 重置跟踪并删除现有锚定
    3. 然后通过调用重新启动会话 ARSession.runWithConfiguration 配置 游程选项 上面。
    4. 当状态 阿塞斯 指示它已将记录的世界地图与当前环境进行协调,读取定位点的位置( αb ARWorldMap.anchors .

    但我发现读锚的位置( αb )与保存位置相比没有更改( αa )。 不正确。为什么?

    因为手机的初始位置是坐标原点的位置。应用程序关闭后,手机被移到了另一个地方。所以坐标原点的位置在重启 纵火 . 然后 阿塞斯 还应协调 ARAnchors 保存在世界地图上的适当位置,因此 阿桑克斯 应该已经改变了。

    2 回复  |  直到 5 年前
        1
  •  0
  •   jlsiewert    5 年前

    initialWorldMap 文档:

    如果成功,跟踪状态在短时间后变为arcamera.tracking state.normal, 表示当前世界坐标系 与记录的世界地图上的相匹配 .

    这些锚的位置应该是相同的,但是世界坐标系的原点应该在重新定位后改变。

        2
  •  0
  •   zwcloud    5 年前

    我找到了原因。第一届会议 initialWorldMap nil 运行选项是 0 开始 之后 我重新开始了会议以进行和解。所以它与和解会议相冲突。这就取消了对账单。因此,受载锚的位置不会改变,因为它们对 ARSession .