VR硬件演进与其游戏开发中的若干注意事项

最近两年虚拟现实(Virtual Reality,简称VR)从刚刚走进公众视野到逐渐变得炙手可热,很多不同领域的IT开发者都想进入虚拟现实领域。本篇文章将首先讲解VR入门所需要学习的知识,然后从VR软硬件入手,针对当前的VR硬件特征以及VR技术本身的特点讲解VR游戏开发中的若干注意事项。

VR入门基础

很多其他行业的IT开发人员反映希望进入虚拟现实领域,想了解可以如何快速入手。这里简单说明一下:虚拟显示技术属于3D显示技术的一个分支,传统的3D技术显示在普通的2D屏幕上(类似于“魔兽争霸”这类游戏);而现代的VR技术则是指,利用具备了双目视差以及头部运动追踪(头部动作捕捉)技术的立体显示装置(如Oculus Rift和HTC Vive),来对3D场景进行展示的技术,这类设备允许用户转动、移动头部从各种角度对3D模型进行观看。

所以对于其他行业的IT开发者来说,虚拟现实可以简略地看成是3D游戏/应用的一种,进入虚拟现实行业首先需要掌握3D技术。虽然OpenGL和DirectX是3D技术的基础,但是直接使用这两种技术进行3D开发难度大效率低,并不适合普通开发者入门。这里推荐简单好用的3D游戏引擎Unity3D(一般简称Uinty或U3D),其采用C#作为脚本语言,简单易学;此外,Unity本身作为一款3D游戏引擎,除了具备对3D模型进行渲染、显示的基本功能外,还具备物理系统、光照系统、骨骼动画系统、音频系统等3D游戏所需的各类系统。

当掌握了Unity开发技术之后,只需要开启Unity的“支持虚拟现实”这个选项,就可以轻松的在VR设备上显示3D画面了。

当然这只是VR的入门第一步,由于VR展示和传统3D展示的不同(比如用户可以自由控制相机,用户看不见鼠标键盘,必须依赖Xbox手柄或者体感手柄等设备进行输入等),VR开发和传统3D开发也有很多的不同之处,就笔者本身从事过的一款“3D街区漫游”应用来说,此应用中包含了一个正在建设的街区的3D模型,目标是让用户在这个3D场景中漫游来了解这个街区建成后是什么样子,形成直观的视觉印象。按照传统的做法,只要采用第一人称视角,用户操作键盘的方向键(或者WASD键)控制前进方向,用鼠标控制视角即可(类似反恐精英的操作方式),但是当转为使用VR技术后,因为用户看不见键盘而只能使用Xbox手柄,通过手柄左摇杆控制角色移动,而由于用户的视角和VR头盔直接联动,用户在现实中转头,在虚拟环境中的相机就会同步旋转,所以传统的鼠标也失去的作用,当然控制用户“正前方”的朝向也需要一个输入,而这个输入可以用Xbox手柄的右摇杆进行控制。

完成了这些,用户可以带着头盔拿着手柄在虚拟3D街区中漫游了,但是你会发现在通过操作手柄摇杆来移动或转身时会产生一种眩晕感,这是由于人在虚拟环境中的运动和现实中的运动不同步所引起的(后文会详细说明)。于是我们研究了一套改进方案,让用户在虚拟街区中事先设定好的观察点观看,采用的手柄的按键切换观察点,而瞬间移动的方式很好的避免了眩晕感的产生。

所以即使掌握了3D开发技术,也需要在VR环境下的人机交互方式中采取合适的交互方案才能够获得良好的VR体验。

VR硬件

VR技术的终极目的在于能够给予用户全身心的沉浸式体验感受。人类可以通过视觉、听觉,触觉,味觉,嗅觉等感觉获取环境信息,这其中,通过视觉获取的信息占据了全部信息量的80%以上。因此目前的VR技术主要从视觉入手也就不足为奇了。

而基于双目视差的立体视觉技术更是诞生已超过150年。如图1、图2所示的设备是David Brewster在1849年在前人的立体视觉装置的基础上改进而来,在形式上已经十分接近我们目前所使用的VR头盔了。

图1 David Brewster发明的改良型立体镜

图2 以凸透镜取代立体镜中的镜子

但是这类设备,只能看到固定的立体图像,图像不会随时间而变化,更不用说这种变化能够根据用户头部的运动做出响应。而作为完整的虚拟现实解决方案,立体画面输出和头部追踪,是必不可少的两项技术。

在人类进入电气化时代后,尤其是二战结束后,伴随着电子计算机的发明,若干基于双目立体视觉的电子设备被发明出来,但是由于需要结合头部追踪以及即时渲染显示输出等技术,在那个电子设备体积大性能低的年代,只能做成如图3所示的这样。

图3 Ivan Sutherland开发的头戴式显示器

这是由计算机科学家 Ivan Sutherland在20世纪60年代开发的一款终极显示器,由于它和天花板相连从而减轻了其重量,但是由于其高悬与用户头顶的惊悚造型,该立体视觉系统也被称为“达摩克利斯之剑”。该头戴式显示器是一个真实的虚拟和增强现实设备的最早例子之一。其能够显示一个简单的几何图形网格并覆盖在佩戴者周围的环境上。

在后来的发展中,虚拟现实设备一直属于军事研究的重要领域,无论是用于军事训练,还是用于顶尖战斗机的头盔里的数据显示。

到了21世纪,若干结合了3D显示和头部追踪的设备已经出现了,但是由于其昂贵的价格,往往只能在高校和大企业的实验室里才会购置。

Oculus的诞生

革命性的变化出现在2012年,Oculus Rift登陆KickStarter众筹成功,并于2014年被Facebook收购。其实作为第一代产品的DK1,在现在看来有很多的缺陷,比如分辨率低等,直到2014年发布的DK2才有了比较好的改善。

图4 Oculus Rift DK2

DK2(如图4所示)在2014年北京举办的Unite大会上有过展示,当时参加过这次大会的同学可能还有印象,当时排的队伍之长,至少要等40分钟才能玩上,而看着带着DK2的玩家的反应是非常有趣的(当时演示了一个鬼屋游戏,游戏最后会出现一个女鬼,玩家往往会被吓得惊声尖叫)。

DK2具备了相对较高的分辨率1920x1080(即时如此,仍然会看到较为明显的纱窗效应),以及100度左右的视场角(FOV),采用了高精度的陀螺仪结合红外相机进行头部运动追踪,并对从头部运动数据采集到最后的3D图像的渲染输出的一系列环节进行了优化(甚至据说DK2配的HDMI线都是特制的,里面有定制化芯片用于缩短视频信号传输延迟)。而其所采用的三星Note3手机所配备的OLED屏幕具有优良的高刷新率,能够做到75FPS ,大大减小了液晶显示器显示高速物体时产生的残影现象(该现象是导致VR眩晕的原因之一)。可以说,DK2是当时十分难得的没有致命短板的VR设备,而且最关键的一点是,它399刀的价格也让人比较容易接受。

惊鸿一瞥的HTC Vive

而到了2015年,HTC和Valve公司在巴塞罗那的消费电子展上宣布联合推出Vive虚拟现实设备,但是由于发出的测试样机过于稀少,VR游戏开发者普遍还是用Oculus进行开发。

中国的VR

同时在大洋彼岸的中国,VR也经历了大起大落的一年,一方面,由国内的一些公司推出了“蛋壳VR”,在蛋壳形状的动感座中加入了国产的VR头盔,配合“大摆锤”、“过山车”等VR游戏,席卷全国一二线城市的大商场,但是由于VR游戏对于动感座椅是没有任何控制的,而是由一个外部程序控制座椅的运动,因此游戏和座椅之间难以实现良好的同步,比如当用户在游戏中看到自己开始加速下坠1-2秒之后,座椅才会有相应的动作,这种“不同步”会引发用户产生较为严重的眩晕感,而且不同厂家对驱动VR头盔的电脑配置也不尽相同,为了节约成本而配置较差的显卡也会引发低帧率,高延迟,导致用户眩晕。这些都降低了客户的体验感,而且少有后续内容更新,这些都导致了回头客的减少,而蛋蛋椅的销量在2015年10月之后也下跌严重,这波“中国式VR”的浪潮也暂时退去。

图5 用于体验VR的蛋蛋椅(蛋壳)

公平来说,虽然“蛋蛋椅VR” (如图5所示)体验谈不上多好,但是对整体市场起到了一定的教育作用,让大众在一定程度上了解了VR到底是个什么技术,但是同时由于不到位的效果,让大众用户感到“VR也就无非如此罢了”。还有一点就是比起成人年的浅尝则止,青少年儿童表现出了对VR的极为浓厚的兴趣,而且对于VR眩晕症,儿童表现出了更强的抗性,在我们公司举办的一次VR宣讲会上,有一个VR模拟飞行的Demo,一个小孩子玩了半个小时。很多成年人玩过反应会产生眩晕感的游戏,很少听到孩子们玩过后有类似的反馈。

同时借着资本市场对游戏产业(这里主要是指手游)的热捧,手机VR伴随着Google的Cardboard的发布开始了热炒,各种以Cardboard为原型进行设计制造的手机VR盒子层出不穷,甚至据传说深圳有上百款手机盒子在设计和生产。但是与之形成鲜明对比的却是手机3D性能的普遍低下,毕竟由于需要每秒75帧的刷新率,对于一个中小型3D场景来说,GTX680或者GTX770以上的台式机显卡性能才能够保持足以稳定的帧率输出,作为手机那捉襟见肘的3D性能,如何去实现这样高品质的VR体验呢?此外绝大部分手机仍然采用的是不适合VR的液晶显示屏,只有三星等少数手机采用了OLED屏幕。而且为了满足精确低延迟的头部动作捕捉需要,加速度传感器需要达到1000HZ的采样律,但是智能手机中配置的往往是100HZ采样率的传感器,结果会大大增加画面相对与头部运动响应的延迟。

此外这些VR盒子往往只是简单容纳手机,缺乏和手机软件进行通信的外部设备,如果用户需要做某些操作,可能需要把手机从盒子里拿出来后点击手机屏幕操作,体验并不好。当然有些软件采用头瞄系统,让用户注视某个虚拟按钮一段时间后相当于按下此按钮。在这一点上,具备了实体操作按键的一体机和Gear VR就好很多,有更加直观便利的操作性。

和手机VR一起被热炒的,是一系列VR一体机的诞生,但是由于这些一体机基本相当于把智能手机去掉了基带芯片整合进手机盒子一样,相比与普通手机VR,2015年的这一批VR一体机在VR性能表现上也没有什么更加特别的竞争力。在市场上的销售表现也没有掀起太大的波澜。

其实也不是国内一体机厂商不愿做出好的产品,有一些一体机的创业团队就吐苦水说作为头盔核心部件之一的OLED面板货源只掌握在三星等少数几家大厂手中,无法获得普通液晶面板那样的敞开式供应(估计为了降低风险,一体机厂家的初期产量不会很大,较低的需求量也降低了和三星等供货大厂的议价能力;而作为VR产品的核心的OLED面板,相对于这个产业更是战略级储备资源,在三星手机、Oculus DK2这些本家产品尚在上升阶段的时候,也很难想像他们会向同行业的竞争对手大批量出售这样的重要战略资源)。而且即使拿到了面板,也不等于万事大吉了,OLED面板只是负责显示,想让其工作还需要相应的驱动芯片,普通的驱动芯片只能达到60FPS的刷新率,只有原厂的驱动芯片能实现和其OLED面板所适配的75FPS的驱动能力。所以只有原厂的OLED搭配自家的驱动芯片才能够实现完整的75FPS的完整性能表现。至于这些驱动芯片,其获得的难度更甚于OLED面板。

但是比手机VR好的一点大概是相比于智能手机(尤其是Android手机)的硬件、系统的碎片化(各种分辨率的屏幕搭配了各种不同规格的处理器,再加上各种版本的安卓系统,会形成数量恐怖的排列组合的结果),一体机有着相对统一的硬件规格和操作系统,VR软件开发者在进行硬件适配时比起手机VR时的时间、人力、测试硬件成本会低很多。此外得益于一体机较大的体型,其中可以容纳更多的设备,可以添加更多的外部按键、更大容量的电池,甚至是为了防止镜片起雾和给CPU更有效的散热而可以搭载基于风扇的主动散热系统。

Gear VR

向Oculus提供OLED面板的三星,和Oculus合作推出了Gear VR(如图6所示)。虽然普通的手机VR相比于PC VR的表现相差甚远,但是Gear VR在手机VR之中却是一种异质般的存在——它能够提供基本接近PC VR的性能体验。

图6 Gear VR

首先,Gear VR可以通过USB接口和三星手机相连(想把别家手机通过这个USB接口连到Gear VR的同学可以基本放弃了,这个接口被设计成为只能接入三星手机特制的USB接口),头盔上的电子设备可以和手机进行直接的有线通信,这些设备包括了光电传感器、触摸面板、高精度陀螺仪等。

当你把(三星)手机放入Gear VR后,不用再做任何操作,只要把头盔戴到头上,头盔内置的光电传感器会将信号传递个整合到操作系统层面的VR服务,手机就会自动启动VR桌面程序,你可以通过触控板浏览当前已有的VR应用,并启动的选中的应用程序。在游戏中也可以使用触控面板进行操作,如果想要退出该应用只要按下头盔上的“退出”按键即可。

在VR桌面时,你会发现Gear VR对于用户的头部追踪非常的准确,头部的运动能够以极低的延迟极高的帧率直接反应到画面上,而这基本就是PC VR的效果。同样是手机VR,Gear VR和国产的手机VR的差距咋就这么大捏?

首先,在头部运动捕捉环节,刚才已经说过,Gear VR的采用了头盔上搭载的1000HZ高精度惯性传感器所采集的数据,并通过有线获得稳定的数据传递输入;国产手机VR一般采用手机自带的100HZ加速度传感器。这导致了Gear VR能够获得更短延迟,更准确的头部运动加速度采样数据。

而在渲染环节,Gear VR也有独特的优势,三星手机的软硬件都是自己制作的,在ROM的开发中,可以对GPU的操作做出特殊优化,缩短渲染延迟。而完成这项工作的,则是3D技术大神,也是Oculus 的CTO的John D. Carmack,正是他参与到三星ROM的优化过程中,把Gear VR的SDK和三星手机的底层显卡驱动进行深度整合优化,实现了Gear VR那接近PC VR般的梦幻表现。

而国产手机VR,一般都是使用Google的Cardboard组件开发的VR应用,未经过优化的双镜头渲染让手机GPU不堪重负,我在Unite 2015的展示厅里看到的用于进行虚拟旅游的某手机VR应用,其帧率更是只有可怜的个位数,因为我感觉都可以一帧帧自己数出来了(囧)。

Gear VR到底好到什么程度呢?据说有个国内厂商做一体机研发方案,调研了一大圈,最后决定上三星Gear VR的方案,但是Gear VR的核心都在三星手机中了,想完美复制Gear VR就需要自己做一部三星手机出来,但这谈何容易?于是该厂老板做了一个近乎凶残的决定:把三星手机扒皮。也就是买回三星手机,拆去外壳,然后装入自家仿制的Gear VR头盔中。其实在一体机硬件方案非常多的华强北,搞出这么一个方案只能是无奈的下下之策,但是这里也能看出Gear VR其本身的不可替代性。

举报