[转]VR原理讲解及开发入门

 

本文转自:http://www.52vr.com/article-661-1.htmlhtml

 

本文是做者obuil根据多年心得专门为想要入门的VR开发者所写,由52VR网站提供支持。
 
1. VR沉浸感和交互做用产生的原理:
 
在以前,咱们观看一个虚拟的创造内容是经过平面显示器的,52VR上次发布过一篇文章《一张图让你认识VR》,在其中,你会看到不少10年前的虚拟现实装备,他们基本是平面显示器,或者将产生的画面投影到一个弧形甚至是球形屏幕上;或者在这些屏幕上叠加左右眼分别的图像,从而产生更加立体的效果。
而这类装置每每很大型,也很昂贵。
 
而近几年发展起来的VR头戴显示器,则达到了更好的使用效果:更好的沉浸感和更便宜的价格,目前一套主流的VR眼镜是不到1万元RMB的。
 
这种VR眼镜 可以达到更好的沉浸感的原理是什么呢?

221205hhs7jiqziit8ls8k

咱们看到,VR眼镜,主要经过三方面来达到沉浸感的目的:
 

190802wi70spi4g7646785

1)经过凸透镜来放大人眼看到的即时图像范围,如今的VR眼镜大概会产生90-120度范围的图像视野,这样的视野大概和一个良好的三通道环幕投影系统产生的效果差很少,不过VR眼镜要更加贴近人眼一些,人眼被干扰的可能性大大下降。

221326sn5tccljtq8rn95n

2)经过头部的陀螺仪,当人转动头部时,陀螺仪可以及时的通知图像生成引擎,及时的更新画面,从而令人感受到,本身是在看一个环绕的虚拟空间,从而产生360度的三维空间感。

221326wkqjpdvev9qmvzdv

3)左右眼每一时刻看到的图像是不同的,是两幅区别左右眼位置的不一样头像,从而产生很强烈的立体纵深感。
以上三个缘由,就是VR眼镜的沉浸特色。

185306ucp1ljbljclxrlxm

 
 
2. 关于沉浸感和交互做用的定义
 
对于这两个名词的定义,我认为大概能够如此解释:
1)所谓沉浸感
 
使用户处于一个四维的虚拟世界以内,用户各类感受器官、特别是视觉器官对虚拟世界发生适应性正向反馈。
 

就目前的VR眼镜来说,主要经过两方面来达到沉浸感的目的:linux

  1. 一是经过通过放大的显示屏技术,可以在用户眼前显示出一个放大的局部虚拟时间景象,目前显示视场角在90-110度左右,在这个显示范围内,主要经过三维引擎技术,产生实时的立体图像。
  2. 二是经过和头部的位姿传感采集的数据配合,让三维引擎响应头部转动方向(和当前头部位置变化),以很高的频率实时改变显示的三维头像,用户头部转动的角度恰好和三维引擎模拟的三维画面视觉一致,让用户以为放佛是经过一个大窗口 在观察一个虚拟的三维世界。

 

 
2)所谓交互做用
 
用户经过动做、手势、语言等人类天然的方式可以与虚拟世界进行有效的沟通。
一般来说,用户的双手动做,双脚行走,在虚拟世界中产生用户可以理解的变化,用户就认为该虚拟世界对用户发生了反馈,那么用户的动做和虚拟世界对用户的反馈,组合在一块儿,就造成一次交互做用
 
 
 
 
那么主题来了,要达到目前VR眼镜所具备的沉浸互动效果,是须要有一整套软件和内容的配合。
 
 
3. 如何生成符合VR要求的虚拟世界
 

生成一个三维的虚拟世界,自从三维游戏诞生时,就不缺少工具,基本能够认为,凡是具有三维构建和渲染能力的图形学引擎,均可以生成三维的虚拟图像世界,不少引擎拥有完整的游戏引擎功能,不只仅限于图像方面,还可以产生声音,模拟物理现象等功能,这些目前还存在于世的引擎包括但不限于:windows

 
1)世界上最知名的引擎排名前十,其中包括各大游戏公司出品的引擎
  1. The Dead Engine,美国EA公司重制过的引擎
  2. Avalanche Engine,
  3. Mt Framework引擎,鬼泣游戏你们知道吧?就是这个作的
  4. Anvil引擎,UBsoft的引擎
  5. EGO引擎
  6. 寒霜引擎
  7. CryEngine
  8. IW引擎
  9. 顽皮狗引擎
  10. Unreal Engine
 
2)还有一堆开放源代码的渲染引擎,有兴趣的同窗能够下载下来尝试下18
OGRE、Irrlicht、Panda3D、Crystal Space、jME、Blender Game Engine、Reality Factory、The Nebula Device 二、RealmForge、OpenSceneGraph
 
何谓引擎:
 

这些引擎都是基于计算机操做系统API和显卡驱动接口构建的,目的是方便上层应用开发人员快速生产内容,在引擎和操做系统之间,其实广泛还有一层中间件,基础图形接口:api

在windowsPC和移动操做系统上,是directx基础图像api编辑器

在工业领域,在linux、苹果PC和IPhone上,在安卓操做系统上,是一系列OpenGL基础图形接口(移动端为opengl es,是简化的opengl版本)工具

 
几乎全部引擎都是基于上述二者或者其中之一进行构建的。
 
 
 
4.最主流的VR开发引擎
 
上述引擎因为其难易程度,功能完善度,开发成本等缘由,在经历了长时间的兴衰过程后,目前最为流行和最适合开发VR内容的三大引擎为:
 
 
Unity Unreal Engine CryEngine

在手机游戏爆发的时代,迅速崛起,成为开发游戏最多最为流程的引擎学习

,其主要特色为:网站

不开源ui

上手容易spa

多平台开发容易

 
 

目前的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一块儿来学习这几个主流制做工具吧,咱们会继续推出下面的连接:
 
相关文章
相关标签/搜索