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

摘要:
以上三个原因是VR眼镜的沉浸特性。OSVR插件是什么?雷蛇与合作伙伴共同创建了一个虚拟现实开放平台:OSVR开源虚拟现实系统。有了以上主流引擎和特殊的VR插件,你就可以开始创业了。来到52VR.COM学习这些主流生产工具。我们将继续推出以下链接:1)UnityVR开发简介2)UnrealEngineVR开发简介3)CryEngineVR开发介绍

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

本文是作者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眼镜来讲,主要通过两方面来达到沉浸感的目的:

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

 

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

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

 
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 2、RealmForge、OpenSceneGraph
 
何谓引擎:
 

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

在windowsPC和移动操作系统上,是directx基础图像api

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

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

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

,其主要特点为:

不开源

上手容易

多平台开发容易

 
 

目前的unreal第四代版本大有青出于蓝之势,依然是引擎中的No.!。

其特点简单归纳为:

开放源代码

软件体系完整,不太需要额外插件。

视觉表现和功能都极为强大

上手入门不易

最牛逼的孤岛引擎了,其代表作在效果上,大部分人认为比unreal更强,其特点概括为:

开放源代码

编辑器强大

入门难

三多:插件多、资源多、文档多文档不少文档并不多
上述引擎比较,大家可以看我的另一篇文章:《目前VR游戏开发,使用Unity还是Unreal4?
 
上述三种引擎对VR的支持力度如何?
上述三大引擎在不同程度上,已经内置对VR的支持
 
UnityUnreal EngineCryEngine
内置 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开发入门
2) Unreal Engine VR开发入门
3) CryEngine VR开发入门
 

免责声明:文章转载自《[转]VR原理讲解及开发入门》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Spring Security中的MD5盐值加密VUE学习笔记--基础标签下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

[UE4]从零开始构建VR角色

一个工程是不是VR,并没有什么特别的地方,原则上任何工程都可以在VR设备下展示 一、新建一个名为“VRPawnBase”的Pawn. 二、在VRPawnBase中添加组件“Steam VRChaperone”,VRChaperone代表的是头显,头显在动,VRChaperone也会跟着在动    三、在VRPawnBase中添加一个Camera 四、把VR...

小窥React360——用React创建360全景VR体验

前言    混迹VR届的发烧友兼开发者们一定不要错过这款FaceBook推出的跨端VR开发框架——React360,称为360全景体验框架更为准确,因为其前身是FaceBook和Oculus2017年发布的一个叫作“Racet VR”的JS库,用来在web端创建3D和VR体验。后来Oculus使用该框架的原生C++版本构建自己部分应用,随着时间推移,由于要...

使用Unity实现VR中在黑板上写字(初级篇)

一、工具 1.开发用的是Unity 5.6.2版本 2.VR中的物理交互用的是VRTK插件,这个插件集成了比较好的物理交互功能; 3.HTC Vive 二、概述 实现的功能: 在一个白板上,用不同颜色的笔,在白板画出任何想要的图形; 因为只是一个初级篇所以只是用两个脚本简单的实现,而且并没有黑板擦等功能 ,也不能两个笔同时画画,这些功能将会在未来的升级篇...

记录一款Unity VR视频播放器插件的开发

效果图## 先上一个效果图: 背景 公司最近在做VR直播平台,VR开发我们用到了Unity,而在Unity中播放视频就需要一款视频插件,我们调研了几个视频插件,记录两个,如下: Unity视频插件调研 网上搜了搜,最流行的有以下两款Unity插件: AVPro 这个在Unity商店售价150$,最新release版本为1.6.15,功能包括: Power...

使用Unity实现VR中在黑板上写字(升级篇)(一)-----解决画笔穿透画板的问题

一、概述: 在使用Unity实现VR中在黑板上写字(初级篇)中的最后留下了一些有待完善的地方,首先完善画笔穿透画板的问题; 在之前使用画笔会出现这种情况: 可以看到画笔是穿透了画板,这样在VR中会给用户很差的体验,而且因为代码的原因会造成画的过程中中断,所以这个问题必须解决; 解决后的使用情况: 可以看到现在不会穿透了,而且画起来不会有中断,其实我的手...

使用Unity实现VR中在黑板上写字(升级篇)(二)----- 加入黑板擦

黑板擦的功能其实和画笔是一样的,只是黑板擦设置的颜色是画板最原始的颜色,而笔设置的是其他的颜色。 所以最大的不同时,当手柄握住黑板擦时和握住笔时的函数实现是不一样的;实现这个功能之后,黑板擦的擦掉功能将在后续的篇章中和画笔一起完成; 可以看到不管黑板擦以什么角度开始靠近画板,最终这个黑板擦一定是和画板平行的; 先看看画板的坐标系: 再看看黑板擦的坐标系...