在更新时询问 PoseProvider 的姿势与响应 OnTangoPoseAvailable

Asking PoseProvider for pose on Update vs responding to OnTangoPoseAvailable

在 Tango 项目的 Unity 演示包中挖掘 TangoARPoseController.cs,我注意到虽然其他演示姿势控制器都使用 OnTangoPoseAvailable 处理程序进行姿势更新,但 AR 示例使用PoseProvider.GetPoseAtTime 直接从 Update 函数获取姿势数据的方法。

为什么?

实现真实 AR 视图的一个关键点是对齐姿势和彩色图像之间的时间戳。原因是系统运行速度非常快,如果我们根据最新的姿势渲染一个物体(相机),很可能我们的彩色相机纹理已经过时,并且它已经没有与最新的姿势相关联。

为了简化流程,Tango API 提供了一个非常好的实用函数,允许您根据 Tango 时间戳 PoseProvider.GetPoseAtTime 获得姿势,请注意,Tango 系统中的所有时间戳都被标记为同一个时钟。

TangoARPoseController 中,代码使用彩色相机帧的时间戳来查询与该时间关联的姿势。因此,它保证了物体姿势(相机姿势)和背景颜色相机图像是同步的。