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

  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)还有一堆开放源代码的渲染引擎,有兴趣的同学可以下载下来尝试下
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开发入门
2) Unreal Engine VR开发入门
3) CryEngine VR开发入门

虚拟现实,VR入门,VR开发,VR原理
本文转自:52VR.com  VR基础 http://www.52vr.com/article-661-1.html

VR原理讲解及开发入门相关推荐

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

    本文转自:http://www.52vr.com/article-661-1.html 本文是作者obuil根据多年心得专门为想要入门的VR开发者所写,由52VR网站提供支持.   1. VR沉浸感和 ...

  2. OAuth的机制原理讲解及开发流程

    http://kb.cnblogs.com/page/189153/ 转载于:https://blog.51cto.com/tianceguodong/1670869

  3. 网站的工作原理:网络开发新手(或任何人)入门

    网站的工作原理:网络开发新手(或任何人)入门 如果您刚接触Web开发,您认为自己知道网络的工作原理 - 至少在基本层面上. ...但是,当您尝试解释一个网站为什么出现空白. 什么是IP地址? &quo ...

  4. VR技术原理分析,【VR原理入门理论篇】

    VR技术原理分析,[VR原理入门理论篇],学习研究VR技术必须要了解的理论知识. 目录 1. VR沉浸感和交互作用产生的原理: 2. 关于沉浸感和交互作用的定义 3. 如何生成符合VR要求的虚拟世界 ...

  5. 【入门学习二】基于 FPGA 使用 Verilog 实现蜂鸣器响动的代码及原理讲解

    目录 一.知识了解 二.模块设计 三.程序实现 四.管脚配置及结果展示 五.写给小白看的 上一篇博文:[入门学习一]基于 FPGA 使用 Verilog 实现按键点灯代码及原理讲解 功能描述:通过前面 ...

  6. 微信小游戏开发教程-2D游戏原理讲解

    微信小游戏开发教程-2D游戏原理讲解 原理 为了更加形象的描述,这里先上一张图: 背景 a. 首先,我们看到背景好像是一张无限长的图片在向下移动.实际则不然,这是一张顶部和底部刚好重叠的图片.这是一种 ...

  7. 大齐玩转微信公众账号系列(四):微信公众账号开发入门(原理)

    本系列属作者原创,请尊重作者的劳动成果,转载请注明出处 , 谢谢! 我的博客地址:[url]http://blog.csdn.net/qicong7[/url] [b][color=red][size ...

  8. afn原理 ios_IOS开发入门之iOS面试题- AFN2.x为什么添加一条常驻线程?

    本文将带你了解IOS开发入门iOS面试题- AFN2.x为什么添加一条常驻线程?,希望本文对大家学IOS有所帮助. 1.AFN2.x为什么添加一条常驻线程? AFN2.0里面把每一个网络请求的发起和解 ...

  9. IOS开发入门之Xcode使用教程详细讲解(全)

    摘要:本次的IOS开发入门学习中,Xcode使用教程详细讲解是本文要介绍的内容,Xcode是一个款强大的IDE开发环境,就像你在写Windows程序时需要VS2005一样 需要要Xcode为你写Mac ...

最新文章

  1. 检查Bash数组是否包含值
  2. python在中小学教学中的应用-小学信息技术教学中进行Python 编程语言教学的策略...
  3. anaconda中gurobi下载_Anaconda是什么?Anconda下载安装教程 - python基础入门(16)
  4. 下岗职工_下岗后我如何获得多位软件工程师的面试
  5. LeetCode 1562. 查找大小为 M 的最新分组
  6. 冲上热搜!8次手术没有倒下,截肢少年考出684分!清华发声
  7. 录制完脚本怎么做接口自动化测试_快速构建轻量级接口自动化框架
  8. 应用安全 - 代码审计 - Python
  9. 数字图像处理(4)——图像复原
  10. 如何创建(设置)一个可以开发微信小游戏的appid
  11. Linux系统网络环境配置(初学者必看)!!
  12. MySQL学习笔记——第3章 数据表的管理和表中数据操纵
  13. IBM OMNIBUS INSTALL
  14. 计算机三级应该学什么条件,计算机三级报名条件
  15. web端网页qq好友 qq空间 微信 微博分享
  16. Express WEB 应用开发框架-姜威-专题视频课程
  17. 大数据分析AI和机器学习在医疗行业的应用
  18. Linux查看文件字节数、行数、大小【shell获取文件行数、字节数】
  19. 认识 Fuchsia OS
  20. 伪元素实现hot层级图标

热门文章

  1. 多少线程太多? [关闭]
  2. 使用PHP将HTTP标头设置为UTF-8
  3. 列表自定义的Type和BaseType参考
  4. IdentityHash as hashMap
  5. Objective-C中的复制忍者卡卡西---NSProxy
  6. SVN:This client is too old to work with working copy…解决的方法
  7. Spring Batch_官网DEMO实现
  8. portlet 与 servlet 的关系
  9. 在Tomcat上挂载预下载文件的方法
  10. Kali Linux重新支持RTL8814au芯片