我正在体验ARkit,并且在线观看了一些教程,我知道如何进行图像跟踪和世界跟踪,但是当相机跟踪图像时,我不知道如何将它们组合到同一个应用程序中,设备会自动运行图像跟踪配置,但是当图像不在相机上时,它将运行世界跟踪配置。
我知道我也可以使用世界跟踪来跟踪图像,但是图像跟踪配置似乎具有更稳定的跟踪结果。
有人可以帮忙吗?
答案 0 :(得分:14)
您不需要切换配置。 (可以切换,但您可能不应该。)
您可以在ARKit 2(iOS 12)的世界跟踪配置中使用图像跟踪:
let configuration = ARWorldTrackingConfiguration()
configuration.detectionImages = // your images here
configuration.maximumNumberOfTrackedImages = 1 // or up to 4
// also set other options like plane detection and environment texture if you want
session.run(configuration)
设置maximumNumberOfTrackedImages
会将配置从图像检测(仅在图像首次出现时告诉您)更改为图像跟踪(在图像移动时告知您, 60 fps)。
ARKit 2提供了两种进行图像跟踪的方法,因此您可以选择一种适合您的需求:
ARWorldTrackingConfiguration
具有图片跟踪功能(如上所示)世界跟踪的所有其他功能(平面检测,环境纹理,命中测试,物体检测,世界地图保存/恢复)以及图像跟踪。
Pro:您可以将AR内容与跟踪的图像关联起来,并以其他方式使其与世界互动(例如,即使触发图像从相机移开后,仍然存在于桌子上)
Con:世界跟踪需要一个稳定的,功能丰富的环境,因此在移动参考帧时(如用户在公交车上(运动传感器混乱),在普通或光线不足的环境中)无法很好地工作(没有视觉跟踪的内容),或者背景变化如人群或海浪(视觉跟踪混乱)。
ARImageTrackingConfiguration
仅图像跟踪:当图像在相机上时,您将获得实时更新的锚点。
这与您想要创造的体验有关。如果要使实际的贺卡,海报或广告牌看起来像虚拟内容一样“活跃起来”,并且您不关心该内容与现实世界的交互,请使用ARImageTrackingConfiguration
。如果您要进行以其他方式与世界互动的AR体验,并且想向其中添加基于图像的内容,请使用ARWorldTrackingConfiguration
+ detectionImages
+ maximumNumberOfTrackedImages
。>
可能是个坏主意。
每次使用与会话之前运行的配置类型不同的配置类型来调用run(configuration)
时,都会重置其所有跟踪状态-在切换之前,它不知道其锚点在哪里。