在虚拟现实和增强现实系统环境中,可预测追踪技术能够对某个对象或身体某一部位的下一步方向和(或)位置进行预测处理。给你举个例子,当你的头部朝着某个方向转动时,可以同步来预测你的手可能放置的位置。

为什么可预测追踪技术如此有用?

可预测追踪技术的一个常见应用,就是减少“运动光子”延迟时间,所谓运动的光子延迟是指用户在虚拟现实或增强现实环境下完成一个动作,到该动作被充分反映在显示屏上的时间。由于运动本身就会产生一些延迟,而当运动完成、信息展现在屏幕上时又会出现一段时延(更多引起时延的原因请参见下文),因此当你能够预测下一步方向和位置,然后将相关数据优先更新到屏幕上,就可以大大缩短感知延迟。

虽然在虚拟现实应用中,对于可预测追踪技术的关注比较多,但其实该技术在增强现实领域里也同样非常重要,特别是当用户在真实世界中发生瞬时移动,相应的增强现实叠加也要在显示屏上体现出来。举个例子,如果你带着一个增强现实头盔,看到增强显示的图形叠加在实体对象的顶部,更重要的是,即使你旋转了自己的头库,增强现实环境中的“覆盖物”需要依然“锁定”在原来的那个对象上,而不是随着你的头部转动而转动,它其实展示的是真实世界的一部分。对象或许可以被摄像头识别,但是摄像头可能需要耗费一些时间来捕获帧,以便处理器能够判断出这个对象在帧中的位置,然后图形处理芯片需要再呈现叠加层上的新位置。而通过使用可预测追踪技术,相比于现实世界,在叠加层中运动处理能够有所减少。

可预测追踪技术如何工作?

009ednc20170428

如果你看到一辆汽车正在以恒定的速度行驶,然后你想要预测这辆汽车在下一秒后可能达到的位置似乎是一件非常简单的事情,而且不出意外的话,预测的准确度也会很高——因为你不但知道这辆汽车的准确位置,而且还知道它当前的(或是估算的)行驶速度,所以有了这些条件之后,基本就能推断出这辆汽车未来所处的位置在哪里。

当然,如果你要预测这辆汽车在一秒钟时间内到底能开到哪儿,那么这个预测可能无法做到每次都百分之百准确,因为在这段时间里,汽车可能会改变方向,也有可能会加速。因此对于汽车行驶预测而言,你尝试预测的范围越远,预测的就会更不准确。简单的说,如果让你预测汽车在一秒钟时间之后所在的位置,准确度肯定比让你预测汽车在一分钟时间之后所在的位置要高。

此外,你对汽车本身情况了解的越多,那么预测准确的机会也就越大。比如,你不仅要测量汽车的速度,还要测量它的加速度,继而进行更准确的预测。

所以,假如你能够获得被追踪物体对象更多的行为信息,那么也可以提高预测准确度。在举例说明,当你进行头部追踪时,如果能够了解头部旋转的速度、以及可能旋转的角度,那么就能进一步优化追踪模型,从而做出更准确的判断。同样地,假如你正在进行眼球追踪,那么也可以将获取到的眼球追踪信息用于预测头部运动(这会在本文后详细探讨)。

导致时延的原因

010ednc20170428 VR头盔延迟测试装置

对于可预测追踪技术的渴望,主要来自于虚拟现实和增强现实环境中的时延,通常这个时延是指用户在现实世界中完成了一个动作之后,该动作(或是该动作所产生的效果)要花多长时间才能反映到显示屏上。事实上,导致时延主要有以下几个原因,比如:

感官延迟:传感器(比如陀螺仪)可能受到带宽限制,并且不会立即报告方向和位置变化信息。同样地,基于摄像头的传感器也可能出现延迟,因为摄像头传感器收到来自追踪对象的光线像素,到对应的帧准备好被发送到主机处理器也需要一段时间,因此会造成时延。

处理延迟:传感器数据通常会使用一些传感器融合算法进行整合,而如果执行相关算法,那么在接收数据和到算法输出答案之间也会造成时延。

为确保数据流畅,导致延迟:传感器数据有时会比较杂乱,为了避免出现错误,可能会执行一些软件或基于硬件的低通算法,虽然能够在一定程度上提升数据流畅性,但会因为算法质量较低造成时延。

传输延迟:举个例子,如果使用一个 USB 互联设备来进行方向传感器数据收集,那么在主机处理器收集数据和数据通过 USB 传输数据之间会需要一定时间,造成时延。

渲染延迟:当你要渲染一个复杂场景时,对于处理器来说可能需要花上一段时间来判断(或决定)每一帧里面的每一个像素放在哪个位置,以及这一帧什么时候被发送到显示屏上。

帧速率延迟:举个例子,如果你使用的是 100Hz显示屏,那么就意味着从一帧到下一帧所需要的时间大约为 10 毫秒。当绘制特定像素时,可能无法实时匹配当前信息,因为你需要等该像素被会绘制到显示屏上,才能出现下一个像素。

上面提到的这些造成时延的原因,可能有一些只会导致非常小的时延感受,不过如果几个问题叠加起来,可能就会带来比较不好的用户体验了。事实上,可预测追踪技术(结合诸如时间规整算法等其他技术)对于减少明显时延非常有帮助。

距离预测未来究竟有多远?

实际上,上面这个问题似乎没有标准答案,因为最终还是要看用户的使用体验和感受,每个人的体感也都是不一样的。一开始,你可能会先估计系统端到端的时延,然后根据自己的喜好来优化时间。

此外,在对未来某个给定时间段内进行预测时,你可能需要将这段时间拆分成几个预测时间段,为什么要这么做呢?我们用以下几个例子来做下解释:

不同的对象有不同的端到端延迟。举个例子,基于摄像头的手部追踪和基于摄像头的头部追踪所表现出的时延就不一样,但在某些虚拟现实或增强现实应用场景下,你又需要将手部和头部动作同步起来,所以你需要采用不同的预测追踪时间,使得最终效果更加协调。

在配置用于双眼图像提供的单屏幕(比如智能手机屏幕)时,对于单眼图像显示,也会出现半帧的延迟(比如,六十分之一秒的一半,或是大约 8 毫秒),一只眼睛会“先看到”图像,然后该图像才会反映到另一只眼睛上。所以在这种情况下,最好也能够应用可预测追踪技术,提前 8 毫秒时间进行判断,减少半屏延迟体验。

常见的预测算法

这里再介绍几个可预测追踪算法的例子:

导航推测算法:这其实是一个非常简单的算法,如果在给定时间内位置和速度(或是角位置和角速度)都是已知的,而且在速度保持不变的情况下,速度值也不会有错误,那么就可以计算出对象最后的“落脚点”,继而进行位置预测。举个例子,如果最后一个所知位置是 100 单位,而最后所知的速度是每秒 10 单位,那么在未来 10 毫秒这段时间里,该对象的位置点就是 100+10*0.01=100.1。当然,这是一个非常简单的计算,因为它有一个假设前提,那就是位置和速度都是正确的(而且在主观上也不会受到其他测量问题的影响),同时速度也都是保持恒定。但事实上,所有这些假设在现实中几乎都很难实现。

卡尔曼预测器:它是基于著名的卡尔曼滤波器,用于在已有系统运行的数学模型中减少系统传感器噪音的。如果你需要了解更多和卡尔曼滤波器有关的信息,请参见这里。

Alpha-beta-gamma:ABG 预测器和上文提到的卡尔曼预测器相关度很高,虽然数学应用更简单,但是它的通用性却比较一般。ABG 预测器会尝试不断估算速度和加速度,然后将这些数据应用于预测。由于估值考虑到了实际数据,所以他们减少一部分估值误差。配置 alpha、beta 和 gamma 参数也增强了响应能力。

可预测追踪技术是一种非常有用的虚拟现实/增强现实技术,而且也常用语减少表现时延问题。该技术执行起来虽然简单,但是对专业水平要求较高,所以需要你多做一些思考和分析,因为就目前的虚拟现实和增强现实系统来说,减少时延是至关重要的。

(原文发表于Road to VR,雷锋网编译)

20160630000123