Unity解析VR产业及思考
本文由Unity Technologies技术支持经理张鑫与原厂讲师罗志达共同撰写,旨在让更多投身VR领域的开发者在创建Unity项目之前,从过去、现在与未来的多重角度,深入了解Unity对VR产业的支持。
VR的发展历史与当前火爆的原因
在着手了解如何创建VR项目之前,有必要先了解VR的发展历程。1935年,小说家Stanley G. Weinbaum在其小说中描绘了一款虚拟现实眼镜,这部小说被视为世界上率先提出虚拟现实概念的作品。故事中所描述的是以眼镜为基础,涵盖视觉、嗅觉、触觉等全方位沉浸式体验的虚拟现实概念。1962年,Morton Heilig研发出名为Sensorama的虚拟现实原形机,后来该技术被应用于空军,以虚拟现实的方式开展模拟飞行训练。
然而,在1970年至1994年的二十多年间,尽管众多科学家投身于VR领域的研究,但整体上仍局限于相关技术研究,并未生产出可供使用者实际使用的产品。直到1994年,日本游戏公司Sega和任天堂分别针对游戏产业推出Sega VR - 1和Virtual Boy,在当时的业内引起了不小的轰动。不过,由于设备成本较高,其普及率并不理想,但这也为VR硬件进军To C市场打开了大门。
如今VR产业火爆,源于2012年Oculus Rift通过国外知名众筹网站KickStarter募资到160万美元,随后被Facebook以20亿美元的天价收购。当时,Unity作为首个支持Oculus眼镜的引擎,吸引了大批开发者投身VR项目开发,正式拉开了VR之战的序幕。首轮引爆后,2014年Google发布了Google CardBoard,使消费者能够以极低的成本通过手机体验VR世界,众多手游开发者纷纷加入战局,点燃了如今的“Mobile VR”大战。
纵观当前市场,根据与Unity保持良好合作关系的硬件公司的讨论数据以及独立开发市场分析结果,预计2017年VR硬件产出将超过1300万台,到2020年将超过5000万台,总市值可达30亿美元。
VR原理与现状深度剖析
目前市场上已销售的沉浸式VR设备主要有以下两种类型:
基于PC的头戴式VR设备
以Oculus Rift为代表,此类设备依靠PC进行计算,并将计算结果传输至头戴式设备的显示屏进行显示,从而让用户获得沉浸式VR体验。就现阶段而言,该类设备能为用户提供最佳的VR体验,但缺点是必须通过USB/HDMI线与PC相连,这极大地限制了设备的灵活性。
基于Mobile的头戴式VR设备
例如Gear VR、Google Cardboard等,这类设备利用移动设备进行场景渲染和计算,并直接将移动设备作为屏幕显示。其优点是避免了繁琐的电线连接,便于携带,且移动设备普及率高。然而,缺点也十分明显,与PC相比,其计算和渲染能力较弱,并且随着体验时间的增加,移动设备发热迅速,会迫使设备降低计算频率,导致画面卡顿和延迟加剧,严重影响VR体验的舒适度。
此外,Sony的Morpheus、HTC的VIVE等硬件设备,据悉也将于明年正式上市。
当前VR体验中,亟待解决的问题是用户体验时出现的眩晕等身体不适状况。造成身体不适的原因众多,包括分辨率、画面重影、画面延迟、深度感知不连续等。人体的感知器官时刻都在感知周围信息并传递给大脑,大脑会对这些信息进行处理和判断。若出现大脑无法识别的冲突信息,就会产生不适感。上述的“重影”“延迟”和“深度感知不连续”等现象,在日常生活中极为罕见,会加速大脑疲劳,甚至导致眩晕恶心,从而大幅缩短VR体验时间。目前,沉浸式VR的单次体验时间一般为5 - 10分钟,连续体验不宜超过30分钟。
如何为用户提供更优质的VR体验,已成为当前VR领域的首要任务。目前,主流硬件厂商主要在以下几个方面进行努力:
提高帧率、降低延迟度
通常情况下,PC/移动游戏的帧率保持在30帧/秒以上即可满足玩家流畅游戏的需求,但对于沉浸式VR体验而言,这远远不够。在此,需要解释一下延迟度的概念。延迟度是指从头戴式设备的传感器将方位信息传入PC机,经过PC/移动设备的计算渲染,最终传回到显示屏显示的时间间隔。若延迟度过长,用户看到的渲染场景会出现“卡顿”现象,增加VR体验的不适感,甚至引发眩晕。一般来说,延迟度应小于20ms,且越小越好,这就要求帧率至少达到75帧/秒,甚至90帧/秒以上。即便对于目前的主流家用PC机,这也是较为苛刻的要求。
虽然Oculus提出了Async Timewarp技术,试图在低帧率情况下保证延迟度,但该方法仅适用于“头部旋转”和小范围慢速度的位置移动,对于快速移动和动态物体效果不佳。因此,在提升VR体验方面,提高帧率是最为有效的方法。
提升分辨率
目前的硬件设备需要在距离眼睛很近的位置观看,屏幕贴近眼睛容易产生纱窗效应,使眼睛能够看到屏幕中的格点,从而导致不适。分辨率问题需要依靠硬件技术的提升来解决。
VR与人体的关系及注意事项
实际上,人体对环境的感知非常敏锐,舒适的VR体验远比美观的VR体验重要。因为不舒服的体验会导致人体产生强烈的排斥反应,引发眩晕或不适。在目前VR项目的开发中,应确保帧率不低于75帧/秒且不停止更新。
VR摄像头的结构类似于人的双眼,由两个平行绑定的摄像头组成,且各自具备独立的校准功能。在眼睛正视前方时,视角(FOV)范围水平角度为122°,垂直角度为120°;在颈部自由运动的情况下,视角能达到水平角度210°,垂直角度160°。若以每度60x60像素计算,当屏幕硬件技术发展到12K x 10K时,VR体验将非常接近现实。
声音是VR体验中至关重要的环节,但许多开发者往往忽视了其重要性。人的耳朵不仅负责声音传递,还与平衡感有关。人脑通过声音传递到两只耳朵的强度和时间差来判断声音的方向,并决定是否关注该声音,这就是著名的“鸡尾酒效应”。
值得注意的是,人耳接收到高频音(3000Hz以上)时会下意识地往上看,接收到低频音(750Hz以下)时会往下看,在制作VR项目时,可利用这一特点引导使用者的视线。
我们通常所说的“感觉到速度”,实际上指的是加速度,人体对加速度具有感知能力。例如飞机起飞或汽车加速时,能感觉到速度的增加,但人体对速度本身并无感觉,如飞机飞行到稳定速度时,乘客能在机舱内安稳用餐而感觉不到飞机的快速移动,我们也无法感觉到地球的匀速转动。
重力感是人体无法被欺骗的感觉。例如在某个VR项目中,过山车翻转180度,但人体仍能清楚地意识到重力方向并未改变,此时沉浸感就会降低,除非项目配备能旋转180度的座椅。
人体容易感到疲劳,长时间佩戴VR设备,眼睛和手部都容易产生疲劳。在项目中,过于频繁地引导玩家改变聚焦距离也会使人疲劳,建议最佳聚焦距离为2M - 5M。以目前的硬件设备性能来看,最佳的内容体验时间约为5 - 10分钟,时间过长人体会产生疲劳感。此外,突然晃动镜头、突然停止画面或帧率过低等情况,都会让人体产生不适。
实际上,人类对VR体验中真实感的追求是有限度的,这是因为人的情感系统具有移情反应,会将虚拟现实世界中的物体与真实世界等同看待。例如在虚拟现实世界中看到摇尾巴的小狗,会主观认为它没有威胁而降低警觉性。在恐怖游戏开发中,这种移情反应是一个很好的切入点。这也与“恐怖谷理论”相关,当人类看到与自己形体相近的假人时,随着其与真实人类外表和行为的接近,会产生排斥和恐惧感,直到与正常人类完全一致时这种感觉才会消除。
正因为移情反应,开发恐怖游戏更适合使用真实世界的纹理。同时,虚拟现实也非常适合用于军事训练,让士兵适应危险环境。
VR的市场分析与硬件介绍
针对当前VR开发的问题,可从以下几个方面进行讨论。目前市场上的VR硬件设备大致可分为三种类型:
必须连接电脑的沉浸头戴式设备(HMD)
以Oculus Rift为代表,这类设备沉浸体验出色,但由于是有线设备,移动范围受限,适合双脚无需移动的应用场景。设备价格昂贵,主要应用于To B领域,目前该设备上的应用多为短时间体验,适合展览或商业活动展示,但在多人体验时,设备卫生问题需要关注。
需要自带手机的VR(Mobile VR)
如Google Cardboard、Gear VR以及国内的暴风魔镜等,用户只需将手机放入纸版折叠的盒子中即可体验。这类设备体验虽不如PC头戴设备,但成本低廉、便于携带,开发流程也为手游开发者所熟悉,吸引了大量开发者投入,推动了VR市场的发展。
整合AR技术的新型体验设备
谷歌推出的Google Glass虽已停产,但推动了Microsoft Hololens、Magic Leap等新型眼镜的发展。未来,次世代VR设备的重点在于眼镜的轻量化和强大的电池续航能力,但为了实现轻量化,可能需要携带额外的运算硬件。若运行效果达到预期,将开启次世代VR领域。
除上述类型外,还有投影VR、全息VR等不同的VR装置。
如何使用Unity开发VR项目
从Unity 5.1开始,VR SDK被集成到引擎中。开发者只需下载最新的Runtime Driver,在Unity Player设置中勾选“Virtual Reality Supported”,并将硬件连接到电脑,即可将项目转换为VR项目。默认摄像头会自动切换为VR摄像头,开发过程与开发一般手游相似,按下Play按钮时,Game View的视角会切换为VR双镜头画面。
VR项目的优化需根据硬件差异进行考量,但相对手游而言较为容易。在现今的中端手机装置上,建议遵循以下原则以确保项目运行顺畅:
- 绝对不能降帧。
- 减少物体数量和物体曲面。
- 多用静态物体,采用烘焙光照。
- Draw Call保持在100左右。
- 三角面小于100k。
- 可以采用高解析的纹理来弥补。
- 使用物理引擎避免CPU消耗过大。
- 采用LOD、遮挡剔除、批次运算。
Unity 5.1的Profiling功能支持Oculus和Gear VR的直接报告,开发者可通过Profiler监控VR项目的效能并进行优化。
目前Unity的VR开发技术挑战
传统的VR渲染管线使用两个相机按照视距摆放并对场景进行渲染,整个场景会被渲染两次。这种方法直观简单,但存在较高的性能浪费,会进行两次视域体裁剪操作、两遍图形管线API调用以及双倍的Drawcall占用。
在Unity 5.1中,对VR渲染管线进行了深度优化,如仅进行一次场景裁剪、仅渲染一次场景中的动态阴影等。同时,Android多线程渲染功能和GPU蒙皮(仅OpenGL ES 3.0)技术的支持,大幅提升了VR渲染性能。
未来,Unity的开发计划将加入更多VR设备相关的API,如眼球追踪API等。渲染管线也将继续优化,预计5.1之后的渲染管线有以下几种走向:
方法一
渲染场景时,只遍历一次场景,每个物体只提交一次,但根据照相机的不同Viewport和Transform渲染两遍。该方法易于实现,与传统渲染管线相比,仅调用一次大量图形管线API,但仍需消耗两倍的Drawcall。
方法二
原理与方法一相同,通过Command Buffer(DX11)来提交和渲染场景中的物体。优点与方法一一致,但同样存在两倍Drawcall消耗的问题,且需要硬件设备支持Command Buffer功能。
方法三
在遍历场景渲染时,通过硬件Instancing技术针对每个物体渲染两个instance,分别用于左眼相机和右眼相机。这种方法不仅保证了对图形管线API的一次调用,还能大幅降低Drawcall占用,但不支持Open GL ES 2.0的设备,且与标准的Instancing技术存在冲突。
Unity针对VR的未来计划
如前文所述,尽管众多VR硬件厂商涌入市场,但目前仍缺乏商业化思维,尚未找到有效的盈利模式。相比之下,AR领域目前更具变现能力。不过,VR前景依然被看好,随着更多人投身该行业,相应的商业模式有望迅速确立。
在与同行的讨论中,大家提出了一些可能的项目类型,可供参考:成人产业、过山车、旅游导览系统、建筑模拟、飞航类、实时视频串流VR等。
结语
近年来,科技产业发展迅猛,我们对VR产业持乐观态度,预计在未来几年内,我们将在生活中体验到各种VR或AR项目。从Unity的角度来看,保持技术领先,面向开发者,与硬件公司和开发者保持良好互动,为开发者提供优质的开发环境,以创建未来优质的VR产品,是我们不变的目标。