在本篇文章中,我们将重点介绍通过Unity3D来对HTC Vive进行基础的环境配置。
在这个系列的前几篇文章中都是为了之后的开发做准备工作。
进行VR开发的前提是你要有一套VR硬件设备,这里我们选用HTC Vive Pro专业版,其他版本的HTC Vive系列配置方法类似。
另外,VR对电脑配置的要求很高,要求大致如下:
GPU(图形卡):NVIDIA GeForce® GTX 970 / AMD Radeon™ R9 290 同等或更高配置
CPU(处理器):Intel® i5-4590 / AMD FX 8350 同等或更高配置
RAM(内存):4GB或更多
Video 视频输出:HDMI 1.4或者DisplayPort 1.2或更高版本
USB 端口:1个 USB 2.0或更高版本的端口
操作系统(OS):需要Windows7 64位、Service Pack 1或更新的Windows操作系统
一套完整的HTC Vive Pro设备包括一个头戴式显示器,两个操控手柄,两个SteamVR定位器以及各种数据线和充电插头。
硬件安装方法可以参考HTC Vive的官网下载Vive设置向导,这里就不再赘述。
在所有硬件配置完成之后,需要下载Steam和SteamVR应用程序。之后的开发需要用到SteamVR和Unity的SteamVR库。事实上,如果不使用Unity的SteamVR库依然可以开发VR应用程序,但是使用SteamVR库的最大优势是头戴式显示器之间的跨平台兼容性。在之后的部分我们将具体叙述SteamVR插件库中的内容。
现在我们要正式创建一个SteamVR Unity 3D项目。
首先,新建一个Unity3D项目,从Asset Store中下载并安装Steam VR的插件,并打开SteamVR应用。
点击Import,Unity将开始导入SteamVR资源库。
Unity的一些默认设置并不适用于SteamVR,该窗口会提示你需要更改的设置以及它们需要被更改成什么样。
根据提示点击Accept All即可自动更改项目设置。
弹出如下对话框即为导入成功。
点击OK后,之后会弹出一个对话框(如果没有可以在Window一栏中找到SteamVR Input调出)
点击Yes,将默认的**“SteamVR Input JSON”**文件以及一些常见的控制器相关绑定文件复制到当前项目的根目录下。
复制完成后,SteamVR Input窗口将读取文件信息并展示其包含的动作集合以及动作集合下的所有动作。这些操作和绑定提供了一些默认的可以帮助交互系统工作手柄手势,同时还可以自定义添加或删除手柄动作。点击 Save and generate,此时保存了你的操作并且生成了一些类用来初始化这些默认操作,并且可以在编辑器中通过SteamVR API直接访问。
同时,Assets面板中出现了两个新的文件夹:Steam和SteamVR_Resources。它们包含了所使用硬件的API、所有的代码、预制体模型以及示例。
在基础装置中,VR摄像机无疑是核心装置。
在SteamVR文件夹中找到Prefabs文件夹,在其中找到名为[CameraRig]的预制体,拖动[CameraRig]到Hierarchy面板的空白处,即将VR摄像机的组件添加到场景中。同时删掉原本存在的主摄像机MainCamera,避免与VR摄像机产生冲突。下面我们来简单介绍[CameraRig]中包含的组件。
[CameraRig]游戏对象本身包含一个名为SteamVR_PlayArea的组件,该组件允许用户在移动的区域进行蓝框绘制。
下面两个子控件Controller (left) 和 Controller (right) 类型相同,并在一定情况下可互相替代。它们在HTC Vive虚拟世界中渲染模型来显示控制器的位置。这两个游戏对象上包含一个SteamVR_Behaviour_Pose组件,用于设置转换的位置和旋转。在它们下面还各有一个叫做Model的GameObjects,它包含了SteamVR_RenderModel组件。它有几个成员包括索引、模型覆盖、着色器、详细、创建组件、动态更新用于渲染模型。
在使用时,硬件装置可以感知控制器是否连接,如果未使用控制器并不会产生任何错误。如果不使用控制器的情况下,Controller游戏对象也不会影响性能。
在之后是Camera组件,这是组成GameObject系统的主要部分。在右侧Inspector面板中点击Add Component添加组件SteamVR_Camera,Camera组件被分为了Camera(eye)、 Camera(head) 两个控件,同时 Camera(head) 还带有一个名为 Camera(ears) 的子控件。
Camera(head)包含一个名为SteamVR_TrackedObject的组件,SteamVR_Tracked对象的索引字段设置为头戴式显示器。Camera(head)游戏对象将与头戴式显示器一同移动,SteamVR_TrackedObject组件会确保摄像机装置的顶部位于正确的位置,模拟现实世界中头戴式显示器的位置。
在Camera(eye)中我们可以看到实际头戴式显示器中的虚拟世界,它与Camera(head)位置相同,类似于现实世界中头和眼睛的关系,但它拥有用于渲染视图主要部分的Camera组件。它是我们添加依赖于视图的组件的地方(比如标注图像来定位的组件或者LookAt函数),其中它包含了SteamVR_Camera组件,可以用于处理视图并将其发送到SteamVR并渲染呈现给头戴式显示器。
最后是 Camera(ears)游戏对象。它是音频接收的部分,处理场景中的听觉问题并将听到的内容传递给音响系统。它包含了一个SteamVR_Ears的组件,当使用扬声器时,它将匹配到音频监听器。利用OpenVR库中的一个属性来判断是否在使用扬声器。
以上就是全部最基础的环境配置,此时按下Play按钮并带上VR头戴式显示器便可预览场景,将手柄拿到视野中也可以看到手柄的位置。