前言
XR Interaction Toolkit 是Unity基于OpenXR标准,发布的一套XR工具,目的是方便我们快速接入XR相关的SDK,并且做到兼容不同VR设备的目的,目前流行的VR设备如Oculus,Metal,HTC Vive,Pico等统统都支持。
所以我们今天的目的就是把XR Interaction Toolkit从导入到配置,详细给大家说一下,后续的功能都会基于这篇文章的结果展开。
创建工程
我们可以使用直接使用UnityHub自带的“VR模板”来创建项目,但是为了详细说明VR项目的配置,我这里是通过创建空的3D项目来一步一步的完成VR项目的配置。
创建一个3D的空项目,或者3D(URL)的空项目,因为2021其实官方是推荐搭建使用URL的渲染管线的,所以我么不如直接一步到位。
安装XR Interaction Toolkit
我们打开PackageManager,点击+号,选择Add package by name。
然后输入:com.unity.xr.interaction.toolkit
这样可以直接安装最新版本的XR Interaction Toolkit插件。(如果通过Package的目录安装可能不是最新版本。)
导入Sample
安装完后,我们手动把它的Samples包给导入进来。
Samples包:
Starter Assets包。里面包含了一些Preset和Input System相关的东西,
XR Device Simulator包,里面包含了XR模拟器相关的东西。
Tunneling Vignette包:里面是一些关于VR相机镜头效果相关的东西。
Meta Gaze Adapter包:里面是用于眼部追踪相关的东西
Hands Interaction Demo包,里面包含 手部识别 相关的东西。
我们一般导入Starter Assets和XR Device Simulator即可。
导入后如下图所示:
配置XR Preset
我们知道Unity有一个Preset预设功能,Preset预设允许我们将组件、资源或 Project Settings 窗口的属性配置保存为预设资源。然后,可以使用此预设资源将相同的设置应用到不同的组件、资源或 Project Settings 窗口。
接下来我们就是把XR Interaction Toolkit的这些Controller相关的配置都保存成Preset,然后当我们创建XR Origin时,它就会自动帮我们匹配对应的设置了。
选中XR Interaction Toolkit自带的每一个Controller的Preset,然后添加到Prese Manager系统默认配置中。
如下所示:
点击Add to ActionBasedContinuousMoveProvider default按钮
全部点击完毕后,打开PresetManager面板,会看到如下所示的结果:
注意:左右手的配置需要我们手动给他加上Filter Name,这样系统就可以自动通过Left和Right关键字帮我们分别给左右手设置不同的Preset了。
好了,到此就配置好了,我们再创建XR->XR Origin(VR)后,会发现Hand Controller上面已经自动帮我们设置好了Preset。
Device Simulator
如果我们想通过编辑器测试,那么需要用的XR Device Simulator,这个在XRInteraction Toolkit中是有的。如下图所示:
我们可以直接拖拽到场景中,或者也可以通过ProjectSetting-> XR Interaction Toolkit配置,这样游戏运行,Simulator会自动加载。
如下图所示:
但是注意,如果 你要使用了XR Device Simulator,那么就只能在编辑器模式下跑,如果要运行VR一体机真机,那么请把它XR Device Simulator给勾选掉,否则他会影响真机的运行。
运行Demo
官方Demo
Unity给我们提供了XR Interaction Toolkit的demo,我们可以直接运行测试,并根据Demo学习如何修改VR场景
自定义Demo
接下来我们不使用官方提供的场景,我们自定义场景,然后添加VR相关脚本并运行起来。
1.创建场景
我们创建一个简单的场景,添加地面,添加几个简单的盒子作为环境。
2.添加XR Origin
XR Origin是我们的VR控制器,包含了VR头显和VR手柄的控制,我们可以在场景中,右键创建,如下图所示:
创建后,如下图所示:
我们看到,多了一个XR Interaction Mangaer,和一个XR Origin
XR Origin中又包含了Camera Offset以及下面的两个手柄控制。
我们可以看到创建出来的Hand Controlle上面已经帮我们自动创建了XR Controller(Action-Based)脚本,并自动帮我们绑定了左手的所有动作Preset。这是因为我们之前添加了控制器的Preset并设置了Filter。
好了,现在可以在模拟器运行一下试试了。如下图所示:
左下角的面板就是XR Device Simulator面板,用于VR控制在Unity编辑器的模拟。