VR技术原理分析,【VR原理入门理论篇】
VR技术原理分析,【VR原理入门理论篇】,学习研究VR技术必须要了解的理论知识。
目录
1. VR沉浸感和交互作用产生的原理:
2. 关于沉浸感和交互作用的定义
3. 如何生成符合VR要求的虚拟世界
4.最主流的VR开发引擎
1. VR沉浸感和交互作用产生的原理:
在之前,我们观看一个虚拟的创造内容是通过平面显示器的,在其中,你会看到很多10年前的虚拟现实装备,他们基本是平面显示器,或者将产生的画面投影到一个弧形甚至是球形屏幕上;或者在这些屏幕上叠加左右眼分别的图像,从而产生更加立体的效果。
而这类装置往往很大型,也很昂贵。
而近几年发展起来的VR头戴显示器,则达到了更好的使用效果:更好的沉浸感和更便宜的价格,目前一套主流的VR眼镜是不到1万元RMB的。
这种VR眼镜能够达到更好的沉浸感的原理是什么呢?
![](/assets/blank.gif)
我们看到,VR眼镜,主要通过三方面来达到沉浸感的目的:
![](/assets/blank.gif)
1)通过凸透镜来放大人眼看到的即时图像范围,现在的VR眼镜大概会产生90-120度范围的图像视野,这样的视野大概和一个良好的三通道环幕投影系统产生的效果差不多,不过VR眼镜要更加贴近人眼一些,人眼被干扰的可能性大大降低
![](/assets/blank.gif)
2)通过头部的陀螺仪,当人转动头部时,陀螺仪能够及时的通知图像生成引擎,及时的更新画面,从而使人感觉到,自己是在看一个环绕的虚拟空间,从而产生360度的三维空间感。
![](/assets/blank.gif)
3)左右眼每一时刻看到的图像是不一样的,是两幅区别左右眼位置的不同头像,从而产生很强烈的立体纵深感。
以上三个原因,就是VR眼镜的沉浸特点。
![](/assets/blank.gif)
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的支持力度如何?
上述三大引擎在不同程度上,已经内置对VR的支持;
Unity | Unreal Engine | CryEngine |
内置 SteamVR插件 内置OSVR插件 |
内置SteamVR插件 内置OSVR插件 |
内置OSVR插件 |
有了上述引擎提供的SteamVR和OSVR插件原生支持,开发者无需担忧跟不上VR眼镜中功能API和设备本身的发展变化,可利用插件打造兼容不同设备的虚拟现实体验。
teamVR插件是什么?
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插件,那么你就可以开始学习VR开发了。
转载自:VR观察网
VR技术原理分析,【VR原理入门理论篇】相关推荐
- VR技术·上|有关VR的“灵魂拷问”
NSR (NeXT SCENE Research) 位于纽约哥伦比亚大学创业实验室,是最专业和先锋的沉浸式体验报道媒体和社群.致力于促进艺术和新技术融合,打破传统剧场舞台的边界,探索未来体验式娱乐的发 ...
- hidl 原理分析_AIDL原理分析
季春初始,天气返暖,新冠渐去,正值学习好时机.在Android系统中,AIDL一直在Framework和应用层上扮演着很重要的角色,今日且将其原理简单分析.(文2020.03.30) 一.开篇介绍 1 ...
- [web安全原理分析]-XEE漏洞入门
前言 1 前言 XXE漏洞 XXE漏洞全称(XML External Entity Injection)即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致 ...
- 计算机VR技术基础知识,VR的技术基础知识是什么?
Vr很多人都知道,vr技术对于第一次接触的人而言,的确是非常新潮的事物,很多人都想知道vr到底是什么原理制作出来的,可以达到高度的逼真化呢,实际上这也是需要专业人士进行制作的,包括VR设备还有VR的影 ...
- ES搜索(ElasticSearch)入门理论篇
ElasticSearch理论篇 SQL查询方式 ES相关知识 聊聊Doug Cutting 什么是Lucene 什么是Nutch 演变 Lucene和ES搜索的关系 ES概述 使用者 对比 ES搜索 ...
- SSClone非ARP会话劫持原理分析-ARP原理
前两天买的过期杂志上看到的一款软件,刚开始还没注意,后来就恨自己杂志买晚了.(今年3月份的<黑客(利用系统安全漏洞对网络进行攻击破坏或窃取资料的人)防线>) 那个神奇的软件,就像我标题上说 ...
- 【JVM系列3】方法重载和方法重写原理分析,看完这篇终于彻底搞懂了
深入分析Java虚拟机中方法执行流程及方法重载和方法重写原理 前言 思考 栈帧 局部变量表(Local Variables) 操作数栈(Operand Stacks) 动态连接(Dynamic Lin ...
- 【夯实Kafka知识体系及基本功】分析一下生产者(Producer)实现原理分析「原理篇」
kafka概述 定义 Kafka是一个分布式的基于发布/订阅模式的消息队列(message queue),主要应用于大数据的实时处理领域. 消息队列 传统的消息队列&新式的消息队列的模式 上面 ...
- RAID技术详细解答之一:入门基础篇
本文所要讲解的RAID技术起初主要应用于服务器高端市场,但是随着个人用户市场的成熟和发展,正不断向低端市场靠拢,从而为用户提供了一种既可以提升硬盘速度,又能够确保数据安全性的良好的解决方案.IDE 磁 ...
最新文章
- 异常检测算法:Isolation Forest
- mysql min函数 结果全为null_MySQL ----- 聚集函数(AVG,SUM,COUNT,MIN,MAX) (十一)
- ASP.NET MVC应用程序展示RDLC报表
- android studio资产目录,在Android Studio中设置单元测试的自定义资产目录
- 高速缓存系统之redis c++使用实例
- 用一个demo理解一下Flutter动画内部的代码流程
- 实验室之函数计算专场,完成任务,领精美好礼!
- 记一次kubect init初始化端口占用问题
- 2019大疆PC软件开发笔试——开关和灯泡两个电路板
- POJ 2398 Toy Storage
- 解决:springcloud 启动 config-client 报错:... .integration.config.HandlerMethodArgumentResolversHolder
- GIL线程全局锁 协程
- html5 canvas简易时钟
- Fujitsu DPK8310Tax 打印机驱动
- 用Regedit命令控制注册表
- 服务器网卡信息BIOS中设置,bios设置如何关闭网卡
- AndroidStuodio编译失败报错:Entry name ‘assets/sm2/t.jks‘ collided解决方案
- Synchronized 用法总结
- ECCV2018论文,以及相关比赛地址
- 人工蜂群算法python_人工蜂群算法简介与程序分析
热门文章
- 我的贴片芯片维修生涯第一篇
- 上海大学计算机学院2021预推免,上海大学计算机工程与科学学院(专业学位)软件工程保研...
- 【5G NR】CSI框架—报告配置
- vant list组件使用的坑
- php 设置文件过期时间,BAE 指定文件格式设置过期时间
- USB硬件 键盘鼠标控制器 Lao-UKM V3.1 易语言串口通讯简单例子
- 全国医师定期考核光盘试题
- windows 2022IE浏览器证书安全访问解答和理解
- 软件设计架构之DDD,SOA,原始,REST,Actor,CQRS
- 【算法专题】开关问题