VR 概述

作者: _lijinglong | 来源:发表于2016-12-09 14:12 被阅读210次

个人翻译,如有不妥之处,敬请指正,共同学习,共同进步!
原文地址:VR overview

VR概述

Unity项目不需要任何的外部插件就可以将VR项目从Unity安装到虚拟现实设备中。它提供一套基础的API可以对多种设备兼容。它被设计成对新的设备和软件具有兼容性。虽然VR API被设计的很小一部分,但是对VR的扩展将不断的增加。

通过使用Unity中原生的VR支持,你会获得:

  • 每个VR设备的稳定版本
  • 一个API接口于不同的VR设备进行交互
  • 每一个设备都有一个没有外部插件的项目文件夹
  • 你的应用包含在多种设备间切换的能力
  • 提高性能(低版本的Unity引擎可以对原生设备进行优化)

开启Unity的VR支持

为你的游戏和编译器启动原生的VR支持,打开Player Settings(菜单:Edit > Project Settings > Player)。选择Other Settings然后选中Virtual Reality Supported选择框。为每个target设置VR支持。在独立的编译环境中允许支持VR不意味着同时也对安卓支持,反之亦然。

使用下图展示的虚拟现实SDKs列表的复选框为每个target添加或者移除VR设备。列表的顺序是在运行时Unity尝试启动VR设备的顺序。第一个正确初始化的设备第一个启用。这个列表的顺序与编译Player是相同的。


编译应用程序:选择启动设备

你编译的应用程序以在Other SettingsVirtual Reality SDKs列表相同的顺序来初始化和启用设备。编译时列表中没有允许的设备不允许在最后的编译中使用。没有设备相当于一个非VR应用程序(正常的Unity程序),在列表中没有它也可以切换到运行时。

在设备列表中包含None,允许你在试图初始化VR设备之前默认一个非VR的应用程序。如果你将None放到列表的顶部,应用程序启动时将禁用VR。然后,你可以通过使用VRSettings.LoadDeviceByName脚本来允许在你的列表中启用或者禁用VR设备。

如果你试图切换的设备初始化失败,Unity将一直禁用VR直到将VR设备设置成激活。当你切换设备(VRSettings.LoadDeviceByName)或者启用VR时(VR.VRSettings-enabled),编译程序会再次尝试初始化。

使用命令行启动特定设备的命令是:

-vrmode DEVICETYPE

这里的DEVICETYPE是Unity支持设备清单中的一个名字VR devices list
例如: MyGame.exe -vrmode oculus

VR被启用的时候发生了什么

当在Unity中启用了VR,会自动发生几件事:

自动渲染一个头盔式显示器

你场景中的所有相机会直接渲染头盔式显示器(HMD)。试图和投影矩阵都会自动的调整成头部追踪、位置追踪和视野。

可以使用 相机组件中的stereoTargetEye属性禁止渲染成HMD。或者,你可以使用Target Texture属性将相机渲染成贴图。

  • 使用stereo TargetEye属性将相机渲染成HMD只呈现一个特定的视野。这对于像狙击范围或者立体视频这种特殊效果来说是有用的。要达到这一点,在场景中加两台相机:一台作为左眼,另一台作为右眼。设置遮罩层来配置每只眼睛能看到什么。
自动的头部追踪输入

如果你的设备是头盔式的,头部追踪和适当的视角(FOV)会自动的适应你的相机。你可以手动设置一个特殊的视角,但是你不能直接设置相机的transform值。查看下面这个部分Understanding the Camera查看更多。
头部追踪和位置追踪是自动应用,以便定位和定向都最符合渲染框架渲染之前用户的位置和方向。给用户一个好的VR体验,不会是用户感到晕眩。

理解相机

相机的Transform是重写的头部追踪的位置。移动和旋转相机,作为其他GameObject的子对象。 这就使得相机的父对象所有的Transform改变都会影响到相机自己。也可以使用脚本来使相机移动和旋转。


可以想象的到,相机的位置和方向应该在用户视角的中心。
这事固定视角和空间追踪的不同VR体验:
  • 如果你的设备支持空间追踪体验,相机的起始位置使用户游戏空间的中点。
  • 使用固定体验,你可以通过VR.InputTracking.Recenter()重新设置相机在起始位置。
    在设备渲染时,相机会自动覆盖你在软件设置中为每个VR SDK 设置的视角。在运行的时候可以通过使用脚本为你的应用程序设置一个自定义的视角值覆盖原来的值。
  • 使用Camera.fieldOfView设置自定义视角。
编辑模式

如果你的VR设备支持Unity的编辑模式,你可以直接在编辑器中测试你的VR设备。 如果你设置了stereoTargetEye属性为左眼或者都设置了,左眼会渲染游戏视图窗口,如果你设置stereoTargeEye属性为右眼也会渲染。
这不会将左眼和右眼自动并排显示。想要并排显示游戏视图,需要创建两个相机,并且一个设置成左眼,另一个为右眼,然后设置在窗口并排显示它们。
值得注意的时在编辑器中运行是有开销的,因为Unity的IDE会渲染每个游戏画面,因此你可能会感到延迟或者画面颤抖。为了减小编辑器的开销,可以打开游戏视图并且启用Maximize on Play
可以通过Unity的分析工具来了解你的程序在编辑器运行时的性能怎么样。然而,分析工具本身也是有内存开销的。检查游戏性能的最好的方式是在你的目标平台上编译并直接运行程序。在非开发编译环境运行时可以看到最好的性能,但是为了更好的性能分析,开发环境编译允许你链接到Unity的分析器。

Unity中为VR开发推荐的硬件和软件
硬件

实现与你目标头盔显示器相似的帧率对良好的VR体验很有帮助。这就必须匹配头盔显示器的刷新帧率。如果帧率低于HMD的刷新率,会很容易显示出来并且玩家会感到眩晕。
VR设备的刷新频率:

VR Devices Refresh Rate
Gear VR 60hz
Oculus CV1 90hz
Vive 90hz
软件
  • Windows:兼容Windows7、8、8.1以及Windows10。
  • Android:安卓系统需要5.1或者更高。
  • OS X:搭载Oculus0.5.01运行时的OSX10.9 +。Oculus暂停了对OSX开发支持,因此应该在Windows中使用Unity开发原生的VR功能。
  • 显卡驱动:确保你的显卡已经更新,每个设备的驱动都应该保持最新版本,因此旧版本的驱动可能不被支持。
设备运行时的要求

每个VR设备都需要你在机器上安装适当的运行时环境。例如,开Unity中开发和运行Oculus,你需要在机器中安装Oculus的运行时环境。对于Vive来说,你需要安装Steam和Steam VR环境。

根据Unity的版本不同,Unity支持的设备的运行时版本也是不同的。你可以在版本说明中查看Unity发布的主要和次要的运行时版本。

随着版本的更新,之前的版本将不被支持。这意味着,Unity的原生VR支持,只能在新版本的运行时环境下工作,不能兼容早期版本的运行时环境。如果你想是以哦那个一个Unity发布但是已经不再支持的版本,就要禁用Native VR Support。然后你就可以使用插件或者其他的第三方插件。

相关文章

网友评论

    本文标题:VR 概述

    本文链接:https://www.haomeiwen.com/subject/ebnjmttx.html