本文转载至http://blog.csdn.net/xoyojank/article/details/51288782
注: 原文2016年2月发表于公司内部社区, 最近才由同事转载出来, 删去了文中引用的一些内部文章和视频. 在这里我也只是把外网版本转过来, 留做备份.
背景介绍
我们组在2014年下半年尝试开发了一款 XboxOne 平台的体感游戏, 2015年上半年进行收尾工作的同时, 结合之前积累的体感交互经验, 开始进行 VR 游戏的预研工作. 在这近一年的时间里, 一方面从外界感受到了一股虚拟现实快速发展的潮流, 另一方面也体会到身边很多人对 VR 游戏的了解非常有限. 现在我们自己的VR游戏Demo已经完结, 技术上验证了在当前的硬件条件下, 开发高画质游戏的可行性. 当然, 优质的VR游戏需要大家共同的努力, 我们也希望更多的人参与进来. 在此把我们在开发过程中学习到的, 体会到的, 以及所期望的进行一下总结, 希望对大家有所帮助。
图片为我们的VR Demo: Comet![]()
![]()
![]()
http://v.qq.com/boke/page/i/0/s/i0195r6fc0s.htmlVR硬件原理及现状
狭义上的“VR 硬件”, 特指具有沉浸感的头戴显示器。它有三个基本特征:
- 全3D的立体显示: 附合人眼观看现实物体的习惯, 能够”以假乱真”
- 完全虚拟的画面: 需要屏蔽外界光线的干扰, 你所看到的都不是现实的东西. 有些人可能觉得”增强现实(AR)”更高大上一些, 但是对于游戏, 我认为还是更倾向于 VR. 玄幻, 魔幻, 科幻, 一切皆为虚幻.
-
不受限制的视角方向: 视角方向跟随头部转动和移动, 不同于之前的头戴式显示器, 视野非常广。当然, 仅仅是这样的体验, 并不能说是完美的”虚拟现实”, 这也是很多人说硬件不成熟的理由. 但是, 在保证体验良好的的情况, 目前的硬件已经满足做出高品质游戏的条件. 下面对当前的硬件做一些技术分析:
VR显示的基本原理
首先, 我们来一下满足上面提到的三个基本条件的最廉价产品, Google 的 Cardboard:
![](http://bugly.qq.com/bbs/data/attachment/forum/201604/21/093554fs2c2ro2ti6tt7xj.jpg)
![](http://bugly.qq.com/bbs/data/attachment/forum/201604/21/093608johr1uw3dld94ckd.jpg)
- 插入手机做为显示屏幕, 通过分屏的方式处理双眼的画面, 达成立体画面显示
- 借助纸壳屏蔽外界光线干扰, 通过透镜就可以观看到手机渲染的虚拟画面
- 依赖手机内置的陀螺仪, 可以模拟出头部转向时视角的变化. 另外, 凸透镜在一定程度上增加了 FOV(Field Of View, 视场角)
Cardboad 以低廉的价格, 让很多人提前感受到了 VR 的魅力, 并衍生出了很多塑料壳的版本. 不过从体验上来说, Cardboard 并不能算是一个合格的 VR 硬件, 很多人在试玩过后, 就自然而然地以为“VR 就是那么回事”, “目前硬件还差得远”, “也就新鲜几分钟”等等, 从一定程度上误导了很多人对 VR 的认知.
那 Cardboard 存在哪些问题呢?
- 严重的画面延迟: 手机陀螺仪模拟的转向精度和响应速度都不满足VR的要求, 造成渲染的画面跟不上转头的速度, 加重了晕动症
- 糟糕的画面表现: 手机性能不足以支撑高画质高帧率的3D画面渲染, 只能呈现出一些简单的卡通风格画面, 达不到”以假乱真”的程度, 影响了沉浸感
-
缺乏自然的交互: 由于手机的限制, 目前没有配套的头部和手部的定位方案, 从交互上很难做到让人满意的程度, 只能依赖蓝牙手柄这样的传统输入设备
当然, 还有一些其它的小问题, 比如手机发热, 起雾, 过重, 画面变形等等, 这些虽然不是影响体验的主要因素, 但在使用上也是挺烦人的. 接下来我们看看 Oculus 针对这些问题是怎么解决的, 或许这也能解释两者之间的价格差异为什么这么大。
不受限制的视野
如果需要达到逼真的视觉体验, 视野必需尽量接近真实. 这需要满足两个条件: 一是接近人眼的 FOV, 二是跟随头部运动的视角.
![](http://bugly.qq.com/bbs/data/attachment/forum/201604/21/093702ert7zhm87h99kdzp.jpg)
上图左很直观地说明了人眼的 FOV 特点: 双眼的覆盖范围是不同的, 两只眼睛加起来可以超过180度. 当然, 在平面的液晶屏上很难做到这种效果, 所以目前的主流 VR 硬件(不包括 Cardboard)大多是用凸透镜做到了100~110度左右的 FOV, 虽然没有达到自然视野的程度, 但相对于传统 FPS 游戏(FOV 50~60度)来说, 是个巨大的进步, 直接影响到 UI 设计, 交互, 性能, 场景设计, 镜头等方面. 为了解决近距离通过透镜观看画面的变形问题, 我们需要对画面进行反向的变形校正:
![](http://bugly.qq.com/bbs/data/attachment/forum/201604/21/093735ncoybkftktz39pnj.jpg)
下图就是正常双视口渲染的画面, 经过 Barrel Distortion 变形后的效果(在很多 Cardboard游戏上, 这一步是省略掉了的):
图片来我们的VRDemo: Comet
![](http://bugly.qq.com/bbs/data/attachment/forum/201604/21/093839x2uo3bkb56ituzkk.jpg)
![](http://bugly.qq.com/bbs/data/attachment/forum/201604/21/093851kl6lwzuzxsxs5l6x.jpg)
但是, FOV 越大, 光线的折射率也就越大, 光线的散射现象也就越明显, 给人的感觉就是画面边缘的像素出现了重影.
![](http://bugly.qq.com/bbs/data/attachment/forum/201604/21/093926j2mzvib0lbvmgaoe.jpg)
所以, 变形后还需要对色散问题进行校正, 即 Chromatic Aberration. 下图中我们可以看出边缘像素的 RGB 三基色位置是错开的, 这样通过透镜观看时才不会出现色彩分离的奇怪现象:
空间定位能力图片来自我们的 VRDemo: Comet![]()
头部的运动追踪, Oculus 增加了一个外置的红外摄像头用于头显的空间定位, 它同时也可以用于双手控制器(Oculus Touch)的定位.
![](http://bugly.qq.com/bbs/data/attachment/forum/201604/21/094301nhiwjva0bjwfbiei.jpg)
当然, 这种定位方式也存在 FOV 的问题, 只适合桌前的小范围运动. 对于大范围的移动, HTC Vive的Lighthouse 技术更有优势, 可以在 5x5m 的范围内自由移动:
![](http://bugly.qq.com/bbs/data/attachment/forum/201604/21/094323mwq1wgghhhgqqhql.jpg)
空间定位技术的引入, 直接改变了游戏的操作方式, 从”指令式”操作逐渐变成类似”体感”操作的自然交互体验, UI 也就不再拘泥于 2D, 开始向 3D UI 转变.
主流 VR 硬件参数
这里有一张表格, 可以大体上说明2016年的主流VR硬件的参数(DK2和GearVR是很多人都体验过的, 做为对比也加进来):
![](http://bugly.qq.com/bbs/data/attachment/forum/201604/21/094351l5js7e7xezffktji.jpg)
从中表格中提供的数据, 结合一些现场体验可以分析出一些关键信息:
- 三家 VR 设备的 FPS 和 FOV 差异并不大, 这方面在体验上差距很小. PSVR 的 120FPS 是60帧插值出来的, 并不是实际的渲染帧数
- 三家 VR 的控制器都趋于一致: 双持手柄, 有空间定位能力, 可以模拟双手操作. 这就为我们进行 VR 游戏的交互设计提供了很好的指引, 引擎层面可以进行统一抽象, 不用再为每个设备单独设计
- 分辨率相对于 DK2都有改善, 但受限于 OLED 屏幕技术和硬件性能限制, 还达不到视网膜屏的程度, 像素点肉眼仍然可见, 但已经不会影响游戏画面的观看
- PSVR 由于受限于 PS4 的机能限制, 无法在分辨率上占有优势, 但是可以通过像素排列和镜片技术减少纱门效应(Screen Door Effect), 即像素间空隙(Oculus DK2上非常明显)
-
每家的硬件都会依赖一个内容发行平台, 与主机游戏的运作思路很像, 这也决定了 VR 游戏的设计思路
另外值得关注的是 GearVR, 算是最早商业化的平台硬件, 提供了比 Cardboard 更好的体验, 但同样受到机能的限制. 预测手机 VR 方案几年后会推动 VR 设备的普及, 毕竟手机是人人都有, 买个配件的成本还是可以被很多人接受的.
有一个参数是表中没有的, 那就是延迟. 我们先来给出定义: 从用户开始运动到看到屏幕上产生相应变化所需的时间:
![](http://bugly.qq.com/bbs/data/attachment/forum/201604/21/094926edopcq7zjp9x1ggw.jpg)
从上图可以看到, 从传感器采集, 经过线缆传输, 游戏引擎处理, 驱动硬件渲染画面, 液晶像素颜色切换, 到人眼看到对应的画面, 中间经过的每一个步骤都会产生延迟. 要想达到理想的状况, 需要硬件和软件优化的紧密配合. 目前公认的可以被多数人接受的 VR 延迟是20ms, 很多VR硬件只是传感器和液晶屏的时间就已经超出范围了.
对于 VR 硬件来说, 低延迟才是核心竞争力. 但目前延迟缺少一个测试和评估标准, 所以很难通过公开的数据评估每个设备的体验效果. 如果以20ms 为一个临界值, 可以说其它品牌的 VR 设备大部分都不合格.
VR 体验目前的主要问题
VR 游戏在当前的硬件条件下, 仍然存在一些问题. 我们做为开发者, 必须搞清楚每个问题产生的原因, 能够解决的解决, 不能解决的回避, 在此基础上才能做出良好的体验.
晕动症
“晕”可能是第一次体验 VR 的多数人最直接的感受, 就像晕车晕船般的感觉. 很多人可能只是因为这个原因就会放弃对 VR 游戏的期待, 掉入“VR 目前不成熟”的圈子里. 那为什么VR游戏那么容易晕?
- 你没动, 画面动了: VR 游戏体验者通常身体是静止不动的, 如果游戏中看到的是各种加速/旋转/震动等, 正常人都会受不了, 跟晕车晕船的原理是一样的
- 你动了, 画面没跟上: 这就是上文提到的延迟, 很多时候, 硬件附合要求了, 游戏却帧数不够, 同样也会造成严重的延迟现象.
-
体质原因: 比如有人有恐高症, 放到一个悬崖边的虚拟场景里, 也会触发心理和身体的反应.
原因1可以从游戏设计上进行回避, 但是目前来说很多需要跑步和跳跃的游戏受限比较大.
原因2的话, 主流硬件在延迟上都是满足要求的, 做为开发者更多的是需要做好性能优化.
原因3, 从我们组的几个人感受来看, 随着体验次数的增加, 症状会越来越轻, 这表明人的身体是可以适应的. 而且, 适当地增加一些让身体有所反应的游戏场景, 也不失为一种乐趣.
原因2的话, 主流硬件在延迟上都是满足要求的, 做为开发者更多的是需要做好性能优化.
原因3, 从我们组的几个人感受来看, 随着体验次数的增加, 症状会越来越轻, 这表明人的身体是可以适应的. 而且, 适当地增加一些让身体有所反应的游戏场景, 也不失为一种乐趣.
VR 头戴显示器看以看作是一个显示输出设备, 那对于游戏来说, 还有另外一种重要的硬件: 输入设备. 在 VR 游戏中, 键鼠的操作方式首先就可以放弃了, 因为看不到, 只能盲操作. 游戏手柄的话算是一种折衷方式, 但并不能发挥出 VR 的潜力. 理想的输入设备其实是双手, 这也是最自然的方式. 遗憾的是, 不管是 Kinect, 还是 LeapMotion, 都无法完美地支持双手交互的精度. 所以, 目前主流的 VR 控制器还是以双持手柄为主, 预计要2016下半年才开始上市. 在拿到 Oculus Touch 之前, 我们尝试了基于 Kinect 体感的 VR 交互方式, 虽然并不完美, 但已经能够看出未来的交互设计雏形了.
图片来自我们的 VRDemo:3DHUD![]()
GPU 性能不足
Barrel Distortion 变形后带来一个问题: 中心区域像素分辨率的损失, 也就是说中心区域的像素被放大了, 边缘区域的像素被压缩了. 但是人眼对于视野中心的像素清晰度非常敏感, 为了保证清晰度, 需要把原始渲染分辨率提高, 以保证变形后的画面能够达到液晶屏的像素密度.
图片来自我们的VRDemo: Comet![]()
以 Oculus Rift 为例, 屏幕分辨率为2160x1200, 渲染分辨率需要长宽各提高到140%, 即3024x1680, 再加上90FPS 的帧率要求, 每秒需要渲染的像素达到了4.5亿个, 相当于当代主机(XboxOne, PS4)游戏的7倍, 与4k分辨率游戏所需要的硬件差不多. 为了保证体验, 他们规定了一个最低配置, 叫做Oculus Ready的标准: CPU i5 4590, 内存 8G, 显卡 GTX970.
![](http://bugly.qq.com/bbs/data/attachment/forum/201604/21/095334c2aazl3kiai2g52b.jpg)
虽然 PS4 的渲染性能远远达不到 GTX970 的程度, 但是相对于 PC 来说, 它可以提供一致的体验, 这对 VR 来说非常重要. 毕竟就算你的游戏画面再好, 如果一玩就晕得想吐, 那也不会是一个好游戏. 不过好在离 VR 普及还有一段时间, 足够让 Oculus Ready 的 PC 成为大众配置了.
佩戴舒适度
很多近视玩家会担心不能使用, 其实主流的显示设备都可以戴眼镜观看. 至于戴着舒不舒服, 那需要在工业设计上进行迭代优化. 就目前来看, SONY 家的头显最舒服, Oculus 家的手柄最舒服, HTC 家的功能最强. 除了平台独占的VR游戏, 多数会同时兼容三家的设备, 所以从体验上来说, 差别不会太大.
VR 游戏与传统 3D 游戏的开发差异
VR 游戏在开发制作上的差异, 远远没有很多人想象的那么大, 更多的是设计上的思路转变. 所以, 想要开发 VR 游戏, 前提是能够开发一个3D游戏, 核心还是游戏本身, VR 只是体验上的增强. 如果要写一个“VR 游戏开发教程”, 那么其中90%的东西, 与 VR 并没有直接关系. 但是, 这10%的差异, 却是 VR 的核心竞争力, 因为它可以带给你“前所未有”的体验, 为我们进行游戏玩法创新提供了非常大的发挥空间.
玩法
与主机游戏类似, 注重核心体验, 即 Camera, Control, Character. 可能很多人会觉得 VR 游戏只适合做 FPS, 其实并不是这样. 只要保证沉浸感良好, 什么类型的都可以做, RTS, MOBA, AVG, MMOG 等等都可以. 需要关注的核心点是 Camera 和 Control, 这直接关系到玩起来晕不晕, 能够玩多长时间. 只有保证操作体验和沉浸感过关, 游戏的玩法才有意义.
当然, VR 给我们也提供了一些新的特性, 可以用于玩法设计中:
- 由于头部运动追踪的存在, 点头和摇头的操作是可以被识别的, 这就意味着很多 Yes/No 的操作可以直接通过头显输入
- 头部的朝向可以灵活变化, 当你”盯”着某个物体看时, 可以针对这个行为做出相应指令, 具体可以参考 GearVR 上的 Land’s End
- 由于360度视角方向不受限制, 我们可以在背后做一些场景改变, 让每次转头看到的场景都不一样, 既能做成惊喜, 也能做成惊吓
- 头部不仅仅可以转动, 还可以配合身体小范围移动, 比如 Summer Lesson 中凑近 NPC, NPC 会害羞……Vive 的一个上帝视角 Demo 可以蹲下看到地底下打地道的小兵
- VR 渲染可以调整 WorldScale, 即世界单位缩放, 相当于动态调整自身相对于场景的比例, 既可以做成巨人的视角, 也能做成蚁人的视角
- 因为 VR 世界中的单位可以与现实不一样, 那么一些类似”缩地术”的功能也变成现实, 通过身体小范围的移动, 达到虚拟世界中的大范围移动效果
- 双手控制器的存在可以模拟一些抓, 扔, 摸, 打等的操作, 捡起一个道具上下左右仔细看也是很有意思的一件事, 可以把迷题设计在道具的隐藏角落里
- VR 中有了双手的存在, 很多解迷机关就不再是简单的按一个键, 各种零件组合, 机械, 绘画等对于双手控制器来说都是很棒的操作体验
- 控制器的握持感, 非常接近于游戏中的手持武器, 比如枪械, 比如刀剑, 这比握着一个鼠标或者手柄的感觉强多了. 得益于高精度的传感器, 做出具有竞技性的操作玩法也不是不可能
- 双手具有天然的空间感, 一些建造类的玩法也非常适合, 比如 MineCraft, 比如 Besiege 等, UE4 甚至尝试了在 VR 中进行场景编辑
- 由于3D 音效的加强(下面会提到), “听音辨位”就可以做得更真实, 各种潜入类玩法非常适合
- 另外, 由于沉浸感的增强, 恐怖游戏和XX游戏带给人的感官刺激会放大, 这就不用展开了, 试过就知道
图形
如果以 Oculus Ready 的硬件标准, 基本上可以预期的画面表现力差不多相当于上代主机的画面, 即 Xbox360 和 PS3 后期的水平. 我们试做的 VR 游戏 Demo, 在项目启动时的规格比较高, GTX970+Oculus DK2 的硬件下, 经过优化可以流畅运行, 下面是最终版的技术选型, 给大家做参考:
图片来自我们的 VRDemo: Comet![]()
-
Physically Based Material: 物理光照材质算是主流技术了, 但是相应的性能开销也会大一些
- Sphere Reflection Capture: 反射效果和各种高光材质就靠Cubemap了
- Baked Static Lighting + Baked Ambient Occlusion: 即能用静态光照就用静态的
- Global Dynamic Shadow Maps: 仅仅是主角和大件遮挡物
- Instanced Static Mesh: 对于性能的提升非常明显, 大量的优化是基于Instanced技术
- Bloom + Color Grading: 多数的后期镜头效果在 VR 中并不适用, 因为是通过双眼直接观看, 并不像传统游戏那样通过”摄像机镜头”观看. 而且, 为了性能, 能关的都关了…
-
FXAA: 理论上来说 TemporalAA 更适合消除远处的 Specular Aliasing, 但是会导致近处 HUD 的文字和纹路受到影响, 解决之前先用 FXAA 代替.
-
当然, 如果具有足够的优化功力和场景设计技巧, 也不排除 GTX970+Oculus Rift 流畅运行的可能, 但这并不适合多数的团队.
美术制作方面, 有些资料会说 Normal Mapping 和 Billboard Particle 不再适合 VR 渲染, 其实并不是这样的. 这些效果只是在近距离观看时才会发现很假, 远处随便用, 不用担心在制作上与传统3D游戏的差异. 近距离的话, 只能使用 Parallax Mapping 和 Mesh Particle 之类保证不穿帮, 但是极少数情况需要这样, 跟场景和特效设计有关系. 总体上来说, 美术的制作与传统 3D 游戏差异并不大, 除了UI.
交互图片来自 EIPC 的 Showdown Demo![]()
![](http://bugly.qq.com/bbs/data/attachment/forum/201604/21/095959ht88u5iwinfn823n.jpg)
由于目前主流的 VR 操作设备已经趋于统一, 大家都有这么几个特征:
- 可以模拟双手的空间位置和旋转
- 通过手柄上的按钮触发指令型操作, 如抓住, 发射等
- 仍然保留传统的”摇杆”, 但比较少用到
- 这里有一个 Oculus Toybox Demo 的演示视频, 能够很好地说明VR下的人机交互是什么样子的:
图片来自 Oculus 的 Toybox Demo![]()
视频演示: Toybox Demo for Oculus Touch Toybox Demo for Oculus Touch - Inside Look
可以预见到, 基于双手的物理交互会越来越多, 也就意味着物理模拟在VR游戏中的应用会更普遍一些.
同样的, UI 的设计已经不再推荐 2D 平面化, 更加倾向于 3D 的效果, 如科幻风格的全息投影, 或者使用实体模型. 或许, 以后 VR 游戏中的”UI”改由 3D 美术来制作了.
同样的, UI 的设计已经不再推荐 2D 平面化, 更加倾向于 3D 的效果, 如科幻风格的全息投影, 或者使用实体模型. 或许, 以后 VR 游戏中的”UI”改由 3D 美术来制作了.
音效图片来自网络![]()
传统的 3D 游戏音效, 一般是通过音量变化判断距离远近, 通过频率变化判断相对移动. 以空间定位为例:
- 左右: 通过左右声道的音量差异区分
- 前后: 通过多声道的卫星音箱或多声道耳机区分(不适大多数人)
- 距离: 通过音量的衰减判断
-
高低: 冒似没什么好办法…
在 VR 中立体声耳机是可以随着头部转动的, 这就意味着, 我们可以通过两个声道配合转头来判定上下左右前后
图片来自 OculusConnect_Introduction_to_Audio_in_VR.pdf![]()
![]()
同样的, 头部除了转动之外, 还可以小范围移动, 不用通过走动就能判定声音的远近. 以前相当于背景音的环境音效, 现在也能分辨出大概的方位
图片来自 OculusConnect_Introduction_to_Audio_in_VR.pdf![]()
因此, 在VR 游戏中, 3D 音效会被越来越多的人重视起来, 甚至发展出新的玩法, 比如 Pastoral 这个游戏
有兴趣的同学建议读一下这篇文章: VR 中的声音听起来体验如何?和传统音频有什么区别 地址:
https://www.zhihu.com/question/40294035
想听一下效果的, 可以看一下这个 Demo: Spatialized audio demos in VR 地址:
https://www.youtube.com/watch?v=dV3Qog44z6E(什么,YouTube 无法访问? 洗洗睡吧,哈哈)
主机平台现在有一类游戏, 以高画质剧情体验为主, 操作非常简单, 俗称”游戏电影化”. 目前VR圈也有很大一部分人在尝试VR电影的制作, 但是基于360度视频的拍摄手法在VR的沉浸感并不是很好, 而且传统的电影拍摄手法也不适合 VR 视频制作. 所以, 电脑制作的 3D 动画类电影在 VR 化方面具有先天优势, 再结合 VR 头显的一些输入特性, 甚至会产生”电影游戏化”的产品. 另一方面, 以 UE4 为代表的游戏引擎, 实时渲染的画面效果已经达到了 CG 级别, 在技术上具备了制作实时渲染电影的能力. 可以预见到, 未来的 VR 互动电影与 VR 游戏, 它们之间的边界会变得十分模糊.
EPIC’s Infiltrator TechDemo![]()
![]()
下面这个是国外的 VR 主题公园 THE VOID, 相信不久的将来, 这种体验可以像电影院一样普及
随着技术的进步和成本的下降, VR 和 AR 会跟智能手机一样进入我们生活的方方面面. 对于 VR 游戏来说, 很多人也跟我有一样的梦想, 希望在有生之年, 可以把它变成现实:
图片来自 Sword Art Online
![](http://bugly.qq.com/bbs/data/attachment/forum/201604/21/101002eacoactua4avt4kr.jpg)
![](http://bugly.qq.com/bbs/data/attachment/forum/201604/21/101016rrbciasrtcs9fbd9.jpg)