VR 永不成功?美军专家可能言之过早
这几天被一篇名为《美军专家表示 VR 可能永远不会成功》的文章刷屏了,好多朋友过来问我 VR 是不是伪需求,VR 行业能走多远。我想基于我在 VR 行业的积累,分享些关于 VR 的事实。
先说下我自己的背景,我 2014 年 7 月加入 Oculus,当时 Oculus 刚以 23 亿美金的价格被 Facebook 收购。我有幸参与了不少早期 VR 软件的开发(Oculus Store, Oculus Video, Oculus Social),也目睹 Rift/Gear 从粗糙的开发者版本逐渐迭代为成熟的消费者版本。与此同时,整个 VR 产业在 Oculus 和其他厂商的推动下逐渐冒头。在 Oculus,我有幸和 3D 引擎之父、天才程序员 John Carmack 一起工作。(关于 John Carmack 的故事,一天一夜都讲不完,有兴趣的朋友可以翻阅《Masters of Doom》)
Carmack 获得 BAFTA 颁奖。45 岁的 Carmack,依然保持着惊人的编程效率。
不能被解决的眩晕?
回到美军专家 Steve Blake 的那篇文章,他的核心观点是说佩戴 VR 设备时的恶心眩晕问题(英文有很多种说法,包括 nausea, motion sickness, simulator sickness 等,以下简称 「眩晕」)无法解决。
首先,我们来看看到底是什么原因导致了眩晕?
Oculus 的开发者博客上其实已经有一篇文章系统性地论述了这一问题(VR Sickness, The Rift, and How Game Developers Can Help)。这篇文章写于 2013 年,作者是 Tom Forsyth, 一位深耕游戏业 20 多年的老兵,曾在 Valve, Intel, RAD Game Tools 工作过。他描述了导致眩晕的一些原因。
其中,4 个导致眩晕的问题已经可以解决:
错误的畸变校正(Distortion Correction): 为了增强用户的沉浸感,VR 设备会采用一组放大镜片来扩大用户的 FOV(Field of View,视角),原理和广角镜头是一样的。但是,视角扩大的同时,图像也会发生畸变。传统的思路是从镜片着手,采用昂贵的非球面镜片来尽量减小图像的畸变。而 Carmack 则逆势思维,在图像渲染时直接进行逆向畸变,然后通过透镜来抵消这一畸变。这样做的好处是显而易见的,它减去了采用非球面镜片所带来的额外成本。而这样做的挑战在于--需要精确地计算逆向畸变的参数值。如果数值不准确,用户通过透镜看到的图像依旧会带有畸变,从而产生眩晕。
幸运的是,主流厂商(Oculus, HTC, Google Cardboard, PSVR)都在它们提供的 SDK(Software Development Kit, 开发者工具包)里帮开发者解决了这一底层技术难题。
经过逆向畸变渲染后的图像。
错误的瞳孔距参数(IPD, Interpupillary Distance): 在模拟 3D 成像时,渲染在屏幕上的图像会分为左右两屏,分别模拟人的左右两眼所看到的图像。这两个图像基本相似,除了些微的差异(这点大家在上面的图片中也可以看到)。差异的大小取决于人的瞳孔距,而不同人的瞳孔距是不同的。所以,在进行图像渲染时,就需要考虑用户的实际瞳孔距。如果瞳孔距参数设置的不合适,用户就无法聚焦,从而产生眩晕感。
在之前的 DK2 开发者版本中,Oculus 提供了参数设置工具来让用户提前设置自己的瞳孔距参数。而在最新的 Rift 消费者版本中,Oculus 更进一步,直接提供了一个硬件开关来动态调节瞳孔距参数。
高延迟(Latency): 美军专家 Steve 也在文章中提到了延迟问题。这里的延迟,指的是用户产生输入(如头部转动)到用户看到图像变化之间的时间差,如果延迟足够大,就会在用户所感知的行动和实际所见之间产生错位,造成眩晕。Oculus 首席科学家 Michael Abrash 有一篇文章专门讨论这个问题 (Latency – the sine qua non of AR and VR)。这篇文章写于 2012 年底,对导致延迟的原因做了精确的阐述。以头部转动为例,从用户转动头部到实际看到眼前图像变化,需要经历 3 个环节:传感器检测到头部转动角的变化 ->CPU 计算出新的需要渲染的图像 -> 屏幕更新图像。每个环节都会产生延迟,当总延迟高于 15ms 时,就会产生较为明显的眩晕。文章还指出了相应的解决方案--使用高刷新率的传感器和 OLED 屏幕。
做为 Michael 20 年的老朋友,Carmack 通过工程努力以及推动 Oculus 与三星之间的合作,完美实现了这一方案。另外,Carmack 还在第 2 个环节做了进一步的优化,引入 ATW(Asynchronous Timewarp), 把延迟控制在了 15ms 以内。这里面的精彩故事可以从 Carmack 在 Oculus Connect 上的演讲中找到。
不符合 VR 的产品设计准则:VR 应用的开发和传统 3D 游戏的开发有不少相似性,但因为 VR 提供了全新的交互方式,二者又有很多不同。
Valve 的 Joe Ludwig 专门写过一篇文章来阐述 VR 应用开发和传统 3D 游戏开发的不同以及注意点(Lessons learned porting Team Fortress 2 to Virtual Reality)。
不过,正如美军专家 Steve 所描述的,两个原因导致的眩晕暂时还未被很好地解决:
缺乏深度信息:正常人眼在观看物体的时候,是有焦距的,不同焦距对应不同的视角,在视角内的图像,会很清晰,而在视角外的,就会比较模糊。玩过单反的朋友应该对此有比较深刻的体会。
但是,目前的 VR 设备在进行图像渲染时,并没有考虑焦距,都是默认焦距为无限远(既所有的物体都能清晰看到)。这个问题其实并不是非常严重,但是有少部分人会因为这一原因而导致眼疲劳,造成眩晕。
C 为真实人眼成像;D 为 VR 设备模拟成像。
运动信息感知的错位:这里导致眩晕的原因其实和之前所述的延迟类似,即用户所感知的行动和实际所见产生了错位,更深层次的原因是视觉神经和前庭刺激(vestibular stimuli)之间无法达成一致。
比如说,用户在 VR 世界里玩跑酷游戏,但是在现实世界中却静坐着。其实,现实生活中的一些眩晕,也是由这个原因导致的,比如说晕车晕船。
Tom Forsyth 的这篇文章写于 2013 年 6 月。2016 年的当下,我们再回过头去看, 上面所说的两个无法解决的问题,都已经得到一定程度的解决。最新的 AR 设备,已经可以展示深度信息(参考硅谷小伙伴 Amber 的文章 《Magic Leap 和微软的 Hololens 相比有哪些异同点?》,他详细描述了 Lightfield Display 技术);而最新的 VR 设备,已经实现了位置追踪(positional tracking),意味着用户在真实世界中的移动可以一对一的映射到虚拟世界中。而诸如 Virtuix Omni 这样的硬件,也在尝试解决如何在虚拟世界里自由奔跑的问题。
传说中的 Virtuix Omni。
另外,在产品设计层面,开发者们也有很多创新。Steve 所说的第一人称模拟飞行是 VR 里最容易导致眩晕的一类应用(视觉神经和前庭刺激有非常强烈的不一致),但是用户又偏偏非常喜欢这种类型的应用。于是,机智的开发者们通过各种产品设计层面的创新,来满足用户的需求。无论是 GearVR 上的 Smash Hit, 还是即将上线 Oculus Rift 的 Eagle Flight, 都是其中的典范。
好了,讲到这里,相信大家对于美军专家 Steve 的观点,已经有了更全面的认识。Steve 的观点,在 2016 年的今天,是很难站住脚的。
Myth or Truth ?
美军专家说得都对么?
另外,Steve 文中的一些论断也有明显的漏洞。
Myth 1