1

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

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

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

请就此事提出建议或分享任何 Unity/Apple 文档。

谢谢。

4

1 回答 1

3

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

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

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

跟踪场景时,请勿使用具有纯色的重复纹理/对象图案和表面。此外,为了获得最佳跟踪结果,即使是轻微移动的对象也不要跟踪。您只需要静态环境。

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


附言

关于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])

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

ARImageTrackingConfiguration()

借助ARImageTrackingConfiguration,ARKit 建立 3D 空间不是通过跟踪设备相对于世界的运动,而是仅通过检测和跟踪已知 2D 图像在相机视野中的运动。Image-only tracking仅当这些图像在相机视野中时,您才可以将虚拟内容锚定到已知图像。World tracking with image detection让您可以使用已知图像将虚拟内容添加到 3D 世界,并继续跟踪该内容在世界空间中的位置,即使图像不再可见。World tracking在稳定、不动的环境中效果最佳。在更多情况下,您可以使用仅图像跟踪向已知图像添加虚拟内容——例如,移动的地铁车厢内的广告。

结论ARImageAnchors在您的场景中使用不会为世界跟踪结果增加额外的质量层。查看AR 体验文章中的识别图像以获取详细信息。

于 2018-10-19T21:27:25.363 回答