开发Oculus Rift等VR设备,需要具备哪些技术知识?
当前位置 :首页>产业新闻>返回
时间:2016-01-18 编辑: 来源:游戏陀螺

  游戏客栈今日报道(2016.1.18)随着VR越炒越热,国内入局的企业快速增长,其中尤其是以硬件开发厂商为主。不过真的随便做个类似Google Cardboard的东西就能在VR行业立足了吗?相对来说,Rift、Vive、Gear VR等作为现阶段比较成熟的设备,要做的话就要以这几大产品为目标,了解这些产品并作出自家的特色。本文将以Oculus Rift为例介绍开发虚拟现实设备需要具备的技术和知识。

 1.png

  Oculus Rift是一种虚拟现实仪器(以下简称rift),用一个遮罩在双眼前的不透明显示器,搭配两个可更换透镜,高质量陀螺仪、加速度传感器和地磁传感器,以及后来的位置跟踪器(DK2专有)而成的一整套设备。目前rift尚未发布面向正式消费者的版本,而只公开了两个版本开发包(development kit),通常称之为DK1和DK2。

  Rift的工作原理分为两部分。一部分跟目前3D电影或者3D眼镜概念类似(顺带说一句,我个人比较讨厌3D这个说法,太宽泛也极具商业欺骗性,更准确的说法是stereoscope,这里感谢 @Milo Yip 指正),即模仿现实世界,通过为左右两眼显示不同的画面,让大脑合成一副带有更多深度信息的“立体”图像。另一部分是跟互动相关。由于rift不只是要做另一个Sony HMZ-T3W,所以它为了互动体验还专门提供和优化了捕捉头部运动的组件。Rift设备可以很精准且迅速地捕捉到头部的任意旋转,DK2更能在一个空间角范围内捕捉头部的线性运动。

  结合这两部分,rift能营造一个和现实世界完全隔绝的视觉环境,且能提供一定程度上的体感结合,即头部旋转和小范围线性移动。在硬件上也做到了较好的广视域和低延迟。

  Rift的义务广告到此结束。了解了rift是什么后,我们进入正题:要具备怎样的知识才能进行rift开发?

  首当其冲的一点是3D相关知识。这里我说的不是stereoscopic的“3D”,而是一些计算机图形学基本知识。这里面包括现代实时图形应用的主要逻辑组成部分,包括:

  摄像机

  光照及其原理

  坐标系及其转换

  材质和纹理系统

  基于网格的物件表示

  其他方面如屏幕空间后处理效果、shader、动画系统等铺开的部分不是必须项。说得更明白一些,是一个运用3ds max/Maya这类数字内容创作软件的创作人员应该熟知的部分。这方面稍有门槛,但不算太高。

  在早期stereoscope概念出来的时候,很多开发者还必须关心如何在节省性能的前提下渲染左右两张不同的画面。而现在rift硬件和SDK已经做掉大部分工作,不要说什么头部高速同步,连透镜色散和调瞳距都被我们卡马克大神和Abrash大神做掉了。而且Oculus公司也跟很多引擎大厂合作,提供了这些引擎的插件。所以如果你用Unity或者Unreal的话,连SDK集成的事都可以省去了(out-of-box)。留给开发者的任务是更好地理解rift硬件所能带给我们的特性,并将这些特性应用到实际应用中去。

  举个很实际的例子:由于rift是沉浸式的体验,带上了rift视觉上就跟外界说拜拜了。这时候输入便成了一个棘手问题。如果要用户在看到logo之后,再脱下rift去摸键盘就太弱了,而且不是所有键盘用户都能应付盲打,保不齐某些用户还要在使用过程中再脱下来去找键位。配备一个手柄会好一些,但不能从根本上解决问题。当然还有一些诸如挂载LeapMotion、MYO之类的解决方案,但这都超出了rift本身的范畴。就这个问题来说,我倾向于从rift能提供的输入来着手解决。比如把头部旋转和移动不仅看做是摄像机的同步,还能当做一种输入方式。这方面比较好的例子有《Titans of Space》和《Vanguard V》,但我最欣赏的还是Google Cardboard官方应用的做法(好像有奇怪的东西混了进来)。

  所以我认为除了必要的3D知识之外,rift开发要学习的东西对于大部分人都是全新的,而且他们基本都属于应用层问题。

  官方煞费苦心地在官网放了很多关于如何开发rift应用的忠告(Oculus Best Practices Guide),主要是一些Do and Don’t的条例,有较多关于避免眩晕(sickness)和增强沉浸感方面的内容。不过我浏览了官方Oculus VR Share (Beta)中的demo(吐了)之后,却发现好像甚少有人注意这些点。这里先列出一些我初步看下来有必要关心的吧:

  从头部动作到画面展现之间的延迟控制在20ms以内,以减少眩晕感。可使用内置的延迟测试工具测试应用的延迟。

  使用位置跟踪的场合下,当用户接近跟踪区域边缘时,以某种方式提示用户回到跟踪区域内。

  不要尝试修改图像变形算法、不要尝试修改头部跟踪数据、不要尝试修改位置跟踪数据。

  人眼通过立体图像获得场景深度信息,对近处物体很敏感,一旦物体拉远则感知度立即变差。

  尽可能地将UI融合在场景内,且最佳显示的位置是距离观察者2-3米的位置。准星一类的UI应该以聚焦对象的深度进行渲染。

  加速/停止会引起视觉和平衡器官之间的感知冲突,如果加速/停止不是由用户发起的,则尽可能地避免上述情况。

  避免线性垂直震动,接近0.2Hz频率的垂直震动让人最感不适。非垂直震动在接近0.3Hz的频率让人最感不适。

  Zoom,或镜头缩放效果,尽可能避免。

  避免要求用户平移、后退、旋转的场景。

  使用用户熟知的环境作为背景(如响应头部转动的天空盒)有助于减轻视觉冲突和增强舒适感。

  避免使用高频纹理(如条状、精细的纹理),高频纹理会增强环境中对于运动的感知,会让人不适。改用低频纹理可以改善这一状况。

  解决用户接触输入设备困难的问题,或者将头部运动本身作为一种输入方式。

  使用3D音效加强沉浸感。

  UPDATE: 上面说到的“官方解决”的输入问题,Oculus Touch控制器和Steam VR(HTC Vive)所提供的几个原型控制器,可以算是初步解决问题了。相比之下Gear VR头盔上的触摸板、Cardboard上的磁块拨片对于重度游戏来说就显得过于简单了。


2月微信小游戏百强榜

《神隐之子》挖掘赛道亮点

摔角游戏买量观察

健康游戏忠告:抵制不良游戏 拒绝盗版游戏 注意自我保护 谨防上当受骗 适度游戏益脑 沉迷游戏伤身 合理安排时间 享受健康生活

京ICP备15024595号-1

游戏客栈 游戏客栈