加入收藏 手机版 手机微信 网站地图 +微博关注
  • 首页>
  • VR资讯>
  • 分辨率?视场角?好VR的关键仅在低延迟!
按品牌查找
全部资讯

分辨率?视场角?好VR的关键仅在低延迟!

来源:元宇宙日报
0 0

打开各大VR论坛页面,我们总能看到很多对于现阶段VR设备的批评声音,其中最多的大概就是关于VR画面粗糙、颗粒感严重的问题。诚然,由于还处于较为初级的发展阶段,消费级VR设备存在着各种各样的问题。但是小编不能理解的是有很多人批评VR的分辨率低,却对一个更本质的问题熟视无睹,那就是“运动画面延迟(motion-to-photon latency)”。

小编认为延迟的问题远比VR画面分辨率、视场角之类的要重要的多,因为它与你能否长时间体验,会不会产生“模拟器晕动症(看VR之后头晕眼花)”息息相关。所以在此,小编觉得有必要再一次科普一下这个“运动画面延迟”的概念。


定义


“运动画面延迟”和普通的电脑游戏的延迟从本质上就是两码事,因为虚拟现实在视觉层面上就是一个环绕用户周身的立体画面,但是用户的视觉范围有限,VR设备能显示的画面范围更有限,用户需要通过转头等动作才能够全方位地查看整个VR环境。而“运动画面延迟”指的就是从VR设备开始检测用户头部的动作,到它在显示屏上显示对应画面的时间间隔。如果你向左转头100ms后才看见你左侧的画面,那么这个延迟就是100ms。


重要性


足够低的“运动画面延迟”(<20ms)对于想要“欺骗”你大脑,让它觉得你此刻已经身处另一个世界(存在感,沉浸感)的VR设备来说至关重要。所谓存在感,就是尽管理性告诉你这不过是显示器上的画面,但你的感官却让你不由自主,觉得自己进入了这个虚拟世界,如果虚拟世界有人朝你的脸扔了一块石头,就算你不去躲闪,至少也会眨一下眼。为了获得存在感,最重要的一个要求之一就是超低延迟。


高“运动画面延迟”的结果就是糟糕的VR体验(头晕,恶心),当用户在虚拟现实中移动时,他的大脑本能地期望所看到的画面与他的动作完美契合。当实际画面滞后于用户的动作时,他就会感到迷糊和头晕。这样的体验没有人会喜欢。


而相比之下,分辨率稍低所造成的颗粒感,或者说“纱窗效应”;镜片设计较差导致的画面模糊;视场角较小这些问题则相对没那么重要(当然,只是相对而言)。因为这些情况本来就存在于现实中,但没有人会因此认为这个世界不是真实的。难道你会因为隔着纱窗看外面就觉得世界不是真实的吗?或者说近视眼没戴眼镜就无法生活了吗?还是说游泳的时候戴上了游泳眼镜就认为自己淹不死了?它们让人感觉不适应,而不是不真实。


如何改善?


想要知道如何改善“运动画面延迟”,首先需要了解是什么造成了这个延迟。


分辨率?视场角?好VR的关键仅在低延迟!


想要改善“运动画面延迟”,运动捕捉到画面生成过程中的每一步都需要进行优化。首先要声明的是延迟无法消除,因为有先后顺序,它只能减少到人无法感知的地步。从运动到画面,涉及的部分包括:显示器,数据传输通道,CPU,GPU,游戏引擎,显示器技术(显示器刷新率和像素切换时间)。这不是详细的说明,所以其实还涉及一些其他部分,它包括的只是最重要的部分。下面我就讲解一下减少“运动画面延迟”的常见技术。


显示器技术


像素切换时间


像素切换时间指的是更新显示器上全部像素点所需要的时间。如果我们要在显示器上看到一个图像,就需要对其进行绘制。绘制出一个图像意味着显示器上的像素点必须全部切换到对应的色彩和亮度,下图是一个概念演示:


分辨率?视场角?好VR的关键仅在低延迟!


在这个例子中,这个3*3显示屏的像素切换时间是3ms。因为它完成第一行的三个像素的切换花了1ms,而所有像素的切换则是3ms。


液晶屏(LCD)的像素切换时间较长。现在大部分手机使用的IPS显示屏就是一种LCD,目前大部分高端VR设备使用的OLED屏则具有更高的响应速度。


所以为了减少像素切换时间,使用响应速度更快的显示技术就是很好的选择。也就是说,如果手机VR产品想要减少延迟,首先可以换用OLED显示屏。


刷新率


刷新率指的是显示屏从显卡获取图像信息的频率,它决定着显示屏在两个图像之间等待的时间,以60Hz的显示屏为例,其等待时间就是1000ms/60Hz=16.67ms。这意味着即使我们使用火星科技的显卡无延迟地生成新图像并送往显示器,它也要在16.67ms之后才显示下一张图像。


想要减少这方面的延迟,我们需要提高显示器刷新率,例如120Hz的显示器其延迟就是8.33ms。


主机方面的因素(CPU,GPU和游戏引擎)


这方面对于减少运动画面延迟也具有很高的优化潜力。 CTO约翰卡马克曾写过一篇非常棒的文章解释了如何在这方面做优化,他主要集中在CPU,GPU和画面渲染技术。原文已经找不到了,不过其大体内容我们还是可以了解一下。在我们深入之前,先来了解一些背景资料。

VR游戏的标准处理模型如下:

读取用户输入(I)
开始模拟(S)
发出渲染命令(R)
图形绘制(G)
等待垂直同步(?)
扫描输出(V)

下面有一个渲染管线的例子。CPU1读取用户输入并开始模拟,CPU2发出渲染命令,GPU进行场景绘制并转换绘制命令到显示器,然后扫描输出。


分辨率?视场角?好VR的关键仅在低延迟!


这里面每一帧(连续图像中的单个静止画面)需要耗费16ms。整个渲染过程需要4帧,也就是说这个渲染管线花费了至少48ms~64ms。


记住上面的过程,然后我们来看看约翰卡马克文章中那些重要的技术。


阻止GPU缓冲


通过让GPU在接收到渲染命令之后立即开始绘制,而不是等待整个渲染管线完成,我们可以有效减少延迟。以上面的例子来说,我们使用这个技术可以节省1帧的时间(16ms)(本来要等全部渲染命令发送完成才开始绘制,而现在是边发送边绘制),示意图如下:


分辨率?视场角?好VR的关键仅在低延迟!


你也许会问:为什么GPU可以在CPU还没有发送完渲染命令就开始绘制?


当然,它做不到。所以第一帧无论如何也必须等到第一个命令发送完。但是等到GPU收到第一个渲染命令之后,它就可以立刻开始绘制了。让我们来举一个例子,想象一下一片叶子从树上掉落的场景。

1.CPU计算出包含了树和叶子的场景
2.CPU让GPU绘制1中的场景
3.GPU接受场景1的描述然后开始绘制并发送到显示器
4.在GPU完成步骤3之前,CPU又开始计算下一个场景,也就是叶子是如何从树上掉落的,然后把结果发送给GPU
5.GPU接受4,开始绘制并发送给显示器

也就是说,尽管GPU的绘制工作需要花费较长的时间,但CPU对下一个场景的计算过程是独立于GPU的。这算是对实际无比复杂的过程的一个简化描述吧。这个技术其实有一个缺点,由于GPU不能缓存命令,所以如果负载过重的情况下,它会造成更多的掉帧。


时间扭曲(又名:异步时间扭曲,ATW)


异步时间扭曲可以减少从运动感知到画面生成过程中那些可明显被感觉出来的延迟。它的原理就是在渲染途中暂时忽略完整的CPU和GPU计算过程,直接通过运动检测传感器的数据重计算上一张场景生成下一帧(由于这一帧其实是上一帧扭曲而来的,所以不是很真实)。对于特定的动作,比如用户微微向左转头,场景的变换实际上很小,这时候采用这种方式生成的图像也不会显得很奇怪。其渲染管线示意图如下:


分辨率?视场角?好VR的关键仅在低延迟!


由于减少了好多步骤,所以这一过程非常迅速(不过是对图像进行矩阵变换而已)。只要不是特别夸张的动作,用ATW生成的图像与原本非常复杂渲染管线生成的图像并没有多大区别。


补充:头部追踪


这个技术目前只存在于那些高端VR头显,例如 Vive和Oculus Rift,像Cardboard和Gear VR这种移动设备不具备。头部追踪用来全方位追踪用户头部运动,可以作为另一个用户输入。


头部运动预测


这项技术通过对传感器收集到的用户头部运动数据进行分析,进而预测其下一步动作,提前做出准确的反应。这样也可以减少运动检测到画面生成管线中运动数据输入步骤的时间。如果说一开始我们需要80ms~90ms完成这一过程,使用运动预测之后只要50ms。但是,如果预测失败,它反而会增加延迟并产生错误的画面,造成用户的眩晕感。


结论


我希望在看完这篇文章之后,你能够对运动画面延迟有一个全面准确的认识,并明白其重要性。你同时也了解了到底是哪些因素造成了延迟以及一些缩小延迟的基本技术。运动画面延迟对于VR体验的质量可谓是关键因素,这也是我们在获得VR体验中获得真正的存在感之前必须要解决的问题。




版权声明:元宇宙日报所有原创文章独家稿件
未经授权,禁止转载,违者必将追究法律责任。

相关文章

推荐阅读