VR原理讲解及开发入门
发表于2016-12-30
本文是作者obuil根据多年心得专门为想要入门的VR开发者所写,由52VR网站提供支持。
1. VR沉浸感和交互作用产生的原理:
在之前,我们观看一个虚拟的创造内容是通过平面显示器的,52VR上次发布过一篇文章《一张图让你认识VR》,在其中,你会看到很多10年前的虚拟现实装备,他们基本是平面显示器,或者将产生的画面投影到一个弧形甚至是球形屏幕上;或者在这些屏幕上叠加左右眼分别的图像,从而产生更加立体的效果。
而这类装置往往很大型,也很昂贵。
而近几年发展起来的VR头戴显示器,则达到了更好的使用效果:更好的沉浸感和更便宜的价格,目前一套主流的VR眼镜是不到1万元RMB的。
这种VR眼镜 能够达到更好的沉浸感的原理是什么呢?
我们看到,VR眼镜,主要通过三方面来达到沉浸感的目的:
1)通过凸透镜来放大人眼看到的即时图像范围,现在的VR眼镜大概会产生90-120度范围的图像视野,这样的视野大概和一个良好的三通道环幕投影系统产生的效果差不多,不过VR眼镜要更加贴近人眼一些,人眼被干扰的可能性大大降低。
2)通过头部的陀螺仪,当人转动头部时,陀螺仪能够及时的通知图像生成引擎,及时的更新画面,从而使人感觉到,自己是在看一个环绕的虚拟空间,从而产生360度的三维空间感。
3)左右眼每一时刻看到的图像是不一样的,是两幅区别左右眼位置的不同头像,从而产生很强烈的立体纵深感。
以上三个原因,就是VR眼镜的沉浸特点。
2. 关于沉浸感和交互作用的定义
对于这两个名词的定义,我认为大概可以如此解释:
1)所谓沉浸感
使用户处于一个四维的虚拟世界之内,用户各种感觉器官、特别是视觉器官对虚拟世界发生适应性正向反馈。
就目前的VR眼镜来讲,主要通过两方面来达到沉浸感的目的:
- 一是通过经过放大的显示屏技术,能够在用户眼前显示出一个放大的局部虚拟时间景象,目前显示视场角在90-110度左右,在这个显示范围内,主要通过三维引擎技术,产生实时的立体图像。
- 二是通过和头部的位姿传感采集的数据配合,让三维引擎响应头部转动方向(和当前头部位置变化),以很高的频率实时改变显示的三维头像,用户头部转动的角度刚好和三维引擎模拟的三维画面视觉一致,让用户觉得放佛是通过一个大窗口 在观察一个虚拟的三维世界。
2)所谓交互作用
用户通过动作、手势、语言等人类自然的方式能够与虚拟世界进行有效的沟通。
通常来讲,用户的双手动作,双脚行走,在虚拟世界中产生用户能够理解的变化,用户就认为该虚拟世界对用户发生了反馈,那么用户的动作和虚拟世界对用户的反馈,组合在一起,就形成一次交互作用
那么主题来了,要达到目前VR眼镜所具有的沉浸互动效果,是需要有一整套软件和内容的配合。
3. 如何生成符合VR要求的虚拟世界
生成一个三维的虚拟世界,自从三维游戏诞生时,就不缺乏工具,基本可以认为,凡是具备三维构建和渲染能力的图形学引擎,都可以生成三维的虚拟图像世界,很多引擎拥有完整的游戏引擎功能,不仅仅限于图像方面,还能够产生声音,模拟物理现象等功能,这些目前还存在于世的引擎包括但不限于:
1)世界上最知名的引擎排名前十,其中包括各大游戏公司出品的引擎
- The Dead Engine,美国EA公司重制过的引擎
- Avalanche Engine,
- Mt Framework引擎,鬼泣游戏大家知道吧?就是这个做的
- Anvil引擎,UBsoft的引擎
- EGO引擎
- 寒霜引擎
- CryEngine
- IW引擎
- 顽皮狗引擎
- Unreal Engine
2)还有一堆开放源代码的渲染引擎,有兴趣的同学可以下载下来尝试下:
OGRE、Irrlicht、Panda3D、Crystal Space、jME、Blender Game Engine、Reality Factory、The Nebula Device 2、RealmForge、OpenSceneGraph
何谓引擎:
这些引擎都是基于计算机操作系统API和显卡驱动接口构建的,目的是方便上层应用开发人员快速生产内容,在引擎和操作系统之间,其实普遍还有一层中间件,基础图形接口:
在windowsPC和移动操作系统上,是directx基础图像api
在工业领域,在linux、苹果PC和IPhone上,在安卓操作系统上,是一系列OpenGL基础图形接口(移动端为opengl es,是简化的opengl版本)
几乎所有引擎都是基于上述两者或者其中之一进行构建的。
4.最主流的VR开发引擎
上述引擎由于其难易程度,功能完善度,开发成本等原因,在经历了长时间的兴衰过程后,目前最为流行和最适合开发VR内容的三大引擎为:
Unity | Unreal Engine | CryEngine |
在手机游戏爆发的时代,迅速崛起,成为开发游戏最多最为流程的引擎 ,其主要特点为: 不开源 上手容易 多平台开发容易 | 目前的unreal第四代版本大有青出于蓝之势,依然是引擎中的No.!。 其特点简单归纳为: 开放源代码 软件体系完整,不太需要额外插件。 视觉表现和功能都极为强大 上手入门不易 | 最牛逼的孤岛引擎了,其代表作在效果上,大部分人认为比unreal更强,其特点概括为: 开放源代码 编辑器强大 入门难 |
三多:插件多、资源多、文档多 | 文档不少 | 文档并不多 |
上述引擎比较,大家可以看我的另一篇文章:《目前VR游戏开发,使用Unity还是Unreal4?》
上述三种引擎对VR的支持力度如何?
上述三大引擎在不同程度上,已经内置对VR的支持
Unity | Unreal Engine | CryEngine |
内置 SteamVR插件 内置OSVR插件 | 内置SteamVR插件 内置OSVR插件 | 内置OSVR插件 |
有了上述引擎提供的SteamVR和OSVR插件原生支持,开发者无需担忧跟不上VR眼镜中功能API和设备本身的发展变化,可利用插件打造兼容不同设备的虚拟现实体验。
SteamVR插件是什么?
SteamVR 是Value公司的一个VR 游戏平台,其开源SDK 是,OpenVR,OpenVR SDK是由原本的SteamWorks SDK更新而来,其包含对几大VR设备的支持和封装,这样开发者可以不用面对具体的设备接口,而只需要面对 OpenVR SDk的统一接口了,该SDK 包含了对HTC VIVE和Oculus Rift开发者版本的支持,也包含Steam VR的控制器及定位设备的支持。相关的API是以C++实作,已有C++经验的开发人员可以直接 学习。
OSVR插件是什么
雷蛇及其合作伙伴联合创建了一个虚拟现实开放式平台:OSVR开源虚拟现实系统(Open-Source Virtual Reality)。OSVR旨在支持软件插件(Unity 3D、虚幻引擎4和英雄引擎(HeroEngine)、输入硬件(Sixsense和Leap Motion等)及其他虚拟现实的设备,包括Oculus rift DK2和Vrvana Totem。
有了上述主流引擎和专用VR插件,那么你就可以开张了,来到52VR.COM一起来学习这几个主流制作工具吧,我们会继续推出下面的链接:
1) Unity VR开发入门