MegaTracker 的概念与工作流
这篇文档将介绍 MegaTracker 的基本概念及 MegaTracker 与微信原生的 AR 系统 VisionKit 和渲染框架 xr-frame 的关系。
开始之前
通过 Mega 简介 了解:
- Mega 定位与跟踪的基本原理。
- 什么是 Mega Block。
- 集成 Mega 后的预期结果。
平面 AR 追踪器 是什么
xr-frame 的平面AR追踪器 本质上是 VisionKit 6DoF-平面能力的封装。
在 xr-frame 的摄像机组件开启 isARCamera 后,摄像机的三维变换每帧都会与 AR 系统 (VisionKit) 同步。
由 xr-frame 提供 3D 渲染能力,由 VisionKit 提供在现实空间坐标系下的运动跟踪能力。
平面 AR 跟踪器不能和其他 AR 跟踪器一起使用。
MegaTracker 是什么
MegaTracker 是连接微信 AR 系统 (VisionKit) 与 Mega 空间计算服务的核心算法组件,由它提供云定位功能。
输入:每一帧 VisionKit 计算出的在 VisionKit 坐标系下的相机位姿(即 6DoF 数据) 及 进行 Mega 定位那一帧时的相机图片。
输出:当前定位和跟踪的 Mega Block 下的相机位姿 。
MegaTracker 是如何在 xr-frame 上工作的
flowchart BT
subgraph Using xr-frame Only
direction BT
PlaneARTracker_1[PlaneARTracker] -->|MotionData & Image| XRFrame_1[xr-frame]
end
subgraph Using Mega Plugin
direction BT
PlaneARTracker_2[PlaneARTracker] -->|MotionData & Image| MegaTracker
MegaTracker -->|CameraTransform| XRFrame_2[xr-frame]
end
- 在微信原生提供的数据流中 xr-frame 的摄像机组件每帧由平面 AR 追踪器的结果直接更新。
- 在 Mega 小程序提供的数据流中 在 VisionKit 坐标系下的相机位姿(即 6DoF 数据)及定位帧的图片数据会输入给 MegaTracker,在云定位和本地计算之后输出当前定位和跟踪的 Mega Block 下的相机位姿 ,最终更新 xr-frame 场景中摄像机在 Mega Block 节点下的 LocalTransform,此时 MegaTracker 接管了摄像机的控制权, xr-frame 不再根据 AR 追踪器更新摄像机。
MegaTracker 的运行深度依赖于平面追踪器提供的 6DoF 运动数据。 因此,在平面追踪器完成初始化并建立稳定的追踪状态前,MegaTracker 无法介入工作。此外,AR 追踪的稳定性受限于环境特征;在遇到大面积无纹理区域(如白墙)、相机长时间遮挡等极端场景时,若微信底层平面追踪发生漂移或丢失,MegaTracker 将因失去可靠的输入源而同步进入失效状态。