【问题标题】:ARKit – Anchoring without Plane Detection and Hit-TestingARKit – 无平面检测和命中测试的锚定
【发布时间】:2020-06-14 06:37:41
【问题描述】:

这是我之前的一篇文章的后续问题。目前,我将 SCNNode 放置在现实世界中的已知坐标处。我的应用程序要求用户避免使用平面检测或命中测试,而是他们可以将对象放置在已知坐标处并希望它保持锚定在该位置。

目前,锚定的性能不是最理想的,我想找到改进它的方法。如果可能的话,我愿意接受任何建议。

提前致谢!

【问题讨论】:

    标签: swift augmented-reality scenekit arkit realitykit


    【解决方案1】:

    ARKit 4.0 解决方案

    在最新版本的 ARKit 中,有一个名为 ARGeoAnchor 的 GPS 定位锚点(这要归功于 CoreLocation 框架的实现),它使用熟悉的初始化程序:

    @nonobjc convenience init(coordinate: CLLocationCoordinate2D, 
                                altitude: CLLocationDistance?)
    

    ARKit 3.0 解决方案

    当然,您可以在没有plane detectionhit-testing/ray-casting 的情况下将模型放置在 AR 场景中,尽管这可能会导致一些 AR 异常——您的模型可能放置在场景的网格下方,或者模型可能放置在错误的位置会导致不正确的视差。

    您的场景必须始终拥有一件事 - 为您的模型提供。如果没有那个锚,你的模型可能会漂浮在一个场景中,这会导致糟糕的用户体验。在平面检测的情况下,您会自动将ARPlaneAnchor 拴在不可见的平面上。

    因此,让我们看看您必须实施哪些方法才能获得强大的 AR 体验,即使您不使用平面检测和命中测试:

    您可以单独或组合使用这些方法

    但是你必须知道一件不愉快的事情——ARKit/SceneKit 中模型的工作距离可达 1000 米。如果您的模型超出该限制,您将获得flickering artifacts

    【讨论】:

    • 感谢安迪的回复!目前我正在使用重力和航向罗盘对齐,我知道这已经改善了整体结果。如果您不介意,使用 GPS 和 Google 地图所需的必要步骤是什么?它如何改进锚定过程?此外,关于周围物体检测算法,您是否有任何资料可以解释基本方法的过程?抱歉,我以前从未想过使用这些解决方案,所以我对它们知之甚少。提前致谢!
    • @sptrad,我已经更新了我的答案(这些链接非常有用)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 2018-10-06
    • 2019-09-11
    • 1970-01-01
    • 2017-11-09
    相关资源
    最近更新 更多