一、概述
目前随着市场上的VR设备越来越多,控制器的类型越来越趋向于碎片化。老版的SteamVR插件显然不再适用,因为每当有新的控制器发布就,开发者就需要修改交互代码来适配新的设备,毕竟从开发角度来说,不同的控制器具有独立的键值映射。所以,V社推出了SteamVR2.0,能够让开发者在开发过程中只需要针对于用户的动作而不是控制器的按键。SteamVR2.0的重要更新是加入了Input System,更加符合OpenXR的标准。
Input System和之前处理用户的明显区别为:使用SteamVR Input System,开发者可以在应用程序外定义默认的动作并和按键进行绑定,而不需要设置某一设备的特定按键。这样可以让新的设备快速适应应用程序,无需更改代码。
二、动作管理(Actions)
Input System的核心概念是动作(Actions),steamVR2.0将动作抽象为以下6种类型:
- Boolean类型:此类型的动作只有两种状态:True或False,比如点击UI的动作(InteractUI),只有点击和没点击两种状态。在unity中对应类为:SteamVR_Action_Boolean。
- Single类型:此类型的动作返回0-1之间的数值,比如Trigger键按下到松开的过程。在Unity中对应类为SteamVR_Action_Single。
- Vector2类型:此类型的动作返回Vector2数值,比如TouchPad圆盘键。这样的运动可以控制物体四个方向的运动。在Unity中对应类为SteamVR_Action_Vector2。
- Vector3类型:此类型的动作返回Vector3数值。在Unity中对应类为SteamVR_Action_Vector3。
- Pose类型:此类型的动作能够表示三维空间中的位置和旋转值,一般追踪VR控制器。在Unity中对应类为SteamVR_Action_Pose。
- Skeleton类型:此类型的动作能获取用户握住手柄时的手指关节数组,可以根据返回数据结合手部模型更真实地呈现手在虚拟空间中的姿态。在Unity中对应类为SteamVR_Action_Skeleton。
新版SteamVR的事件在Window->SteamVR Input中管理。窗口如下图: