添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

本文将以Unity 2020为编辑器,介绍新版SteamVR的变化、相关操作背后的原理、以及在Unity 2020中使用该插件需要注意的细节,本文内容部分来自视频课程 《SteamVR 2.x 交互开发指南》 ,以下。

  • SteamVR 插件的获取
  • 新版本 SteamVR 2.x 的主要变化
  • 导入 SteamVR 插件
  • 初次运行SteamVR应用程序(自带示例场景)

针对PC VR平台的开发,绕不过去的便是以SteamVR平台为代表的VR设备,尤其是目前国内PC VR设备的现状,无论从采购渠道还是品牌认知度,目前还是以HTC VIVE为主要硬件平台,而HTC VIVE 系列产品均是运行在SteamVR平台之上的。SteamVR 插件是Valve提供给Unity开发者的开发工具,其中包含的Interaction System,是一套脱胎于VR体验应用《The Lab》的交互系统,开发者可以借由这套交互系统,快速开发出常用的VR交互功能。

SteamVR 插件的获取

SteamVR 插件可以分别从Unity Asset Store 和 Github 获取。在Asset Store中,通常只会提供经过广泛测试后相对稳定的最新版本,而在Github中,开发者可以获取该插件自发布以来的所有版本以及即将发布的beta版本。

渠道一:从Asset Store获取

访问网址:https://assetstore.unity.com,搜索栏输入"steamvr"找到该插件,确保使用Unity ID登录,选择"添加到我的资源",然后点击“在Unity中打开”按钮,由于在Unity 2020中,从Asset Store窗口中进行插件下载和安装的功能被移除,此时将自动在Unity编辑器中打开Package Manager,同时定位到在"My Assets"类目下SteamVR Plugin,点击download按钮等待下载完毕,点击Import按钮进行插件的导入。

如果开发的项目需要使用早期的插件版本,比如需要使用SteamVR 1.2.3结合VRTK 3.x进行开发的情况——我们知道VRTK在Asset Store中的最新版本(3.x)并不能与SteamVR Plugin 的最新版本(2.x)搭配使用,所以遇到这种情况,只能从Github中下载SteamVR Plugin的旧版本,同理,对于VRTK来说也适用。

新版本 SteamVR 2.x 的主要变化

在SteamVR Plugin 1.x 推出以后,VR生态发生了很多变化,比较显著的是出现了很多不同类型的VR设备以及控制器。随着越来越多的VR设备推出,控制器类型逐渐趋向于碎片化。每当有新的控制器发布,都会给开发者带来一些额外的工作量——游戏项目需要修改交互代码以适配新的设备。从开发层面上来看,不同的控制器具有不同的键值映射,所以,当现有 VR 应用程序移植到另外一个VR平台的时候,需要针对目标平台进行交互适配。鉴于此,Valve为Unity开发者推出了 SteamVR Plugin 2.x(以下简称SteamVR 2.x),能够使开发者在编程中专注于用户的动作,而不是具体的控制器按键。

SteamVR 2.x 的重要更新是加入了 Input System,所有的用户输入均围绕动作Action展开。推出Input System的目的,是为了更加符合OpenXR的标准。Input System与之前处理用户输入有着显著的不同,使用SteamVR Input System,开发者可以在应用程序之外定义默认的动作并与按键进行绑定,而不需要将输入视为某一特定设备的特定按键。这样新的设备可以快速适配应用程序,无需更改代码。比如,当开发者检测玩家是否抓取某个物体的时候,不是检测Vive控制器的Trigger键或Oculus Touch控制器的Grip键是否被按下,而是检测预定义的”Grab”动作是否为True即可。类似在篮球游戏中玩家预先设置"投篮"动作为键盘或手柄上的哪一个按键一样。基于这种机制,不只能够解决控制器碎片化的问题,也可以快速适配未来发布的设备。

值得注意的是,Unity同样引入了一套新的输入系统,以解决跨平台(PC、移动、VR)的问题,同样基于动作的输入。可见,使用动作而不是特定按键的输入来处理用户的交互行为,正在成为一种趋势。读者可结合Unity 的 Input System 来学习这种机制的设计思路,以便于更好的理解 SteamVR 的 Input System。

导入 SteamVR 插件

在Unity Hub中,使用Unity 2020创建一个3D项目,如图5所示:

随着开发的进行,频繁弹出此对话框会一定程度上影响项目开发的连续性,要解决这个问题,可以在Project窗口中搜索"SteamVR_UnitySettingsWindow",找到控制设置窗口显示的脚本,双击使用默认代码编辑器将其打开,在第118行处添加代码,强制设置变量show为false,如下代码段中第1行所示。这样在之后的代码中将因为判断条件不成立而不再显示设置窗口。

show = false;
if (show)
    window = GetWindow<SteamVR_UnitySettingsWindow>(true);
    window.minSize = new Vector2(320, 440);
    //window.title = "SteamVR";

初次运行SteamVR应用程序(自带示例场景)

SteamVR 插件导入以后,在Unity编辑器的Project窗口将新增三个文件夹,最为主要的是SteamVR文件夹,在这里除了包含这款插件所有的脚本和素材以外,还包含了一个集成度相对较高的交互系统——Interaction System(如图9中1处所示),以及在Unity XR Plug-in Management中使用的OpenVR XR Plugin工具包(如图9中2处所示)。

在文件夹SteamVRResources中,包含一个ScriptableObject类型的配置文件——SteamVRSettings(如图9中3处所示),这里保存了一系列对于SteamVR插件的全局配置选项,我们将在后续开发过程中介绍相关设置。

插件安装完毕以后,建议首先单击SteamVR文件下的readme文件,在Inspector窗口中查看当前版本支持的SDK版本。在开发之前尽量确保SteamVR客户端的版本不低于当前SteamVR插件所支持的SDK版本,如图10所示,如SteamVR 插件版本为2.7.3且支持的SDK版本为1.14.15,则SteamVR客户端的版本尽量保持在1.14.15及以上。关于SteamVR客户端的升级,可以在Steam客户端中进行。

在SteamVR中,所有的动作按照不同的动作集(Action Sets)进行组织,在SteamVR Input 窗口中,将根据读取的actions.json文件内容,在顶部列出当前项目中所有的动作集(如图15中1处所示),开发者可以对动作集进行创建与删除。

在不同的场景或应用程序之间可以切换使用不同的动作集,比如,应用程序中有一个场景是在地球上拾取并投掷物体,而另一个场景则是在太空中飞行,那么这两个场景可以使用不同的动作集。

选择任一动作集,会在下方的Actions栏中列出当前动作集中包含的动作(如图15中2处所示),开发者可以在此对动作进行添加或删除。选择任一动作,在窗口右侧将显示该动作对应的详细信息(如图15中3处所示),开发者可在此对动作的类型、名称等属性进行设置。

点击SteamVR Input窗口底部的Save and generate按钮,此时SteamVR插件将主要完成两部分工作:首先将动作配置信息保存在action.json文件中;其次,创建或更新以动作集为主体的动作类,便于在开发过程中对具体的动作进行引用,这些类的脚本被存放在Project窗口中的SteamVR_Input目录下,如图16所示。

需要注意的是,对于创建或修改后的动作,此时并不能够按照预期被系统检测到,需要点击窗口右下角的Open binding UI按钮,打开SteamVR客户端的控制器按键设置窗口完成动作与按键的绑定,我们将在未来进行详细介绍。

关闭SteamVR Input窗口,运行应用程序,此时即可体验Interaction System的示例场景。

下回预告:SteamVR 2.x 中的动作(Actions)

更多VR开发学习资料,欢迎关注公众号【XR技术研习社】,点击这里了解我的最新课程《SteamVR 2.x 交互开发指南》

Unity3D升级2020VR开发可能遇到的一些问题 1.Unity3D 2020VR已经整合到XR中并统一以插件包形式提供 在Unity2020版本以前,打开VR功能是在Player Setting中勾选Virtual Reality Supported选项,并加载需要的VR SDK库 Unity2020版本内建的XR Settings功能已经取消,统一通过XR Plugin Management插件包形式提供 安装插件包以后可以选择安装需要的VR库 在对应的VR库中设置选项 如果不需要用到 目录unity毕设之搭建VR开发环境***HTC VIVE环境配置******Steam VR环境配置******创建功能导入插件检查环境******创建VR交互环境******测试VR环境*** unity毕设之搭建VR开发环境 选用unity2018.3.6f1+steamVR1.2.3+VRTK3.3 ,兼容性比较好。 亲测:进行正式开发之前,最好安装一下虚拟现实 环境驱动和选好对应的插件版本,能避免不少坑和报错。 HTC VIVE环境配置 虚拟现实应用需要配置虚拟现实硬件的驱动,本作品的硬件设备. 随着VR生态的日益增长,以及Valve Knuckles控制器的逐渐完善,SteamVR未来能够提供给用户更多的交互方式,比如手指跟踪和力反馈。近期,Valve在Unity资源商店中将SteamVR插件更新到了2.0版,XR技术研习社将根据官方博客和SDK文档对此次更新进行介绍,本文同时也是《HTC VIVE 交互开发实例教程》第52课备课内容。 以下...