EasyAR 运动融合¶
运动跟踪¶
在了解运动融合之前,请阅读 运动跟踪与EasyAR功能 来了解EasyAR功能与运动跟踪的关系。
什么是 EasyAR 运动融合¶
EasyAR 运动融合是在存在运动跟踪设备时优化图像和物体跟踪的一种技术。
如果一个设备(手机、眼镜或头显)通过硬件或软件方案可以具有VIO能力,我们称其为运动跟踪设备。这些设备包括但不限于可以运行 EasyAR 运动跟踪 、 ARCore、ARKit、华为 AR Engine的设备,或具有VIO能力的眼镜比如Pico 4E。
EasyAR 运动跟踪可以让图像和物体跟踪摆脱抖动困扰,跟踪稳定,并且可以在离开相机视野之后继续跟踪。
如何使用 EasyAR 运动融合¶
有无运动融合的场景差异存在于 EasyAR AR Session 以及target上。如 从零创建可运行的工程 中所描述,你永远有两种方法来创建 AR Session。
使用预设创建 AR Session¶
可以使用 Image Tracking
和 Object Tracking
中名字含有 Motion Fusion
的预设来创建运动融合的AR Session,
逐节点创建 AR Session¶
你也可以逐节点创建运动融合的 AR Session。
首先使用 EasyAR Sense > AR Session (Preset) > AR Session (Empty)
创建一个空的 ARSession ,
然后在session中添加 FrameSource 。为了使用运动融合,你需要一个表示运动跟踪设备的 FrameSource ,这通常在不同设备上会运行不同的 frame source。这里我们选中 AR Session (EasyAR)
,通过使用 EasyAR Sense > Motion Tracking > Frame Source : *
来创建一组 frame source ,session使用的 frame source 会在运行时选择。你可以根据具体需求添加不同的 frame source 到session中。
在添加 frame source 之后,你需要添加 session 需要使用的 frame filter。可以选中 AR Session (EasyAR)
,使用 EasyAR Sense > Image Tracking > Frame Filter : Image Tracker
在session中添加一个 ImageTrackerFrameFilter 。
有时你需要在设备上录制 input frame 然后在PC上回放,以便在 Unity 编辑器中诊断问题,这时你可以选中 AR Session (EasyAR)
,然后在session中添加 FramePlayer 和 FrameRecorder 。(当然,如果要使用这些功能的话,你需要根据情况修改 FrameSource.FramePlayer 和 FrameSource.FrameRecorder 。)
然后在创建出来的 ImageTrackerFrameFilter 上打开运动跟踪。
如果你需要在没有运动跟踪能力的设备上跟踪可以退变为普通的跟踪,只需要使用 EasyAR Sense > Image Tracking > Frame Source : Camera Device (Object Sensing)
简单地在frame source组的最后添加一个新的 CameraDeviceFrameSource 即可。
Target 限制¶
使用运动融合的target有两个需要注意的地方,
Target的缩放比例 ( ImageTarget.scale 和 ObjectTarget.scale ,或 TargetController 的输入 ImageTargetController.ImageFileSourceData.Scale 和 ObjectTargetController.ObjFileSourceData.Scale )必须与真实世界中的物体一致。
目标图像或物体在真实世界中不能移动。
可以参考 ImageTracking_MotionFusion 样例来了解更多详情。