Unity加入了一些对VR的内置的支持,但是只针对几种特定的VR设备。这个指南会专注于Oculus 系列的VR设备, 特别是 Oculus Rift Development Kit 2 (DK2 ) 和 消费者版本的Gear VR(一种手机外设,需要三星Galaxy s6, s6 Edge, s6 Edge+, 或者 Note 5)。也许以后会有关于Note 4的内容,但是暂时不涉及。
其他 VR 头戴设备也能运行unity的项目,例如HTC Vive。如果将来新加入的一些VR平台的话,这个文档也会更新。
虽然这些内容对所有VR头戴设备都适用,但是请仔细阅读VR设备生产商的手册获取更多详细内容。
在Unity中启用VR
请确认你已经安装了 Oculus runtime 0.8 和 Unity 5.3 以上的版本。
开启VR功能:Edit > Project Settings> Player > Other Settings > Rendering
然后在检查器面板(Inspector)把“Virtual Reality Supported”勾选上。
运行时,这个选项可以用UnityEngine.VR.VRSettings.enabled 属性获取到,显示如下
[csharp] view plain copy
-
using UnityEngine;
-
using UnityEngine.VR;
-
-
public class ToggleVR : MonoBehaviour
-
{
-
//Example of toggling VRSettings
-
private void Update ()
-
{
-
//If V is pressed, toggle VRSettings.enabled
-
if (Input.GetKeyDown(KeyCode.V))
-
{
-
VRSettings.enabled = !VRSettings.enabled;
-
Debug.Log("Changed VRSettings.enabled to:"+VRSettings.enabled);
-
}
-
}
-
}
在Unity中预览VR
打开Unity的VR功能,连接好DK2(Oculus),进入Play Mode,这时就会在DK2 上显示游戏画面了,Editor里也会显示。这种模式大大加快了调试,不用打包成可执行文件再装到VR里去看我们修改的效果。创建了VR内容的开发者会注意到,并排的图像已经代替了单独的图像。
请注意,并不需要为了每只眼睛都创建一个摄像机,每个摄像机都会用VR模式进行渲染,除非那些指定了Render Texture (渲染纹理)的摄像机。关于Render Texture (渲染纹理)的更多信息,请查看手册。为了降低每个摄像机的渲染成本,已经进行了一些优化,例如,一次为两个眼睛同时做裁切和阴影渲染。
在Unity中开发VR的硬件和软件的需求
因为VR是一种新型多媒体设备,在写本文的时候有一些硬件和软件上的限制,在下面大概描述一下。
硬件
达到相应的帧数对于一个好的VR体验是很关键的,而且这个刷新速率需要和头戴设备的屏幕相一致。在DK2 上,这个值必须是75fps,在Gear VR上,刷新速率必须是60fps。如果刷新速率比这个低,用户会有明显的感觉,很容易晕。
除了要达到稳定的帧数,同时GPU需要足够强力来支持VR设备的分辨率。在DK2上,需要75HZ,1920×1080。请记住如果你要在Oculus Rift(CV1)上开发,你将面临更苛刻的条件,这个设备需要90hz 和 2160 × 1200的分辨率。
如果你正在用DK2, 请确认请确定你的电脑硬件能够同时满足分辨率和刷新频率两个需求。很多笔记本用一个芯片来切换独立显卡和集成显卡,不过这些芯片一般都不能支持1920 ×1080 分辨率下 跑到75hz,会导致不好的VR体验甚至眩晕。请参考Oculus的文档和Oculus PC 指南看有哪些能支持的硬件。(https://support.oculus.com/hc/en-us/articles/201835987-Oculus-Rift-Development-Kit-2-FAQ)
软件
OS X:现在在OS X 10.9+ 的系统上是可以运行Oculus 0.0.5 runtime 的, 但是,Oculus 已经暂停了对于OS X 的开发, 用Unity做原生VR开发的话,我们建议用Windows。
Windows:Win7,8,8.1 10,都是可以的。
Android:建议使用Lolipop5.1 或者更高。
显卡和驱动:请确保你的显卡驱动是最新的。旧的可能不支持。检查Oculus的设备设置,看看是不是支持你的驱动。
Oculus Runtime:要在Unity5.3中 使用VR设备支持的话,请使用Oculus Runtime 0.8 或者更高。
VR 示例项目
作为教程的一部分,我们准备了一个例子放在Asset Store上免费下载。这个示例项目在DK2 和Gear VR上都能运行, 而且我们会在将来为了Oculus 的硬件去更新它,也包括Oculus以外的头戴显示设备制造商。请关注Unity blog 获取最新的消息。
你可以在Asset Store 中下载这个项目来查看工程源码。
示例场景
场景主要包括:
·Intro:一个简单的介绍场景,包含一些最基本的互动。
·Menu:一个菜单场景,可以选一个小游戏来玩。
·Flyer:一个飞行游戏。
·Maze:一个桌面迷宫游戏。
·Target Gallery:一个走廊打靶游戏。
·Target Arena:一个360°的射击场景。
还有很多示例场景,大概列举一下,详细内容参见文档:
·InteractiveItem:演示了在VR中和物体互动的基本方式
·RenderScale:给一个图片添加渲染尺寸的特效。
·Reticle:在VR中添加十字线(准星)的简单示例。
·Rotation:演示当头部移动时,物体会如何表现。
·Touchpad:如何获取Gear VR 上触控板的输入。
涉及到以下几个要点:
·自上而下的桌游玩法模式
·扎进屏幕的,星际火狐类型游戏玩法
·打靶类型的游戏玩法
·360°打靶游戏玩法
·在VR上使用Unity UI
·空间立体UI
·在VR上和物体互动的基本框架,包括处理“视线悬停”和“视线移出”
·十字线(类似于准星)的移动,缩放,shader,和恢复正常
·基于头部转动的移动
·处理Gear VR 触控板事件, 包括 点击,双击,滑动,或者使用DK2时,处理键盘和鼠标事件
·为Gear VR 和 DK2 使用条件编译
·在相机围绕一个点转动时避免眩晕
·相机淡出
·相机淡出切换
·对象池
这个项目主要实现了一些VR中的概念,提供VR开发的入门,同时也提供了一些可重用的实例:
·相机淡出
·相机转场效果
·在VR中和物体互动的框架
·hold住确认的动作
·十字线的移动和缩放
·平台相关的文本
·ui指针来指示面对的方向