SteamVR Plugin(二)-了解与使用

前言

上期在 Unity SteamVR学习-安装与了解 文章中讲到SteamVR没有模拟操作的功能,需要依赖VRTK中的模拟相机功能,来模拟操作。我们如果想用VRTK就只能选择SteamVR1.2.3/1.0+。

故本打算使用VRTK中的模拟相机功能在PC编辑器中来模拟头盔以及手柄的操作。但在后来尝试发现使用VRTK的模拟功能需要将控制器都换为VRTK的控制器脚本,如SteamVR_TrackedObject或者Hand脚本需要换成VRTK_ControllerEvent脚本才能使用,就是说模拟功能依赖了VRTK自身的脚本。

在我这个项目中,并不打算将逻辑依赖于VRTK,但学也学了,用也用了。所以在这里我就简单介绍一下VRTK的配置,给大家做个参考。

VRTK

基本配置

注意:以下操作可以无需自己配置,可以直接从VRTK的示例场景中拿出来用!

将VRTK和SteamVR导入到项目里。

创建一个空物体命名为VRTK_SDK Manager并挂载VRTK_SDk Manager组件

在它的下面创建一个新的空物体并命名为VRTK_SDKSetup,为其挂载VRTK_SDKSetup组件

在这里插入图片描述

在导入的SteamVR文件里找到Prefabs下的CameraRig和SteamVR拖到VRTK_Setup下。

在这里插入图片描述

创建物体下面放两个空物体分别为左右手的控制,并给两个手都挂载VRTK_ControllerEvent、VRTK_Pointer和VRTK_Bezier Pointer(或者VRTK_StraightPointerRenderer组件

在这里插入图片描述

将将其对应的物体拖入其Point Renderer里指定一下

在这里插入图片描述

在VRTK_SDKSetup里指定为SteamVR

在VRTK_SDK Manager里点击Auto populate自动获取到其下的setup

在这里插入图片描述

把对应的手柄控制拖入到VRTK_SDK Manager对应手柄指定里

在这里插入图片描述

 

模拟器

注意:以下操作可以无需自己配置,可以直接从VRTK的示例场景中拿出来用!

将VRTK_SDKSetup复制一个并改名为VRTK_SDKSetup2

在VRTK下的Assets文件夹下的Source的文件夹下的SDK下的Simulator文件下的VR Simulator_CameraRig预制体,将其复制到VR_SDKsetup2下代替VR_CameraRig

在这里插入图片描述
将VRTK_SDKSetup的Quick Select改为Simulator

把新的setup在VRTK_SDK Manager点击Auto Populate添加进来

这样配置之后就可以用pc端VR头盔进行测试了

模拟器操作配置

在VR Simulator_CameraRig可以进行各种模拟操作的设置

在这个下图的位置可以进行手柄按键点击对应键盘的位置。

红色代表左边的手柄,绿色代表右边的手柄,鼠标移动时,视角跟随鼠标移动。位移可以直接用wasd进行。

按alt键即可由视角切换变成手柄移动,并打开了按键提示TriggerPress的响应为q键,想使用TriggTouch则为Q+T同时按下(其他按键以此类推),按shift可以旋转手柄方向,按tab键可以切换成另外一个手柄。f1隐藏显示介绍,f4为显示鼠标位置,按esc退出鼠标消失状态可以进行关闭程序和在线调试。(仅介绍一些大家常用的有其他按键使用自行研究)

以上部分内容参考  unity开发VR,没有VR设备解决方式

 

SteamVR开发

因为不想功能逻辑依赖VRTK的代码,放弃了VRTK的模拟功能,那么正常来说SteamVR2.0+也是可以使用的,但竟然SteamVR1.2.3都已经熟悉了一段时间,笔者还是继续使用SteamVR1.2.3开发,毕竟学会了低版本,新版本也会好学点(SteamVR2.0与1.0差别有点大)。

SDK:SteamVR1.2.3

控制器

本项目的控制器,包括头盔控制器、手柄控制器均使用的是Player、Hand脚本。为什么呢?

因为我们需要在编辑器中进行实时测试,SteamVR1.2.3中为了方便我们在PC端测试,它在Player、Hand控制器脚本中简单做了模拟功能以,意思就是说使用Player、Hand可以进行简单的模拟。(模拟功能不及VRTK模拟)但是仅能通过wasd、鼠标模拟移动、旋转、单手柄。无法做复杂的交互,如果需要做复杂的交互,还是必须用HTC设备来测试。

Player

我们可以看图中Player的配置,发现它有分为(Rig)SteamVR以及(Rig2D)NoSteamVR,就是VR设备的控制器与PC端的控制器。

这些配置我们不需要自己配置,可以从SteamVR/InteractionSystem/Samples/Scenes/Interactions_Example.scene场景中直接拿出一整个Player游戏对象

配置好Player之后,Player脚本会根据设备自动切换对应的控制器。

所以如果我们没有HTC设备,那么在开发过程中,我们需要先将要做的功能逻辑放到NoSteamVR对象下,再之后VR设备实机测试的时候,再将功能逻辑改回到SteamVRObject。

我们需要注意NoSteamVR对象下只有一只手柄控制器,即是鼠标来模拟的。

Hand

Hand脚本实际与SteamVR_TrackObject,除了可以模拟手柄外,并无其他区别。它也可以正常使用SteamVR手柄控制器的其他脚本,如图中的Steam VR_LaserPointer脚本。

如果有多手柄的时候,我们需要设置Hand脚本下的Other Hand

ControllerPrefab:指定手柄的渲染模型,在运行时自动生成出手柄模型。

作者:Miracle
来源:麦瑞克博客
链接:https://www.unitymake.com/archives/unity/1941
本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议,转载请注明!
THE END
分享
打赏
海报
SteamVR Plugin(二)-了解与使用
前言 上期在 Unity SteamVR学习-安装与了解 文章中讲到SteamVR没有模拟操作的功能,需要依赖VRTK中的模拟相机功能,来模拟操作。我们如果想用VRTK就只能选择St……
<<上一篇
下一篇>>
文章目录
关闭
目 录