应该使用哪种方法才能在ARKit上实现最准确的世界追踪体验?

Which method should be used to achieve the most accurate world tracking experience on ARKit?

我的公司正在使用 ARKit 为客户开发增强现实应用,他们希望在 iOS 上获得最佳的世界追踪体验。我们告诉他们这不是一门精确的科学,微小的变化是完全正常的,但他们希望我们尽一切可能减少全息图的错误、漂移和移动。

我们已经在 Unity 上测试了一些 ARHitTestResult 示例和一些使用 ARImageAnchor 的其他示例,但我们无法决定哪个是最好的。似乎使用 ARImageAnchor 可以改善跟踪,但我不确定是否真的如此,或者这是否只是一种错觉。

什么是最好的 – ARImageAnchor 与普通 ARAnchor

请告知或分享有关此事的任何 Unity/Apple 文档。

谢谢。

ARKit 中的任何锚点(ARFaceAnchorARImageAnchorARPlaneAnchor 等)都继承自 ARAnchor class,在某些情况下,还继承自 ARTrackable协议。

ARKit 中的每个锚点都有其特殊用途(例如,ARPlaneAnchor 是指定用于平面检测过程的特殊版本的 ARAnchor)。我不认为一个锚点比另一个更精确。

因此,要获得可靠的跟踪结果,您只需要良好的光照条件可区分的 3D 表面它们上面的高对比度纹理。另外 预存 ARWorldMap 是持久 AR 体验的好点。

在跟踪场景时,不要使用重复的texture/objects 图案具有纯色的表面。此外,为了获得最佳跟踪效果,即使是轻微移动的物体也不要跟踪。您只需要静态环境。

而且我应该说,所有 Apple 设备都经过良好校准,可提供稳定且精确的 AR 体验。


P.S.

关于 ARWorldTrackingConfiguration()ARImageTrackingConfiguration().

的一些小技巧

如果您在 6 DOF ARWorldTrackingConfiguration() 中启用图像识别选项,您将获得 ARImageAnchor 个对象(对于每个检测到的图像),这只是关于在世界中检测到的图像的位置和方向的信息- 跟踪 AR 会话。这不会提高世界跟踪的精度,但会显着降低处理速度。

guard let refImgs = ARReferenceImage.referenceImages(inGroupNamed: "ARGroup", 
                                                          bun dle: nil) else {
    fatalError("Missing expected resources.")
}

let configuration = ARWorldTrackingConfiguration()
configuration.detectionImages = refImgs
configuration.maximumNumberOfTrackedImages = 3
session.run(configuration, options: [.resetTracking, 
                                     .removeExistingAnchors])

启用图像跟踪的world-tracking session只能同时跟踪少量图像。您可以使用 ARImageTrackingConfiguration 跟踪更多图像。但是随着检测图像数量的增加,图像检测的准确性和性能会大大降低。为获得最佳效果,请在集合中使用不超过 20-25 张图像。

ARImageTrackingConfiguration():

With ARImageTrackingConfiguration, ARKit establishes a 3D space not by tracking the motion of the device relative to the world, but solely by detecting and tracking the motion of known 2D images in view of the camera. Image-only tracking lets you anchor virtual content to known images only when those images are in view of the camera. World tracking with image detection lets you use known images to add virtual content to the 3D world, and continues to track the position of that content in world space even after the image is no longer in view. World tracking works best in a stable, nonmoving environment. You can use image-only tracking to add virtual content to known images in more situations — for example, an advertisement inside a moving subway car.

结论:在您的场景中使用 ARImageAnchors 不会为 World Tracking Results 添加额外的质量层。查看 Recognizing Images in an AR Experience 文章了解详细信息。