【问题标题】:ARKit shows a map on floor/bottom of a screenARKit 在屏幕底部/底部显示地图
【发布时间】:2021-12-28 04:59:30
【问题描述】:

通过 ARKit,我想将室内地图放在地板上。 目前我尝试了两件事:

  1. 我已将大型平面放置在摄像机下方和地板上方,但这会导致相当大的漂移。走路时动作不顺畅,整体体验也不是很丰富。
  2. 看到了一个可以识别水平面的解决方案,但它有其自身的问题。

那么真的有可能取得好的结果吗?

【问题讨论】:

    标签: swift augmented-reality arkit realitykit


    【解决方案1】:

    配备激光雷达的设备

    LiDAR scanner 有其优点和缺点。 LiDAR 的主要优势在于它能够几乎立即重建地板和墙壁,然后您可以轻松地将任何 3D 模型附加到生成的表面 - 模型将稳定,不会漂移,因此用户的 AR 体验将是 压倒性的,正如你所说。此外,LiDAR 的一个重要优势是在光线不足和纹理不佳的环境中表现出色。

    Here您可以阅读有关遮挡功能和一些 LiDAR 特性的信息。好消息:激光雷达与平面检测选项完美结合。

    ARKit 将重建的场景细分为 ARMeshAnchors,让您可以访问多边形几何和表面分类。

    ARMeshAnchor().geometry.classification
    ARMeshAnchor().geometry.faces
    ARMeshAnchor().geometry.vertices
    ARMeshAnchor().transform.columns.3
    

    没有激光雷达的设备

    在没有激光雷达扫描仪的情况下,我们只能使用平面检测功能检测水平和垂直表面。我可以说所有 AR 框架(包括 ARKit 和 RealityKit)在定义水平表面方面都比垂直表面更好更快。

    但是,与重建表面相比,检测到的平面不太稳定,因此有时可能会出现轻微的漂移。要成功完成平面检测阶段,您需要一个光线充足的房间和good-for-tracking 周围物体的纹理。

    ARKit 使用 ARPlaneAnchor 为每个独特的垂直和/或水平表面调用您的代理的 renderer(_:didAdd:for:)。每个平面锚点都提供有关表面的详细信息——它的世界位置、尺寸和真实世界表面的分类。

    除上述之外,还需要名为renderer(_:didUpdate:for:) 的委托方法将多个共面检测平面合并为更大的结果检测平面(例如地板表面)。

    ARPlaneAnchor().classification
    ARPlaneAnchor().extent
    ARPlaneAnchor().alignment
    ARPlaneAnchor().center
    

    真的有可能取得好成绩吗?

    是的,在这两种情况下,都可以在不漂移的情况下附加地图——无论您使用的是平面检测还是场景重建。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-29
      • 2011-08-10
      • 1970-01-01
      • 2016-06-02
      • 2019-05-02
      • 1970-01-01
      相关资源
      最近更新 更多