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:指定手柄的渲染模型,在运行时自动生成出手柄模型。
来源:麦瑞克博客
链接:https://www.playcreator.cn/archives/unity/1941/
本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议,转载请注明!