如何解决VR延迟问题?不知道“预测追踪”你就OUT了
预测追踪(predictive tracking)指的是预测物体或身体的一部分将要移动的方向或位置。随着AR和VR对呈像要求越来越高,预测追踪将被应用到各大头显设备。
预测追踪的作用
预测追踪的一个常见的用途是减少明显的运动光子延迟(“motion-to-photon” latency),即减少运动发生和显示到显示器上的之间的时间差距,用预测未来方向和位置的方法作为更新显示使用的数据,可以缩短这个延迟。
大量关于预测追踪的注意力都集中在VR应用领域,其实在AR现实领域它也是非常重要的,因为在AR头显设备中既可以看到现实世界中的瞬间运动,又可以看到在现实上叠加的虚拟影像。
例如,如果你正在使用头显设备观看一个现实世界的物理对象,设备需要在对象上显示一个图形覆盖,这种覆盖状态要保持“锁定”十分重要,即使用户旋转头,也能使覆盖的图层看起来像是现实世界的一部分。
该对象可能会被相机识别,但相机进行捕捉、处理器确定的对象所在位置、图形芯片渲染覆盖图层也都需要时间。通过使用预测追踪,可以减少覆盖图层和现实世界的分离。
如何预测追踪路径
如果你看到一辆汽车以恒定的速度行驶,你应该会对这辆车将在未来一秒钟的位移做出准确预测。你知道汽车的当前位置,知道(或者估计)当前的速度,因此你可以推断出这个位置接下来的变化。
当然,你的预测不可能每一次都100%准确,因为汽车可能会在这一秒钟时间内改变方向或加快速度。你想要预测的时间越长,你的预测就越不准确,即预测一秒钟内车在哪里会比预测一分钟内它的位置要准确得多。
你越了解汽车和它的行为,你就有更好的机会做出准确的预测。例如,如果你能测量速度和加速度,你可以做出更准确的预测。
如果有被追踪体的行为的其他信息,也可以提高预测精度。例如,在做头部追踪时,了解人头部的转头速度有多快,以及常见的转头速度,就可以改善追踪模型。同样,如果你正在做眼部追踪,你可以使用眼部追踪信息来预测头部。
延迟的原因
对预测追踪的需求是来源于实际运动与画面显示之间的一些延迟。延迟的原因有很多,主要有以下几个:
●检测延迟。传感器(例如陀螺仪)的带宽有可能是受限的,不会立马反馈方向或位置的变化。同样,摄像头的传感器从接到信息到把信息输送到主处理器中也会有延迟。
●处理延迟。传感数据往往使用了某种算法,而执行该算法也需要一定时间,会造成延时。
●数据信号加工。传感数据有时含有噪音,为了避免这些噪音,需要执行一个以软、硬件为基础的低通算法,需要时间。
●传输延迟。如果方向检测是用USB连接的设备进行的,主机处理器采集到数据同USB传输过去之间也需要一定的时间。
●渲染延迟。如果遇到复杂的嘲,处理器需要一段时间来渲染。
●帧速率延迟。如果显示器的刷新率在100Hz,从一帧到下一帧有10毫秒的时间间隔。如果某一帧的信息不是那么清楚时,可能需要等下一帧。
延迟测试器正在头显设备上进行测试
这些延迟是非常小的,但全加起来就很多了。预测追踪同时间扭曲(time-warping)等技术,都有助于减少明显的延迟。
需要预测多长时间?
答案是三个字:不一定。
你可能会需要预测未来的几个时间点。以下是一些例子:
●有不同的端到端的延迟对象。例如,用摄像机对手部进行失踪同追踪头部可能有不同的延迟,但需要同时呈现在同一画面上,所以需要对未来不同时间点进行预测追踪。
●使用单屏幕(如智能手机屏幕)来为双眼提供图像时,通常有只眼睛的图像相对于另一只眼睛可能会出现半帧(1/60秒的一半或约8毫秒)的延迟。
常见的预测算法
这里是一些预测追踪的算法:
●Dead reckoning:这是一个非常简单的算法,如果在给定的时间已知位置和速度(或角位置和角速度),可以预测未来的位置,但有一些前提,即给定时间的最后时间的位置和速度是正确的,且速度保持不变。
例如,如果最后一个已知的位置是100个单位,最后一个已知速度是10单位/秒,那么未来10毫秒的位置是100 + 10 ×0.01 = 100.1。虽然这看起来算法简单,但需要最后的位置和速度是准确的(不受任何测量噪声)和速度是恒定的,这很难达到。
●Kalman predictor:这是基于一个卡尔曼滤波器的预测,用来用于削弱传感器噪音。这个系统可用包含正交状态变量的微分方程模型来描述,这种滤波器是将过去的测量估计误差合并到新的测量误差中来估计将来的误差。
●Alpha-beta-gamma:ABG预测与Kalman predictor预测密切相关,但又有不同。ABG会不断地估计速度和加速度,并将其用于预测,因为估算值会参考实际数据,所以它们会减少测量噪声。配置参数(alpha,beta和gamma)更加强调反应的能力,而不是降噪。
预测追踪是减少明显延迟的一种有用且常用的技术,要在今天的VR和AR系统实现低延迟追踪,使用预测追踪是必不可少的。