近期,Unity VR框架VRTK推出Version 4 Beta版。据悉,Version
4在原版基础上进行了大量改动,比如:更加模块化、提供更多跨硬件支持,理论上讲未来甚至还能支持Unreal引擎。

本文是我的视频教程《HTC
VIVE交互开发实例教程》的节选文字版,更多VRTK实例教程可参见蛮牛教育首页

本文是我的视频教程《HTC
VIVE交互开发实例教程》的节选文字版,更多VRTK实例教程可参见蛮牛教育首页

VRTK是个很好用的使用Unity开发Steam
VR的工具集,感谢开发者团队在其中做了很多非常棒的工作。其官方文档对插件中的Scripts、Prefabs都做了很详细的介绍。对于插件中的所有例子,官方还做了视频放在了Youtube上。美中不足的是,对每个示例场景的分析不是很详细,这里对每个示例场景做一个比较详细的剖析,一遍掌握其中的用法。先做一下搬运工,以官方文档的内容开头:

在GDC
2019上,VR动捕公司OptiTrack演示了一款B端追踪技术,它能够实现对数百个目标的实时与准确追踪。对于线下VR应用场景,OptiTrack也将提供一系列外设和工具(包括StemVR插件),可用于追踪Oculus
Rift和HTC Vive头显、人和道具。

奥门蒲京赌场网址 1

欢迎来到VRTK

这个工具包提供了很多在Unity3d做VR开发中通用的VR功能,主要包括:

  • 具有别名的控制器按钮事件
  • 控制世界指针(激光指针)
  • 玩家瞬间转移
  • 使用控制器抓起/握住物体
  • 使用控制器与物体交互
  • 把游戏物体变成交互式的UI元素

奥门蒲京赌场网址 2

据青亭网了解,VRTK是一款开源框架,它为开发应用和游戏交互的开发者提供了简化的开发流程,省去从头编写代码的过程。该框架中自带的交互功能包括:攀爬、全新的抓取机制和箭术。

奥门蒲京赌场网址 3

奥门蒲京赌场网址 3

这里有什么

这个工具集主要分成三个部分:

  • Prefabs – VRTK/Prefabs/
  • Scripts – VRTK/Scripts/
  • Examples – VRTK/Examples/

所有相关的文件都存放在VRTK这个文件夹里面,这个文件夹可以拷贝到现有工程中。Examples文件夹包含了该工具集中的示例场景。

OptiTrack还展示了一款模块化追踪装置,其包含了25颗摄像头,可实时追踪140个物品,其中大多数物品是订制的巨型积木(每一块都被分开追踪),VR头显、手套等设备也分别被追踪。

Version 4现在支持包含简单脚本的prefab,而且也不像Version
3一样常常需要自定义代码才能实现简单的任务,它的模块性大大简化了开发压动式枪机等交互的过程。同时,Version
4的模块性也意味着它在未来也能支持AR设备。

从这里开始

  • 克隆这个代码库 git clone
    https://github.com/thestonefox/SteamVR\_Unity\_Toolkit.git
  • 使用Unity3d打开SteamVR_Unity_Toolkit
  • 从Unity Asset Store下载并导入SteamVR插件
  • 浏览Examples中的场景可以查看脚本的示例用法

在大会上,体验者佩戴HTC Vive
Pro头显和OptiTrack追踪外设体验了一把用无线VR玩积木的内容。据悉,OptiTrack系统在仅有一个可见标记的情形下依然能够准确追踪物体,除了是因为其搭载多个摄像头,也是因为其内置的IMU,这种方式能够大大降低遮挡。

此外,VRTK还推出了更完整的全新教学指南:VRTK Academy。

一、什么是VRTK

VRTK全称是Virtual Reality Toolkit,前身是SteamVR
Toolkit,由于后续版本开始支持其他VR平台的SDK,如Oculus、Daydream、GearVR等,故改名为VRTK,它是使用Unity进行VR交互开发的利器,以二八原则来看,开发者可以使用20%的时间完成80%的VR交互开发内容。这一点从这个工具的Github简介上就能印证:

A productive VR Toolkit for rapidly building VR solutions in
Unity3d.

下图是VRTK的作者在Twitter上分享的一张图片,我在这里中将它做了翻译。作者使用了黄金思考圈的方式告诉大家:为什么开发VRTK,采用什么方式,以及VRTK是什么。

奥门蒲京赌场网址 5

VRTK的配置是使用该套工具集进行开发的第一步,本文以Asset
Store版VRTK作为演示,最新版本为3.2.1,配置过程如下:

示例分析

Examples文件夹包含了所有的示例场景,用来说明脚本和prefab的用法。该文件夹中还有一个/Resources/Scripts文件夹,其中包含了示例场景中实现特定功能使用的帮助脚本,例如事件监听器。这些脚本在实际项目中没必要用。

下面开始进入主题:

奥门蒲京赌场网址 6

关于此次VRTK大改的原因,其开发者Harvey
Ball解释,因为其基于SteamVR插件,如果SteamVR插件得到重大更新,VRTK就会失效,如此一来硬件将需要更加复杂的抽象层才能支持VRTK。

二、VRTK能做什么

VRTK能实现VR开发中大部分交互效果,开发者只需要挂载几个脚本,然后设置相关的属性,就能实现我们想要的功能,下面列出我总结的一部分能实现的VR功能:

  • 支持SteamVR、Oculus、Daydream等SDK
  • VR模拟器,不需要VR硬件即可调试
  • 基于头盔和手柄的激光指针
  • 基于头盔和手柄的曲线指针
  • 游玩区域光标
  • 指针交互
  • 可以为物体设置拖放区域
  • 多种移动方式:瞬移、Dash Movement、Touchpad Movement、Move in
    place/Run in place Movement
  • 攀登
  • 物体交互:Touching、Grabbing 、Using
  • 双手联动操作物体:缩放、冲锋枪等需要双手持握的物体
  • 物体高亮
  • 手柄震动反馈
  • 手柄效果: 高亮, 透明, 隐藏
  • 预制常见物体的交互方式:按钮、杠杆、 门、抽屉、 滑动条、把手
  • 面板菜单、环形菜单
  • 使用指针与UGUI进行交互
  • 对UI元素进行拖拽

  • VRTK通过事件驱动进行相应的交互开发,对于手柄发送的各种事件,使用VRTK_Controller_Event脚本,这是在配置过程中首先要挂载到手柄控制器上的脚本。另外,对于其它的交互事件,也会提供相应的unity事件处理,比如VRTK_BasicTeleport_UnityEvents(瞬移事件处理)、VRTK_InteractGrab_UnityEvents(抓取事件处理)、VRTK_InteractTouch_UnityEvents(触摸事件处理),对于各事件发生的不同阶段,都会有对应的处理接口,类似于uGUI中Button的OnClick事件处理形式。当然,你也可以通过代码进行手动添加事件处理函数。
  1. 新建一个unity项目。

  2. 导入SteamVR Plugin,在弹出的SteamVR Setting对话框中选择”Accept
    All”。

001_CameraRig_VR_PlayArea 相机配件与VR游戏区域

这个简单的场景说明了[CameraRig]Prefab的用法。(官方解释到此为止)
这个Prefab是SteamVR自带的,位于SteamVR文件夹下面的Prefabs中。建好场景之后,直接加到场景中,无需其他操作。运行程序之后,从头盔中就可以看到两个控制器手柄。无须赘述。
[CameraRig]Prefab的结构如下图,很好理解,一个头盔,两个手柄,可以分出左右手。

奥门蒲京赌场网址 7

CameraRig

为了展示OptiTrack的追踪效果,工作人员将积木摆成多米诺的形式,尽管在VR头显中看起来像是计算机渲染的物理模拟,实际上并没有使用物理计算,这种效果仅靠动作捕捉就能实现。

为了重新开发VRTK,Harvey曾经尝试过Kickstarter众筹、Patreon赞助,甚至向Valve申请赞助未果。后来他在2017年自掏腰包进行开发,依然没能成功,甚至想要放弃。在2018年1月的时候,Oculus联系他,表示愿意无条件支持其开发6个月,就这样Version
4诞生了。

三、为什么选择VRTK?

1. 免费开源
由于VRTK的开源性质,一方面,开发者可以深入到代码中去,查看它如何与原生SDK进行交互,是一个很好的学习工具;另一方面,开发者可以根据自己的项目需求,修改其中的代码,快速开发符合自己需要的功能。
VRTK源代码托管于Github,在Unity Asset
Store上以插件包的形式提供免费下载,对应地址分别为:

Github:https://github.com/thestonefox/VRTK
Asset
Store:https://www.assetstore.unity3d.com/en/\#!/content/64131

使用两种版本的优缺点:
Github版:优点是能够比较早的接触到新版本的新功能;缺点是,新功能由于缺少足够的测试,会存在不稳定的问题。
Asset
Store版:
优点是稳定,经过了足够的测试才会上架;缺点是由于商店审核周期的原因,版本更新会有一定的滞后性,多数情况下是有了大版本更新以后才会考虑上架。

2. 丰富的文档支持
相对于SteamVR少得可怜的说明文档,VRTK的文档多达二百多页,细化到每个函数和参数的作用及使用方法。并且,在挂载了脚本的属性面板中,鼠标悬停即可显示当前属性的说明,通过这些文档的支持,使得开发者能够在开发过程中比较顺利地使用这个工具集合提供的各项功能。

奥门蒲京赌场网址 8

挂载了VRTK脚本的属性面板.png

奥门蒲京赌场网址 9

源代码注释

3. 40+个示例场景
作者在文件包中提供了40多个示例场景,针对不同的功能分别作为展示,保证开发者在极短时间内上手使用这套工具集。其中比较基础的场景有:

  • 001_CameraRig_VR_PlayArea:关于如何配置VRTK,如果对于刚上手还不知道如何开始的朋友,可以参考这个场景,这是最基础且必要的一步。(注:由于VRTK在每个比较大的版本升级以后,配置过程相较之前的版本会有比较明显的改变,所以建议大家在升级以后参考一下每个版本下的这个场景)
  • 003_Controller_SimplePointer: 如何设置手柄发送射线功能
  • 004_CameraRig_BasicTeleport: 关于瞬移的基本配置
  • 034_Controls_InteractingWithUnityUI:关于VRTK如何与UGUI进行交互。
    其它场景同样比较有用,限于篇幅,不再一一介绍,大家可以根据自己的需求进行相应的查看,场景名称通过字面意思也会知其一二。

    奥门蒲京赌场网址 10

    VRTK示例场景

4.活跃的社区
截止此文时间,VRTK在Github上的Star(类似于赞)数为1772个,最近的更新是在两天前,保持了一个非常活跃的状态。同时还有Slack小组方便开发者进行交流,社交媒体的支持也是该有的都有。

奥门蒲京赌场网址 11

VRTK在Github上

5.VRTK油管频道支持
作者会不定期更新自己的youtube频道,解答在社区中提出的问题,以LiveStream的形式。同时也会分享一些VRTK的小技巧,比如怎样和NewtonVR集成,怎样将Survival
Shooter这种PC端的项目移植为以VRTK为交互的VR平台,等等。在我们的《VR共同成长群》里我也搬运了一些作者分享的视频。

总之,VRTK为了让开发者快速顺利地上手使用这套工具集,在各个方面都做得非常友好。我也将会在接下来的文章中分享使用VRTK过程中的一些心得体会,希望对你有所帮助。

![](https://upload-images.jianshu.io/upload_images/1199677-425c23bb34dc5431.png)

图1



![](https://upload-images.jianshu.io/upload_images/1199677-fcc25d77e2f6229a.jpg)

图2

002_Controller_Events 控制器事件

这个简单的场景展示了在控制台中输出控制器的事件。(官方解释到此为止)

这个场景给控制手柄添加了VRTK_ControllerEvents脚本,如下图所示。

奥门蒲京赌场网址 12

ControllerEvents

下面详细的来看一下VRTK_ControllerEvents这个类的介绍。

VRTK_ControllerEvents这个脚本处理了游戏控制器发出的事件。该脚本应该添加到[CameraRig]预制体下面的控制器对象上,并且对外提供了事件处理监听器。因为系统菜单按钮的行为是由Steam平台使用的,它不能被覆盖,所以不提供这个按钮的事件监听。

当按下一个控制器上的按钮,这个脚本发出一个指示该按钮被按下的事件,允许其他脚本进行事件监听该事件,不用实现任何控制器逻辑。同样的,当释放一个按钮的时候,该脚本也会发出一个按钮被释放的事件。

该脚本还为按钮定义了一个公共布尔型按钮按下状态,允许其他脚本来查询一个按钮是否被按住了。

关于变量、事件的详细介绍,看这里。

VRTK_ControllerEvents_ListenerExample这个类示范了如何绑定事件输出事件参数等内容。

OptiTrack表示:目前还没找到可追踪物体数量的最大限制,他们甚至成功同时追踪300多个物件。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章