我的公司正在为一个使用ARKit的客户开发一个增强现实应用程序,他们希望在iOS上获得最好的世界跟踪体验。我们告诉他们,这不是一门精确的科学,微小的变化是完全正常的,但是他们希望我们做任何可能的事情来减少来自全息图的错误、漂移和运动。
我们已经在联合上测试了一些ARHitTestResult
示例,也测试了一些使用ARImageAnchor
的示例,但我们无法确定哪一个是最好的。使用ARImageAnchor
似乎改善了跟踪,但我不确定是否真的是这样,或者这是否只是一种视觉错觉。
什么是最好的- ARImageAnchor
对普通ARAnchor
?
请告知或分享任何有关这件事的联合/苹果文件。
谢谢。
发布于 2018-10-19 13:27:25
ARKit中的任何锚点(ARFaceAnchor
、ARImageAnchor
、ARPlaneAnchor
等)都是从ARAnchor
类继承的,在某些情况下是从ARTrackable
协议继承的。
ARKit中的每个锚都有其特殊的用途(例如,ARPlaneAnchor
是指定用于飞机检测过程的ARAnchor的一个特殊版本)。我不认为一个锚比另一个锚更精确。
因此,你需要得到一个稳健的跟踪结果是一个良好的照明条件,可区分的三维表面和高对比度纹理在他们的。此外,预保存的ARWorldMap
是持久AR体验的一个好点。
在跟踪你的场景时,不要使用重复纹理/物体图案,和表面带有实色。而且,为了获得最佳的跟踪结果,即使是轻微的移动对象也不会跟踪。您只需要静态环境。
我应该说,所有的苹果设备都是良好的校准,为站得住脚和精确的AR经验。
P.S.
关于ARWorldTrackingConfiguration()和ARImageTrackingConfiguration().的一些提示
如果您启用6自由度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(): 利用
ARImageTrackingConfiguration
,ARKit不是通过跟踪设备相对于世界的运动来建立三维空间,而是仅通过在摄像机面前检测和跟踪已知2D图像的运动来建立三维空间。Image-only tracking
允许您将虚拟内容定位到已知的图像中,只有当这些图像在摄像机中时才能定位。World tracking with image detection
允许您使用已知的图像向3D世界添加虚拟内容,并且即使图像不再在视图中,也可以继续跟踪该内容在世界空间中的位置。World tracking
在稳定的、不移动的环境中工作得最好。在更多的情况下,您可以使用只使用图像的跟踪来向已知的图像添加虚拟内容,例如,在移动的地铁车厢内的广告。
结论:在场景中使用ARImageAnchors
并不会为世界跟踪结果增加额外的质量层。有关详细信息,请查看AR经验中的图像识别文章。
https://stackoverflow.com/questions/52898542
复制