HTC Vive开发学习——VRTK + SteamVR Plugin + Hover UI Kit配置

我们基于HTCVive这款VR设备来开发虚拟现实应用。VRTK和Hover UI Kit是查到的两个比较不错的VR开源项目,前者提供了实现VR游戏环境中一些基本交互功能的组件(主要是脚本),后者则提供了一种VR环境下非常友好的UI系统。这里我们讨论如何配置这一套开发环境,并演示一些范例。

1.VRTK和SteamVR Plugin配置

这个插件的配置方法可参考的资料非常多,除了Github和官网,一些网络教程写得也非常清楚。个人认为通过Github主页的Quick Start部分就可以成功实现配置了,这里不多说。但要注意,即使是VRTK这样功能丰富的插件,它的基础还是SteamVR Plugin,特别是其中的[CameraRig]预设体。可以说基于Vive开发VR应用,任何插件都离不开CameraRig。

2.Hover UI Kit配置

这个插件的配置工作比较繁琐,我在Github上看了半天的Wiki才把必需的配置挖出来。事实上,这个插件貌似没什么人用,我不论是百度还是Google都找不到太多像VRTK一样多的基础教程,能用的就只有Wiki了。好在Wiki写得足够详细,层次也足够分明,下面我们把Wiki中关于配置环境对应的部分摘出来,并稍作解释。分为以下步骤:(为了清楚地记录如何跳转到对应页面,以下直接记录跳转过程,从Wiki的Home页开始。)

(1)资源导入

页面:Home->Getting Started->Download and Import

Home页包含了关于这个开源项目的各个方面概述,大体分为:Getting Started(安装、快速设置等基础内容)、Features和Modules(各个组件介绍),每一部分还可以点进去详细阅读,这里我们先忽略细节。我们只需下载Hover-2.0.0B.zip文件就可以了。解压以后的目录包括一些Unity Package,如图:

HTC Vive开发学习——VRTK + SteamVR Plugin + Hover UI Kit配置

这里我们只需要导入Core、Input-Vive、Interface-Cast这三个包。这样包括前面的VRTK和SteamVR Plugin三个包就齐了,Unity的目录应该是这样的:(Scenes目录是我自己加的)

HTC Vive开发学习——VRTK + SteamVR Plugin + Hover UI Kit配置

(2)添加HoverKit Prefab

页面:Home->Getting Started->Quick Start->Scene Setup

 下面我们来做简单的Demo。Scene Setup介绍了两个必需的组件,分别是HoverKit Prefab和CursorRenderer。这里Wiki写得很清楚,照做就行。设置好了以后,运行场景,我们可以看见左右两组Cursor。Cursor是Hover UI Kit的核心概念,用户通过Cursor与界面元素交互,后面的Hovercast中界面元素会附着在Cursor上进行显示。

(3)设置Vive输入模块

页面:Home->Modules->Input Modules->Vive(最后的表格里)

这里的工作是将上一部分的Cursor与Vive手柄进行关联。提供了两种方法,第一种是通过Unity的多场景编辑,这种方法将多个场景叠加到Scene视图中同时编辑。个人认为这种技巧在初学的时候比较容易搞乱,因为它会修改多个场景,因此采用第二种:手动安装输入模块。这步完成后,运行场景,我们发现之前的Cursor附加在了手柄上,并能够跟随手柄移动。我们可以看到Hover UI Kit的这种设计思路,将一个通用的交互模式放到不同的设备上实现。至少在Vive手柄上看来,这些Cursor操作起来应该还是很容易的。

(4)使用Hovercast界面

页面:页面:Home->Modules->Input Modules->Vive(最后的表格里)->Cursors:Hovercast

内容仍然足够详细,照做就好。这里我们终于体验到了Hover UI Kit使用Cursor进行界面元素操作的方式,并且还可以设置使用的Cursor。后面我们会详细研究如何设置这些内置脚本的参数,来达到VR应用中一个最优的交互体验。

最后,我们将VRTK和Hover UI Kit在一个场景中结合起来。在刚才的场景中,给CameraRig组件添加VRTK_ControllerEvents脚本,并将Pointer Toggle Button属性改成Trigger,这个脚本负责处理Vive手柄的按键;给Controller(right)子物体添加一个VRTK_SimplePointer脚本,这样按下右手扳机即可发射一条射线。在场景中添加几个Cube用来检测射线碰撞,运行场景效果如下:

HTC Vive开发学习——VRTK + SteamVR Plugin + Hover UI Kit配置HTC Vive开发学习——VRTK + SteamVR Plugin + Hover UI Kit配置

后续我们将详细地学习如何使用这两个工具。从功能上来说,VRTK的功能主要基于说并按键,而Hover UI Kit的功能主要基于附加在手柄上的几个Cursor,因此二者结合使用似乎不会出现因为耦合产生的问题。不过Github上似乎有一个Issue来专门讨论这个问题,如果上述的问题真的存在,那么我们只能从脚本代码出发,来探究将二者结合的方案了。


参考文献:

1. VRTK:https://github.com/giveaphuk/SteamVR_Unity_Toolkit

2. Hover-UI-Kit:https://github.com/aestheticinteractive/Hover-UI-Kit