ViveInputUtility版本为1.14.1.0
ViveInputUtility是支持Oculus的,也支持Oculus quest系列的。
但是在绑定映射的逻辑上,少添加了对Oculus Quest2的支持。
打开ViveInputUtility的OculusVRModule.cs,在BeforeRenderUpdate()函数里,在switch语句中有个case是case OVRPlugin.SystemHeadset.Oculus_Quest: 在这个下面添加一句 case OVRPlugin.SystemHeadset.Oculus_Quest_2:
保存重新运行就好了。
// update device connected state
if (!prevState.isConnected)
{
var platform = OVRPlugin.GetSystemHeadsetType();
var ovrProductName = platform.ToString();
currState.isConnected = true;
currState.deviceClass = deviceClass;
// FIXME: how to get device id from OVRPlugin?
currState.modelNumber = ovrProductName + " " + deviceClass;
currState.renderModelName = ovrProductName + " " + deviceClass;
currState.serialNumber = ovrProductName + " " + node + (deviceClass == VRModuleDeviceClass.TrackedHand ? "TrackedHand" : "");
switch (deviceClass)
{
case VRModuleDeviceClass.HMD:
currState.deviceModel = VRModuleDeviceModel.OculusHMD;
break;
case VRModuleDeviceClass.TrackingReference:
currState.deviceModel = VRModuleDeviceModel.OculusSensor;
break;
case VRModuleDeviceClass.Controller:
switch (platform)
{
#if !VIU_OCULUSVR_19_0_OR_NEWER
case OVRPlugin.SystemHeadset.Oculus_Go:
currState.deviceModel = VRModuleDeviceModel.OculusGoController;
currState.input2DType = VRModuleInput2DType.TouchpadOnly;
break;
case OVRPlugin.SystemHeadset.GearVR_R320:
case OVRPlugin.SystemHeadset.GearVR_R321:
case OVRPlugin.SystemHeadset.GearVR_R322:
case OVRPlugin.SystemHeadset.GearVR_R323:
case OVRPlugin.SystemHeadset.GearVR_R324:
case OVRPlugin.SystemHeadset.GearVR_R325:
currState.deviceModel = VRModuleDeviceModel.OculusGearVrController;
currState.input2DType = VRModuleInput2DType.TouchpadOnly;
break;
#endif
case OVRPlugin.SystemHeadset.Rift_DK1:
case OVRPlugin.SystemHeadset.Rift_DK2:
case OVRPlugin.SystemHeadset.Rift_CV1:
switch (node)
{
case OVRPlugin.Node.HandLeft:
currState.deviceModel = VRModuleDeviceModel.OculusTouchLeft;
break;
case OVRPlugin.Node.HandRight:
default:
currState.deviceModel = VRModuleDeviceModel.OculusTouchRight;
break;
}
currState.input2DType = VRModuleInput2DType.JoystickOnly;
break;
#if VIU_OCULUSVR_16_0_OR_NEWER
case OVRPlugin.SystemHeadset.Oculus_Link_Quest:
#endif
#if VIU_OCULUSVR_1_37_0_OR_NEWER
case OVRPlugin.SystemHeadset.Oculus_Quest:
//---------- 增加对Oculus Quest2的支持 ----------
case OVRPlugin.SystemHeadset.Oculus_Quest_2:
//----------------------------------------------
case OVRPlugin.SystemHeadset.Rift_S:
switch (node)
{
case OVRPlugin.Node.HandLeft:
currState.deviceModel = VRModuleDeviceModel.OculusQuestControllerLeft;
break;
case OVRPlugin.Node.HandRight:
default:
currState.deviceModel = VRModuleDeviceModel.OculusQuestControllerRight;
break;
}
currState.input2DType = VRModuleInput2DType.JoystickOnly;
break;
#endif
}
break;
case VRModuleDeviceClass.TrackedHand:
currState.deviceModel = node == OVRPlugin.Node.HandLeft ? VRModuleDeviceModel.OculusTrackedHandLeft : VRModuleDeviceModel.OculusTrackedHandRight;
break;
}
}