ViveSoftware/ViveInputUtility-Unity

Missing Touchpad for Oculus Touch controllers

dgarkov opened this issue · 1 comments

Left controller warnings:

Device Oculus Touch Controller - Left doesn't have bool feature Thumbrest. Return default value instead.
UnityEngine.Debug:LogWarningFormat (string,object[])
HTC.UnityPlugin.VRModuleManagement.UnityXRModule:GetDeviceFeatureValueOrDefault (UnityEngine.XR.InputDevice,UnityEngine.XR.InputFeatureUsage`1) (at Assets/Libraries/HTC.UnityPlugin/VRModule/Modules/UnityXRModule.cs:859)
HTC.UnityPlugin.VRModuleManagement.UnityXRModule:UpdateOculusControllerState (HTC.UnityPlugin.VRModuleManagement.IVRModuleDeviceStateRW,UnityEngine.XR.InputDevice) (at Assets/Libraries/HTC.UnityPlugin/VRModule/Modules/UnityXRModule.cs:667)
HTC.UnityPlugin.VRModuleManagement.UnityXRModule:UpdateControllerState (HTC.UnityPlugin.VRModuleManagement.IVRModuleDeviceStateRW,UnityEngine.XR.InputDevice) (at Assets/Libraries/HTC.UnityPlugin/VRModule/Modules/UnityXRModule.cs:408)
HTC.UnityPlugin.VRModuleManagement.UnityXRModule:BeforeRenderUpdate () (at Assets/Libraries/HTC.UnityPlugin/VRModule/Modules/UnityXRModule.cs:271)
HTC.UnityPlugin.VRModuleManagement.VRModule:BeforeRenderUpdateModule () (at Assets/Libraries/HTC.UnityPlugin/VRModule/VRModuleManager.cs:326)
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

Device Oculus Touch Controller - Left doesn't have float feature IndexTouch. Return default value instead.
UnityEngine.Debug:LogWarningFormat (string,object[])
HTC.UnityPlugin.VRModuleManagement.UnityXRModule:GetDeviceFeatureValueOrDefault (UnityEngine.XR.InputDevice,UnityEngine.XR.InputFeatureUsage`1) (at Assets/Libraries/HTC.UnityPlugin/VRModule/Modules/UnityXRModule.cs:889)
HTC.UnityPlugin.VRModuleManagement.UnityXRModule:UpdateOculusControllerState (HTC.UnityPlugin.VRModuleManagement.IVRModuleDeviceStateRW,UnityEngine.XR.InputDevice) (at Assets/Libraries/HTC.UnityPlugin/VRModule/Modules/UnityXRModule.cs:668)
HTC.UnityPlugin.VRModuleManagement.UnityXRModule:UpdateControllerState (HTC.UnityPlugin.VRModuleManagement.IVRModuleDeviceStateRW,UnityEngine.XR.InputDevice) (at Assets/Libraries/HTC.UnityPlugin/VRModule/Modules/UnityXRModule.cs:408)
HTC.UnityPlugin.VRModuleManagement.UnityXRModule:BeforeRenderUpdate () (at Assets/Libraries/HTC.UnityPlugin/VRModule/Modules/UnityXRModule.cs:271)
HTC.UnityPlugin.VRModuleManagement.VRModule:BeforeRenderUpdateModule () (at Assets/Libraries/HTC.UnityPlugin/VRModule/VRModuleManager.cs:326)
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

Device Oculus Touch Controller - Left doesn't have float feature ThumbTouch. Return default value instead.
UnityEngine.Debug:LogWarningFormat (string,object[])
HTC.UnityPlugin.VRModuleManagement.UnityXRModule:GetDeviceFeatureValueOrDefault (UnityEngine.XR.InputDevice,UnityEngine.XR.InputFeatureUsage`1) (at Assets/Libraries/HTC.UnityPlugin/VRModule/Modules/UnityXRModule.cs:889)
HTC.UnityPlugin.VRModuleManagement.UnityXRModule:UpdateOculusControllerState (HTC.UnityPlugin.VRModuleManagement.IVRModuleDeviceStateRW,UnityEngine.XR.InputDevice) (at Assets/Libraries/HTC.UnityPlugin/VRModule/Modules/UnityXRModule.cs:669)
HTC.UnityPlugin.VRModuleManagement.UnityXRModule:UpdateControllerState (HTC.UnityPlugin.VRModuleManagement.IVRModuleDeviceStateRW,UnityEngine.XR.InputDevice) (at Assets/Libraries/HTC.UnityPlugin/VRModule/Modules/UnityXRModule.cs:408)
HTC.UnityPlugin.VRModuleManagement.UnityXRModule:BeforeRenderUpdate () (at Assets/Libraries/HTC.UnityPlugin/VRModule/Modules/UnityXRModule.cs:271)
HTC.UnityPlugin.VRModuleManagement.VRModule:BeforeRenderUpdateModule () (at Assets/Libraries/HTC.UnityPlugin/VRModule/VRModuleManager.cs:326)
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

Right controller warnings:

Device Oculus Touch Controller - Right doesn't have bool feature Thumbrest. Return default value instead.
UnityEngine.Debug:LogWarningFormat (string,object[])
HTC.UnityPlugin.VRModuleManagement.UnityXRModule:GetDeviceFeatureValueOrDefault (UnityEngine.XR.InputDevice,UnityEngine.XR.InputFeatureUsage1<bool>) (at Assets/Libraries/HTC.UnityPlugin/VRModule/Modules/UnityXRModule.cs:859) HTC.UnityPlugin.VRModuleManagement.UnityXRModule:UpdateOculusControllerState (HTC.UnityPlugin.VRModuleManagement.IVRModuleDeviceStateRW,UnityEngine.XR.InputDevice) (at Assets/Libraries/HTC.UnityPlugin/VRModule/Modules/UnityXRModule.cs:667) HTC.UnityPlugin.VRModuleManagement.UnityXRModule:UpdateControllerState (HTC.UnityPlugin.VRModuleManagement.IVRModuleDeviceStateRW,UnityEngine.XR.InputDevice) (at Assets/Libraries/HTC.UnityPlugin/VRModule/Modules/UnityXRModule.cs:408) HTC.UnityPlugin.VRModuleManagement.UnityXRModule:BeforeRenderUpdate () (at Assets/Libraries/HTC.UnityPlugin/VRModule/Modules/UnityXRModule.cs:271) HTC.UnityPlugin.VRModuleManagement.VRModule:BeforeRenderUpdateModule () (at Assets/Libraries/HTC.UnityPlugin/VRModule/VRModuleManager.cs:326) UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) Device Oculus Touch Controller - Right doesn't have float feature IndexTouch. Return default value instead. UnityEngine.Debug:LogWarningFormat (string,object[]) HTC.UnityPlugin.VRModuleManagement.UnityXRModule:GetDeviceFeatureValueOrDefault (UnityEngine.XR.InputDevice,UnityEngine.XR.InputFeatureUsage1) (at Assets/Libraries/HTC.UnityPlugin/VRModule/Modules/UnityXRModule.cs:889)
HTC.UnityPlugin.VRModuleManagement.UnityXRModule:UpdateOculusControllerState (HTC.UnityPlugin.VRModuleManagement.IVRModuleDeviceStateRW,UnityEngine.XR.InputDevice) (at Assets/Libraries/HTC.UnityPlugin/VRModule/Modules/UnityXRModule.cs:668)
HTC.UnityPlugin.VRModuleManagement.UnityXRModule:UpdateControllerState (HTC.UnityPlugin.VRModuleManagement.IVRModuleDeviceStateRW,UnityEngine.XR.InputDevice) (at Assets/Libraries/HTC.UnityPlugin/VRModule/Modules/UnityXRModule.cs:408)
HTC.UnityPlugin.VRModuleManagement.UnityXRModule:BeforeRenderUpdate () (at Assets/Libraries/HTC.UnityPlugin/VRModule/Modules/UnityXRModule.cs:271)
HTC.UnityPlugin.VRModuleManagement.VRModule:BeforeRenderUpdateModule () (at Assets/Libraries/HTC.UnityPlugin/VRModule/VRModuleManager.cs:326)
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)
Device Oculus Touch Controller - Right doesn't have float feature ThumbTouch. Return default value instead.
UnityEngine.Debug:LogWarningFormat (string,object[])
HTC.UnityPlugin.VRModuleManagement.UnityXRModule:GetDeviceFeatureValueOrDefault (UnityEngine.XR.InputDevice,UnityEngine.XR.InputFeatureUsage`1) (at Assets/Libraries/HTC.UnityPlugin/VRModule/Modules/UnityXRModule.cs:889)
HTC.UnityPlugin.VRModuleManagement.UnityXRModule:UpdateOculusControllerState (HTC.UnityPlugin.VRModuleManagement.IVRModuleDeviceStateRW,UnityEngine.XR.InputDevice) (at Assets/Libraries/HTC.UnityPlugin/VRModule/Modules/UnityXRModule.cs:669)
HTC.UnityPlugin.VRModuleManagement.UnityXRModule:UpdateControllerState (HTC.UnityPlugin.VRModuleManagement.IVRModuleDeviceStateRW,UnityEngine.XR.InputDevice) (at Assets/Libraries/HTC.UnityPlugin/VRModule/Modules/UnityXRModule.cs:408)
HTC.UnityPlugin.VRModuleManagement.UnityXRModule:BeforeRenderUpdate () (at Assets/Libraries/HTC.UnityPlugin/VRModule/Modules/UnityXRModule.cs:271)
HTC.UnityPlugin.VRModuleManagement.VRModule:BeforeRenderUpdateModule () (at Assets/Libraries/HTC.UnityPlugin/VRModule/VRModuleManager.cs:326)
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

VIU version: v1.12.0
Unity version: 2020.2.7

Probably some are not relevant for the Touch controllers, e. g. IndexTouch, but even then the spilled warning every second are an annoyance. More importantly, the effect is that touchpad events cannot be resolved. The following sample (closed issue #65) does not work:

if (ViveInput.GetPress(HandRole.RightHand, ControllerButton.PadTouch))
{
    Debug.Log("padAxis = " + ViveInput.GetPadAxisEx(HandRole.RightHand));
}

And I can confirm this is not due to potentially just missing "user presence" on the Oculus, i.e. HMD is not put on the head. Axis values remain (0, 0).