VR原理讲解及开发入门

2023-11-16

本文是作者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)还有一堆开放源代码的渲染引擎,有兴趣的同学可以下载下来尝试下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内容的三大引擎为:
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 ViveOculus 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一起来学习这几个主流制作工具吧,我们会继续推出下面的链接:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VR原理讲解及开发入门 的相关文章

随机推荐

  • Financial Crisis【点双连通分量】

    题目链接 HDU 3749 你以为学了Tarjan会写几个边双就真的理解什么是双连通分量了吗 我原来真的不懂什么叫做点双BCC 不过这都没有关系 解决了这个问题之后 我终于知道了什么叫做点双连通分量了 这是一个绝对绝对经典的问题 首先讲一下
  • 时间序列分析 - ARMA/ARIMA参数估计及模型预测

    整体处理流程如下 平稳化处理 根据ADF单位根检验看序列是否平稳 对于非平稳序列可以进行差分 对数等等 对于得到的平稳序列需要检测是否为白噪声 如果是就没有必要再分析了 白噪声检验 1 由于白噪声序列期望为0 方差固定 因此会在y 0上下小
  • 菜鸟的java学习-------第一篇初识java

    初识Java 前言 做了快三年的C 了 对于C 没什么可说的 这门语言的效率比其他语言高上许多 但是这门语言及其难学 及其难以维护 开发成本很大 比如说java三个月能做成的项目 C 可能就要半年 甚至更长时间 基于C 的难开发 难维护的语
  • 解决Onedrive经常无法访问的问题

    在国内经常因为各种原因访问不了OneDrive的访问 可以通过下面的方式解决 添加两个DNS记录到hosts文件 C Windows System32 drivers etc 134 170 108 26 onedrive live com
  • PyTorch学习日志_20201031_线性模型

    日期 2020 10 31 主题 PyTorch入门 内容 学习如何构建线性模型解决问题 问题 学习时长 x 与考试成绩 y 的关系 学习时长 x 考试成绩 y 1 2 2 4 3 6 4 思路 具体代码如下 import numpy as
  • Qt控制台输入输出

    Qt控制台输入输出 在 pro 工程文件 中添加 CONFIG console include
  • 类模板与友元函数

    写在前面 学习黑马C 视频总结的知识点 一 类模板中全局函数类内实现 template
  • 关于差分信号

    对差分信 VDS 号而言 对其影响最大的因素是它们的对地阻抗是否一致 也就是对地平衡度 它们之间相对的阻抗影响并不特别重要 之间分布电容大了只会衰落信号强度 不会引入噪声和干扰 也就是对信噪比不会产生很大影响 差分信号只是使用两根信号线传输
  • File.Exists判断错误

    C File Exists判断错误 1 今天制作软件安装测试的时候发现一个问题 File Exists判断文件是否存在 明明这个文件是存在的 但是返回的确实false 跟踪代码发现还是这样 很是诡异 仔细看了一下接口说明才知道 如果没有权限
  • java中 ‘\b‘ 回退符的使用

    退格符 b b是退格符的意思 将光标回退一个字符的位置 可以结合空白字符使用达到类似删除的效果 1 回退符 b 后面没有内容 的情况 原样输出 回退符 b后面 没有内容 则原样输出 System out println x b x 回退符后
  • FPN(Feature Pyramid Networks)网络学习

    1 FPN在MASK R CNN中 从上图可以看到 FPN在MASK R CNN中主要是应用于Featue Maps的输出 但是FPN却不是MASK R CNN所独有的 FPN是一个独立的网络 即有无FPN都可以输出Feature Maps
  • 为什么linux kernel默认的页面大小是4K,而不是4M或8M?

    相信很多人在看内核内存管理部分的时候 都有这样一个疑问 为什么物理页面的大小选择4K 而不是大一些或者小一些呢 这个问题没有固定的答案 仁者见仁智者见智 每个人的关注点不一样 所以这篇文章不是说给出一个固定的答案 更多的只是一篇讨论性的文章
  • IDEA打开一个项目时,idea左侧project模式下,不显示项目工程目录的解决方法

    在IDEA打开一个一个已有的项目chapter3时 idea左侧project模式下 左侧也没有project按钮 如下问题截图 ps 项目结构可以显示 但是src等目录不见 在网上查了一些方法 1 解决办法 方法1 找到 出错位置 修复
  • CV01-语义分割笔记和两个模型VGG & ResNet的笔记

    目录 一 语义分割 二 VGG模型 2 1 VGG特征提取部分 2 2 VGG图像分类部分 三 ResNet模型 3 1 为什么是ResNet 3 2 1 1卷积调整channel维度大小 3 3 ResNet里的BottleNeck 3
  • Mac 使用终端彻底格式化U盘

    最近U盘不知道怎么回事中毒了 不管是格式化 还是使用DiskGenius删除分区格式化都不好使 火绒等杀毒软件也败下阵来 于是高人指点 在Mac 下 用 zero 彻底覆盖所有扇区 好用了 膜拜 学习 1 插入U盘 看当前是disk几 使用
  • Altium Designer使用-----芯片焊盘之间的距离规则设定(AD6.9)

    设计 规则 Clearance 新建新规则 PadToPad 第一对象 高级的 询问 询问构建者 条件类型 Object Kind is 条件值 Pad 确定 第二对象 高级的 询问 询问构建者 条件类型 Object Kind is 条件
  • 逻辑回归中的损失函数的解释

    1 Logistic Regression 逻辑回归 逻辑回归是机器学习中的一个非常常见的模型 逻辑回归模型其实仅在线性回归的基础上 套用了一个逻辑函数 逻辑回归可以看做是两步 第一步和线性回归模型的形式相同 即一个关于输入x的线性函数 第
  • java有趣的技术分享ppt_【干货分享】盘点2020年流行的五大Java技术

    Java作为编程语言的老大 在编程语言排行榜一直占据前三地位 受到众多编程爱好者的追捧 再加上Java语言在各个领域的开发应用和高于其他行业的薪资待遇 使它成为许多零基础学习者的首选编程语言 为了帮助更多Java初学者 下面小编就和大家分享
  • 挑战利用ChatGPT写代码,真的能成功吗?

    使用姿势 1 由于ChatGPT的注册门槛较高 国内很多网站都是付费的或者有各种限制 我在 多御浏览器 中使用 无需注册就能免费体验ChatGPT 2 使用ChatGPT4 我的问题有些口水文 但是它依然能懂 设计一个表 支持树形结构 可以
  • VR原理讲解及开发入门

    本文是作者obuil根据多年心得专门为想要入门的VR开发者所写 由52VR网站提供支持 1 VR沉浸感和交互作用产生的原理 在之前 我们观看一个虚拟的创造内容是通过平面显示器的 52VR上次发布过一篇文章 一张图让你认识VR 在其中 你会看