VR晕眩原因及解决方法

By Long Luo

前言

随着 VR 产业渐渐进入人们的视线,VR热潮正处于爆发前期。纵观国内几家VR领域的尖端企业,中国的VR硬件与国际水准相比并不低。如果以“国际标准”Oculus的VR硬件来说,可以说与其基本持平。对于过国内广大普通产品使用者来说无疑是个好消息,国内的VR团队在保持硬件的技术过关的前提下,性价比颇高。

然而,就算是最尖端的VR产品,目前依旧有致命的“硬伤”:晕眩感太强

很多VR体验者表示,在一段时间使用VR产品后,会出现不适,恶心,甚至呕吐。这成为了VR前进的最大的一个绊脚石,解决晕眩问题成为VR的燃眉之急

因此我们有必要对VR晕眩有一个更深入的了解,那么下面我们将详细讲解VR晕眩及目前市场上解决晕眩的一些技术

一、为什么会产生VR晕眩?

VR眩晕感根本原因是视觉大脑对运动的认知不同步,具体点就是眼睛看到的(VR)画面与从耳朵接收到的(真实位置)信息不匹配,导致脑负担加大,从而产生晕眩感。

VR眩晕有硬件引起的晕眩和软件引起的晕眩。

1. 硬件晕眩

VR硬件带来的晕眩主要是4个地方:GPU、感应器、显示屏、芯片成像透镜,以及瞳距和距离调整结构

解决硬件晕眩也很简单,使用最好的硬件就可以尽可能减少解决硬件层面的晕眩。但是现阶段消费者认为众多VR硬件是不成熟的呢?原因是因为厂商从成本的角度考虑,将VR设备的“性价比”做得更高一些。

如果从硬件层面着手试图消除眩晕的问题,一方面需要硬件市场降低成本,另外一方面还需要产业链的供给。    从设备的角度来说,硬件和软件设计的不合理造成了晕眩,那么解决方案也是从这两方面入手。目前来看,各大厂商都提出了自己的办法。硬件能发挥的作用更大一些,但也绝不能孤立来看。    ## 2. 软件晕眩

软件晕眩的概念就比较大了。

VR晕眩有以下几大原因:

<1>. 游戏内容

很多VR游戏,本身的内容就会产生晕眩。比如说你在坐“VR 过山车”时,视觉上你正处于画面中的状态,在做剧烈的高速运动,但是前庭系统却表示你并没有在运动,这时就会导致头晕。

<2>. 画面与现实世界的差异

VR显示器给出的画面变形严重、视野小,这些都与现实世界有差异,时间长了就会感觉头晕。

<3>. 画面滞后于动作

VR硬件的延迟造成时间上的不同步,当人转动视角或是移动的时候,画面呈现的速度跟不上,在VR这样全视角的屏幕中,这样的延迟是造成晕眩的最大问题,目前降低延迟是当下减弱VR眩晕的主要手段。

在VR这样全视角的屏幕中,这样的延迟是造成晕眩的最大问题。

<4>. 瞳距不一

由于每个人的瞳距不一,对某些人来说,人眼瞳孔中心、透镜中心、画面中心三点并非一线,从而出现重影现象,看久了人也会非常容易头晕。

<5>. 景深不同步

景深不同步,也是眩晕的原因之一。比如说,在你的面前,有一张桌子,在桌子上,近处放了一个杯子,远处放了一个玩偶。你看着近处的杯子,按理来说远处的玩偶应该模糊不清,但是现在,远处的玩偶也看的非常清晰。

总的来说,VR 设备对现实的模拟不够真实,还无法真正地欺骗到大脑,受到困扰的大脑不堪重负,才会造成眩晕的问题。

二、如何解决VR晕眩?

上一章我们讲解了导致VR晕眩的原因,那么这一章我们将详细讲解目前解决VR晕眩的技术。

1. 低延迟技术

选购虚拟现实设备,很重要的一个指标是从转动头部到转动画面的延迟

画面延迟在很大程度上又取决于显示屏的刷新率。目前世界上最先进的虚拟现实设备刷新率在75Hz。研究表明,头动和视野的延迟不能超过20ms,不然就会出现眩晕。

20ms的延迟时间对于VR头显而言是一个非常大的挑战。首先设备需要足够精确的办法来测定头部转动的速度、角度和距离,这可以使用惯性陀螺仪(反应灵敏但是精度差)或者光学方法来实现。然后计算机需要及时渲染出画面,显示器也需要及时地显示出画面,这一切都需要在20ms以内完成。相应的,如果每一帧显示的时间距离上一帧超过20ms,那么人眼同样也会感到延迟。所以,VR头显的画面刷新率应该超过50FPS,目前来说60FPS是一个基准。但是要想做到更好的效果,这个刷新率还应该接着往上提,比如目前Oculus Rift CV1和 HTC Vive采用了90hz刷新率,而Sony Project Morpheus采用的是120hz刷新率。

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展望未来可以将延迟降得更低也不是吹嘘的。从上面的算式可以看出,主要瓶颈在13.3ms这个延迟过程上。通过一些特殊的方法可以减少一半,甚至更少。但这需要硬件厂家、操作系统、游戏开发者共同的努力。

目前看来,VR硬件改善延迟是改善眩晕最好的解决方法,所有需要的时间不断压缩能够来降低画面的延迟,从硬件上先解决造成晕眩的问题。其次就像之前的3D眩晕一样,使用者通过一段时间的适应,才能使VR成为真正意义上的虚拟现实产物。

2. 添加虚拟参考物

普杜大学计算机图形技术学院的研究人员去年就发现,只要在 VR 场景中加一个虚拟的鼻子,就能解决头晕等问题。研究人员在各种虚拟场景中对 41 名参与者进行了测试,一部分人会有虚拟鼻子,一部分没有。结果发现,有鼻子的人都能保持更长时间的清醒。

研究人员称,之所以能产生治晕的效果,可能是因为人需要一个固定的视觉参照物,所以就算在 VR 中加入一个汽车仪表盘,也能产生相同的效果。

那么问题来了,加个鼻子,是不是会影响对虚拟世界的体验呢?别担心,因为在测试中,参与者竟然都没发现有个鼻子在那!他们在玩游戏的时候太沉迷了,以至于完事后,人家跟他们说有个鼻子,他们还不信!其实在现实生活中,如果我们留意一下也能看到自己的鼻子,只是已经习惯了就没发现。但我们感官系统能意识到鼻子的存在,毕竟身体还是很老实的。 研究人员还将他们的发现告诉了Oculus VR的首席技术官John Carmack,他说从没听过这种神奇的事,要好好研究下。

3. 电前庭刺激

目前国外正有一家名叫vMocion 的公司,打算利用梅奥医学中心的航空航天医学和前庭研究实验室花费 10 多年研究的技术去解决这个问题。这项技术名为电前庭刺激(GVS),将电极放在策略性位置(每只耳朵后要放置两个电极,一个在前部,一个在颈背),追踪用户内耳的感知运动,并将视野范围的运动触发成GVS同步指令,刺激产生三维运动。如果行得通的话,它可以让用户完全沉浸在当前的环境中,真正感觉在自己驾驶的宇宙飞船在俯冲或转弯。

4. 调节镜片之间的距离

在最原始的“手机盒子”中大家其实并没有考虑到这一点,大家考虑更多的只是怎样适配不同近视的用户(有些盒子连这都没考虑),记得应该是三星首先利用了滑轮调节镜片之间距离的设计,可以自由调节两个镜片之间的距离。另外,也有方案显示可以通过蓝牙控制器等调节画面的中心点。从而保证画面中心、镜片中心、人眼中心三点一线。避免重影,避免晕眩。

5. 光场摄影

一个光场快照可以在图片获取后给照片进行聚焦、曝光、甚至调整景深。 它不仅仅记录落在每个感光单元所有光线的总和, 光场相机还旨在测定每个进入的光线强度和方向。有了这些信息, 您就可以生成不只是一个, 而是每一个在那一刻进入相机视野的可能的图象。例如,摄影师常常会调整相机的镜头,以便对面部进行聚焦,刻意模糊背景。也有人想要得到模糊的面部,背景要十分清晰。有了光场摄影,同一张照片,你可以获得任何效果。

目前在这方面做得最好的Magic Leap。Magic Leap做的不是在显示屏上显示画面,而是直接把整个数字光场投射到使用者的视网膜上,从而可以让使用者可以根据人眼的聚焦习惯自由地选择聚焦的位置,以准确的虚实结合模拟人眼的视觉效果。根本不用提及刷新率和分辨率等问题,Magic Leap从另一个方向,用另一种方法一下解决了所有问题。

三、主流厂商的动作

从Oculus、HTC等主流厂商的动作来看,无论从硬件入手还是软件入手,亦或是软硬结合,都主要为了解决这5个问题:    1. 提高刷新帧率 2. 提高分辨率 3. 减少画面变形 4. 优化头部运动追踪 5. 优化内容

软件方面,需要改进图像算法。

我们看看目前的主流厂商都是怎么做的,这包括了VR头显厂商以及上下游产业链厂商:    Oculus采用了非球面镜减少图像变形, 第一代产品分辨率为720p, 第二代升级为1080p, 非球面镜的采用使得视频画面的适配和视觉误差的消除有不小的难度,这让同类厂商很难模仿。

他们还通过一系列动作消减延迟,尽量压缩从用户输入到新图像完成的整个流程,已经可控制在每秒30帧以内。同时,还运用了一些软件算法来修正畸变。目前,Oculus的研究重点已经从消减延迟转移到了追踪精确度、图像质量、分辨率上。今年3月,Oculus将陆续发售,届时我们将一睹其在消除晕眩方面的最新成果。   HTC vive通过提高图像刷新率减少图像的延迟,刷新率为每秒90帧(但还是不如Oculus)。同时还通过更复杂的传感器设计来实现更精准的头部运动追踪。

英伟达作为芯片制造商,也急VR厂商之所急,和iOS动作游戏《无尽之刃(Infinity Blade)》系列开发商Epic Games共同开发出了”GameWorks VR”技术。GameWorks VR技术通过”多重解析描写(Multi-Resolution Shading,简称为MRS)“的方式,使玩家看到的游戏画面以中心区域更高分辨率,周围区域分辨率偏低的形式显示出来。这个技术会使游戏画面的刷新率得到大幅度提升,提升约50%。

总结

晕眩问题是阻碍VR爆发最重要的原因,相信时间将是解决一切问题的万能钥匙,期待在不远的将来,我们能够体验到不晕的虚拟现实。上天、入地、下海,躺在家里,真实经历一切的美好,真好。