ARKit 在屏幕底部/底部显示地图
Posted
技术标签:
【中文标题】ARKit 在屏幕底部/底部显示地图【英文标题】:ARKit shows a map on floor/bottom of a screen 【发布时间】:2021-12-28 04:59:30 【问题描述】:通过 ARKit,我想将室内地图放在地板上。 目前我尝试了两件事:
-
我已将大型平面放置在摄像机下方和地板上方,但这会导致相当大的漂移。走路时动作不顺畅,整体体验也不是很丰富。
看到了一个可以识别水平面的解决方案,但它有其自身的问题。
那么真的有可能取得好的结果吗?
【问题讨论】:
【参考方案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
真的有可能取得好成绩吗?
是的,在这两种情况下,都可以在不漂移的情况下附加地图——无论您使用的是平面检测还是场景重建。
【讨论】:
以上是关于ARKit 在屏幕底部/底部显示地图的主要内容,如果未能解决你的问题,请参考以下文章