Vive Tracker (Hyperblaster) haptic feedback is too long if used as Vive controller

mmorselli
Settler

Vive Tracker (Hyperblaster) haptic feedback is too long if used as Viv...

The Hyperblaster haptic feedback works fine when used with a few (5) compatible games, such as Arizona Sunshine or The American Dream, but redirecting controller input to tracker via OpenVR Input Emulator, or using it as controller after role change (Vive Tracker Role Changer) any haptic events (typically a shot) last about 3 seconds instead of a few milliseconds as in the original controller. I tried to read the tracker  pin 1 (output)  directly and I can confirm that it remains high for about 3 seconds. Tested with two trackers (v1.0)

 

That's sad because it prevents using the hyperblaster or other guns in any games except for those 5

is there anything I can try to fix it?

 
Vive Staff

Re: Vive Tracker (Hyperblaster) haptic feedback is too long if used as...

@foo, any thoughts on this? 


David R

Technical Specialist - San Francisco, CA; Monday-Friday

Click here to send me a PM

mmorselli
Settler

Re: Vive Tracker (Hyperblaster) haptic feedback is too long if used as...

I've done more tests, it lasts exactly two seconds, even with a very short pulse. In the video below I'm driving a solenoid, but with the hyperblaster is the same


https://youtu.be/g_TSzzmVDwU

mmorselli
Settler

Re: Vive Tracker (Hyperblaster) haptic feedback is too long if used as...

well, another night of testing and now I know what is the problem

 

The OpenVR function TriggerHapticPulse() acts  in a different way if sent to Vive Tracker or a Vive Controller

the third parameter (usDurationMicroSec) if sent to a tracker acts (almost) as you expect, the pulse lasts as many milliseconds as the indicated microseconds (sic!)

when sent to a controller, it acts as a pulse intensity, not a pulse duration, the pulse is always very short, a value of 50 is barely noticeable, a value of 2000 is quite strong. When a developer places a gun in a game he obviously wants robust feedback, so he sets >2000, which means "2 seconds" for the tracker

any hints to fix the problem?

mmorselli
Settler

Re: Vive Tracker (Hyperblaster) haptic feedback is too long if used as...

Moderator

Re: Vive Tracker (Hyperblaster) haptic feedback is too long if used as...

Actually there are issues with the trackers and the new input system unless you correct the input device mapping (but there's a fall back version on SteamVR you can revert to from the Steam client).

 

As for the haptic method the original signature  https://github.com/ValveSoftware/openvr/wiki/IVRSystem::TriggerHapticPulse is ok but doesn't match the openvr_api.cs C# wrapper.

UnmanagedFunctionPointer(CallingConvention.StdCall)]
internal delegate void _TriggerHapticPulse(uint unControllerDeviceIndex, uint unAxisId, char usDurationMicroSec);

 

the last argument should be ushort and not char (this primarily addresses the issue of not enough haptic strength since the range is limited but check if this also addresses your issues)

 

Note this was fixed a few days ago in OpenVR 1.0.16 but as per above, the latest SteamVR runtime is still at OpenVR 1.0.15 which still had the bad argument.

 

-Dario 

mmorselli
Settler

Re: Vive Tracker (Hyperblaster) haptic feedback is too long if used as...

I haven't tried, but ironically the tracker should work better with this bug, because it interprets duration... as a duration, not as a force, so a limit to usDurationMicroSec should be a good workaround.

Moderator

Re: Vive Tracker (Hyperblaster) haptic feedback is too long if used as...

Well like I said it's been fixed in a just updated OpenVR update (yet to be included in SteamVR or the Unity beta plugin).

 

But regarding "redirecting controller input to tracker via OpenVR Input Emulator, or using it as controller after role change (Vive Tracker Role Changer) "  please note that both of these can now be considered EOL due to the new button/role bindings in the new input system in SteamVR.

 

That being said, once you do map a hand role to a tracker (the bindings can be customized by the user via settings within the headset or at the desktop running SteamVR at http://127.0.0.1:8998/dashboard/controllerbinding.html ) then the class id will be changed from generic_tracker to controller according to the latest release notes for the latest release version of SteamVR.  Technically this would break existing apps that used the generic tracker class id for hand roles however it can now role change to identify as a controller (left/right or both) and allow any shooter game use a tracker with a Hyperblaster.  Moving forward, these SteamVR apps that broke should get updated and specify default action mappings. The beta SteamVR Unity plugin creates templates for you to edit if you need examples.

mmorselli
Settler

Re: Vive Tracker (Hyperblaster) haptic feedback is too long if used as...


@Dario wrote:

But regarding "redirecting controller input to tracker via OpenVR Input Emulator, or using it as controller after role change (Vive Tracker Role Changer) "  please note that both of these can now be considered EOL due to the new button/role bindings in the new input system in SteamVR.

Since the SteamVR Input interface is not so clear, I would like to ask for some clarification.

With SteamVR Input, could I:

1 - redirect tracker to controller, so the game believes the tracker is the controller?
2 - change the tracker offset (x,y,z and yaw,roll,pitch) to match ingame weapons position?
3 - remap the tracker button (system) to trigger? 

mmorselli
Settler

Re: Vive Tracker (Hyperblaster) haptic feedback is too long if used as...


Note this was fixed a few days ago in OpenVR 1.0.16 but as per above, the latest SteamVR runtime is still at OpenVR 1.0.15 which still had the bad argument.



Still outdated?

 

@Dario

 

Highlighted
Moderator

Re: Vive Tracker (Hyperblaster) haptic feedback is too long if used as...

Not anymore in SteamVR as of today... not sure about UE4 but I think 4.21 should have all the latest (like skeletal support and 6DOF controllers for Android..)