2015-07-14 amdin
随着VR产业渐渐进入人们的视线,VR热潮正处于爆发前期。纵观国内几家VR领域的尖端企业,中国的VR硬件与国际水准相比并不低。如果以“国际标准”Oculus的VR硬件来说,可以说与其基本持平。对于过国内广大普通产品使用者来说无疑是个好消息,国内的VR团队在保持硬件的技术过关的前提下,性价比颇高。
然而,就算是比较尖端的VR产品,目前依旧有致命的“硬伤”:晕眩感太强。很多VR体验者表示,在一段时间使用VR产品后,会出现不适,恶心,甚至呕吐。这成为了VR发展比较大的一个绊脚石,解决晕眩问题成为VR的燃眉之急。
一、为什么会产生VR晕眩?
VR晕眩原理其实非常简单,因为眼睛看到的(VR)画面与从耳朵接收到的(真实位置)信息不匹配,导致脑负担加大,从而产生晕眩感。
产生这样的问题主要有两个方面:
一方面和3D晕眩症的道理有点类似,3D特效大片之所以会让观众觉得头晕,是因为3D电影除了大量实焦画面外,还有元素丰富的虚焦布景画面。
画面里的元素过于丰富,像远处景深里虚焦树叶就是众多元素里的一部分。但观看3D电影的时候,观众必须舍弃虚焦画面里的这些元素。因为这些元素会让眼球重新聚焦,且屡屡聚焦失败,就容易产生3D晕眩症,这就类似在雪山上的人眼球长期搜查不到视觉焦点而造成的雪盲。
简单来说就是画面太逼真了,让你有身临其境的感觉,身体认为你正在做剧烈的运动,或者处于画面中的状态,但是实际上你是坐在座位上并没有运动。这是一种自我保护的本能,大多数人可以通过锻炼减轻晕眩,但是不可能让人真正去移动一段距离。
另一方面是VR硬件的延迟造成时间上的不同步,当人转动视角或是移动的时候,画面呈现的速度跟不上,在VR这样全视角的屏幕中,这样的延迟是造成晕眩的比较大问题,目前降低延迟是当下减弱VR眩晕的主要手段。
二、延迟——VR领域中降低晕眩的方法
选购虚拟现实设备,很重要的一个指标是从转动头部到转动画面的延迟。
而画面延迟在很大程度上又取决于显示屏的刷新率。目前世界上比较先进的虚拟现实设备刷新率在75Hz,包括鼎鼎有名的Oculus DK2和上海乐相科技的大朋等。
75Hz意味着渲染完成到显示在屏幕上,至少需要1秒除以75次等于每次13.3毫秒,包括安全保险的时间在内,一般是19.3ms的延迟。所以任何声称自己延迟在19.3ms以下的都是虚假宣传。
那么延迟19.3ms是由什么构成的?
(19.3ms延迟的产生过程)
1、首先从头部转动到传感器读到数据大概需要1ms的时间,如果采用世界一流的传感器,那么采样率在1KHz,也就是说每秒钟可以读取到一千个数据,那么每个数据就是1ms,也就得出了这1ms的延迟。
2、然后数据需要经由单片机,传输到电脑。因为它们的接口是不同的,就好像空调的电源插头不能插到小台灯的插座里,需要一些转换工作,单片机就负责了这样的转换。数据从传感器到单片机大概需要1ms。因为前面数据的产生需要1ms,于是如果不在1ms内将这些数据传送到单片机,那么后来的数据就会被丢弃。
3、接下来是单片机经由USB线将数据传输到PC。USB线具有极高的传输速率,但是完全由Host端(也就是PC端)控制传输的。也就是说,如果Host端不接收单片机发来的数据,那么数据就会被丢弃。采用HID方式的情况下,Host端会经常检查是否有数据传输上来,然后将数据存放到内存,所以这个时间在1ms之内。至此,数据已经到达PC的内存了,走完了全部的硬件过程。由于数据带宽、通信协议等限制,会占用3ms~4ms之间的时间,很难再减少了。
4、在硬件上传输完成后,就是软件算法处理的过程了。
由于模拟信号本身的噪声和漂移,转换成数字信号后,数据中存在大量的噪声和漂移。于是需要复杂的数字信号处理方法将这些噪声和漂移过滤掉。这样,传感器传来的9轴数据就成为了渲染游戏所需的头部旋转的四元数旋转数据。处理这个数据一般在1ms以内。渲染时只要将这个旋转的四元数乘以摄像机的坐标,就得出了观察方向,可以用于渲染场景。通过特殊的算法(例如Time-warp,目前比较快的算法),根据先前的数据处理得到的图像,完成真正被显示的画面。幸亏有了Time-warp算法,我们可以基本忽略渲染场景的延迟。
5、当场景渲染完之后还需要做反畸变,反色散等处理。这些处理一般需要消耗GPU 0.5ms的时间。为了安全起见,将这个时间设为3ms,来保证准备传输下一帧到显示器,也就是下一个垂直同步信号来之前,GPU必定能把反畸变、反色散做成。
6、然后就是传输图像到显示器的时间了。如前所述,按照75Hz计算,那么需要13.3ms。到此就结束了吗?不是的,还有显示器将图像显示出来的时间。由于LCD显示器是晶体由电场控制旋转的物理过程,所以传统的LCD显示器需要15~28ms不等的时间来响应。而比较新的OLED技术则将这个时间减少到了微秒级。
好了,让我们将这些时间累加起来,3ms + 3ms + 13.3ms = 19.3ms。当然这是比较理想的情况,还有可能CPU的性能、USB丢包等问题可能导致达不到这样低的延迟。
国内大朋和“国际标准”Oculus的产品都是采用此种算法,比较低延迟是完全一致的,在全世界范围内,19.3ms的延迟是当下比较科学,比较可信的延迟推算时间。
当然Oculus展望未来可以将延迟降得更低也不是吹嘘的。从上面的算式可以看出,主要瓶颈在13.3ms这个延迟过程上。通过一些特殊的方法可以减少一半,甚至更少。但这需要硬件厂家、操作系统、游戏开发者共同的努力。
目前看来,VR硬件改善延迟是改善眩晕比较好的解决方法,所有需要的时间不断压缩能够来降低画面的延迟,从硬件上先解决造成晕眩的问题。其次就像之前的3D眩晕一样,使用者通过一段时间的适应,才能使VR成为真正意义上的虚拟现实产物。