【发布时间】:2020-06-14 06:37:41
【问题描述】:
这是我之前的一篇文章的后续问题。目前,我将 SCNNode 放置在现实世界中的已知坐标处。我的应用程序要求用户避免使用平面检测或命中测试,而是他们可以将对象放置在已知坐标处并希望它保持锚定在该位置。
目前,锚定的性能不是最理想的,我想找到改进它的方法。如果可能的话,我愿意接受任何建议。
提前致谢!
【问题讨论】:
标签: swift augmented-reality scenekit arkit realitykit
这是我之前的一篇文章的后续问题。目前,我将 SCNNode 放置在现实世界中的已知坐标处。我的应用程序要求用户避免使用平面检测或命中测试,而是他们可以将对象放置在已知坐标处并希望它保持锚定在该位置。
目前,锚定的性能不是最理想的,我想找到改进它的方法。如果可能的话,我愿意接受任何建议。
提前致谢!
【问题讨论】:
标签: swift augmented-reality scenekit arkit realitykit
在最新版本的 ARKit 中,有一个名为 ARGeoAnchor 的 GPS 定位锚点(这要归功于 CoreLocation 框架的实现),它使用熟悉的初始化程序:
@nonobjc convenience init(coordinate: CLLocationCoordinate2D,
altitude: CLLocationDistance?)
当然,您可以在没有plane detection 和hit-testing/ray-casting 的情况下将模型放置在 AR 场景中,尽管这可能会导致一些 AR 异常——您的模型可能放置在场景的网格下方,或者模型可能放置在错误的位置会导致不正确的视差。
您的场景必须始终拥有一件事 - 为您的模型提供锚。如果没有那个锚,你的模型可能会漂浮在一个场景中,这会导致糟糕的用户体验。在平面检测的情况下,您会自动将ARPlaneAnchor 拴在不可见的平面上。
因此,让我们看看您必须实施哪些方法才能获得强大的 AR 体验,即使您不使用平面检测和命中测试:
您可以单独或组合使用这些方法。
但是你必须知道一件不愉快的事情——ARKit/SceneKit 中模型的工作距离可达 1000 米。如果您的模型超出该限制,您将获得flickering artifacts。
【讨论】: