ValveSoftware / openvr

OpenVR SDK
http://steamvr.com
BSD 3-Clause "New" or "Revised" License
6.07k stars 1.28k forks source link

Set default of haptic_amplitude from 20 to 0 #1678

Open adrianhoppe opened 2 years ago

adrianhoppe commented 2 years ago

Hello, while using the SteamVR Plugin in my Unity project, I have noticed that the controller (HP Reverb G2) vibrates when I pull the trigger or the grip button. Initially, I didn't really think about this but now that I started working on the design of the haptics, I wanted to disable this.

I tried to find the origin of the vibration in my code but could not find anything that triggers the vibration.
After searching through the web, it turns out that the vibration is actually not triggered within Unity but in SteamVR.
Others also experienced this issue and helped me a lot in pinning it down:
https://forum.unity.com/threads/solved-steamvr2-cannot-prevent-haptic-pulse-from-firing-when-trigger-pulled.585001/
https://steamcommunity.com/app/358720/discussions/0/3335371283880125078/
https://github.com/ValveSoftware/steamvr_unity_plugin/issues/507

There is a setting within the Bindings UI called Haptic Amplitude that defaults to 20.
It is very confusing to me why 20 is the default and I would expect this to be 0. In my opinion, if I, as a developer, would like to trigger haptic feedback on a button press, I will trigger it in my code. This also ensures that other bindings, e.g., for a new controller type, have the same consistent haptic feedback. Therefore, I would like to propose changing the default value of haptic_amplitude from 20 to 0.

Looking forward to hearing your reasoning for the current default value and opinion on this proposed change.
Thanks a lot!
Best,
Adrian


p.s. The value can be changed in the Bindings UI by clicking the cog icon on a button: image

Alternatively, the bindings_<controller-name>.json config files can be changed by setting "haptic_amplitude" to 0 as the following excerpt shows:

...
{
   "inputs" : {
      "click" : {
         "output" : "/actions/name/in/use"
      }
   },
   "mode" : "button",
   "parameters" : {
      "haptic_amplitude" : "0"
   },
   "path" : "/user/hand/left/input/trigger"
},
...
Opisek commented 3 weeks ago

Absolutely support this. Having haptic feedback on every press is frustrating and counter-intutive. Haptive feedback signifies an ACTION. If you press your trigger and nothing happens, you should NOT feel a haptic feedback. To players, this is extremely confusing.

Furthermore, even putting this to 0 everywhere does not seem to always work. In fact, something keeps triggering this buzz in the background, completely out of control of developers and players.