Valve Index and haptic feedback with OpenXR

Migrating to OpenXR on 4.27.2 and all VR controllers are playing our haptic feedback just fine, except the Valve Index. We’ve tested this on two machines and two different Indices with the same result.

If we put in extreme values we can sometimes get the Index to vibrate, but that’s with absurd values (like a time of 100+ and an amplitude of 1000). Worse yet, sometimes it only works on one controller but not both.

Has anyone else run into this?

1 Like

Do you have the same results in the VR Template? There’s haptics playin when grabbing the cubes as well as shooting the pistols. I was not able to reproduce your results myself.

Ah, that’s a great clue! The VR Template works great, so it must be something specific to our app. I’ll keep digging. Thanks!

1 Like

A month later and we’re still having issues with OpenXR and haptics on the Index, but we’ve narrowed things down a bit. All 4.27 with OpenXR here.

First, we installed the VRTemplate project and ran it with the Index and the Quest 2:

  • Quest 2 haptics always worked
  • Index haptics always worked for the ‘firing’ effect and only sometimes worked for the ‘grab’ effect.

Next, we created a blank UE4 project (
haptictest.zip (360.5 KB)
) and copied over the haptic assets from the VRtemplate project. In the level BP we added this:

When we play the project with the Quest 2 and hit space bar, the haptic effect happens every time. When we play the project with the Index, we never get the haptic effect. Using SteamVR 1.21.12.

We’ve reproduced this on a couple different machines.

Is there perhaps another setting somewhere we need to enable?

I don’t think the controllers will play the effect unless they’re being used. If you weren’t wearing the HMD (proximity sensor) and/or the controllers were sleeping(?) I wouldn’t be surprised if it’s not played.

I wouldn’t use the Grab Action Input event as a test for haptics on the Index controllers as that’s not working consistently - I responded to another post about that here: OpenXR Valve Index - #2 by VictorLerp

Oh and I should mention that there are no more updates to 4.27, but if the problem exists in UE5, provide repro steps and I’ll get the issue logged. Thanks!

Thanks @VictorLerp, as always I appreciate your responses. We made sure the HMD’s proximity sensor was activated and that the controllers were awake.

We also saw this behavior when activating the haptic feedback via spacebar in a blank project, so I suspect the Grab Input Action issue you mentioned isn’t what we’re seeing, either.

My guess is we won’t be in a position to migrate to UE5 until 5.1 or 5.2, but I’ll see if I can tinker with it this weekend just to see what I find.

1 Like

Hi
For me the grip works fine most of the time, but the feedback or haptic effect never works, even with values in millions!
P.S. I am using UE 4.27 as UE5 was crashing alot when using materials or building lights, but I assume it would be the same for UE5?

Yeah I’m not sure about UE5 and OpenXR. I have one brand new UE5 project that crashes immediately every time I open the material editor, even if it’s a brand new (aka empty) material.

If I can’t get far enough to edit materials there’s no way I’m going to bother looking into something less common like VR. :frowning:

@Ken.Brueck I am the same here. I was really excited to switch to UE5 (jumped from UE 4.26 to UE 5) and loved the new VR template and of course the new UI and most importantly the new modelling toolkit and the integration of Quixel Bridge to UE5 (negating the need for using standalone bridge) which makes level prototyping even more interesting. But unfortunately, as soon as I tried setting my own materials (using megascan textures), UE5 crashed, and kept crashing that I had to revert to UE4 only to realise that the new VR template was implemented there anyways :smile:

The Material editor bug in UE5 is known and I believe it will be resolved in the next update as epicgames team are aware of it. You can add you vote anyways using this link:

P.S. VR is obviously not a priority ATM with UE5 and hence it makes more sense to me to stick with UE4 for now :-/

I’m trying to reproduce the issue ya’ll are having with haptics not playing on the Index controllers, and I’m unable to do so. If you can reproduce it consistently (in UE5, we’re not updating UE4), send us a project that can reproduce the issue on your end so that we can take a look at it. Thanks!

1 Like

yea, UE5 is simply not ready for VR. I spent a whole weekend trying to get trigger presses to be detected and that was failing or partially failing. I’ll stick with UE4 until it makes more sense to move over, not to mention the new VR template in UE5 uses the grips for grabs instead of triggers AND does not have mannequin hands and uses just static controllers.

When they announced UE5 was production ready I thought that included VR but it looks like that’s not the case.

Trigger inputs are used in the VR Template in 5.0 for shooting the pistol, and work as intended on all of the devices that we support through OpenXR. If you can reproduce the issue consistenly please provide us with the steps to do so. Thanks!

I had a similar issue with Valve Index knuckles controllers not responding to haptics. In my case, the haptic effect files we were using had the frequency set to zero, which worked on other controllers (mostly Quests). The Index controllers actually pay attention to the frequency though, and wouldn’t do anything with zero frequency. 170hz feels like a proper vibration on these controllers.

I opened the haptictest.zip and checked out the haptic effect files, it looks like those all have either zero or zero-ish values for frequency. Crank those up to near 170hz and see if it helps.

That seems like a bug in SteamVR then. The OpenXR spec says that a frequency value of 0 is unspecified and the runtime is left to decide the optimal frequency.

Thanks for checking out those files! I bumped it up to 170hz and that worked once. As in, my first play of haptics works on the Index and then never again. And by “never again” I mean, restarting PIE doesn’t work. Restarting the editor doesn’t work.

To get my single haptic feedback bump again, I have to restart Steam VR. Makes me wonder if this is a SteamVR thing, except I don’t hear anyone else describing that symptom.

1 Like

That is strange, I’m not getting that behavior here. Could be a version difference, I’m on UE 4.25.

I only get that behavior in our own project, unfortunately. Well, mostly. We’re on 4.27.

If I use the VR template I get mostly consistent results. However, if I mess with the haptic curves I can get close behavior to what I’m seeing. The first vibration is normal, and then subsequent ones are very faint. In our project they’re non-existent though, so it’s not quite the same.

I’ve exhausted everything I can try, and UE5 isn’t stable enough for our project to use. I guess we’re just haptic-less while UE5 matures.

I’m seeing this behavior in 5.0 as well. As a sanity check I changed the haptic event that is used when firing the pistol to rumble for 2 seconds so that I would definitely feel it, and it played maybe once each time I PIE’d after reopening the editor, but then would stop working. I saw this behavior both in VR Template and in my own project. I do feel a slight haptic bump on grip and on trigger pull in the VR template but that’s regardless of if I’m holding something or not.

I’m using 5.0 vr template with htc vive. I think something wrong with haptics. It’s getting stuck vibrating different freq and amps every time when i grab “Grabable object” and “rifle”. I can’t control it. I enabled steam VR plugin over Openxr and tried steamVR haptic nodes, it worked. But i lost all teleportation functionality now. so is openxr plugin bugged or its template?

Our team is seeing mixed results. For 2 of us haptics on the Index work and for 2 of us they don’t. We’ve tried every permutation of SteamVR, SteamVR Beta, and settings we can think of.

Strangely enough, it seems like the haptic channel can get clogged and nothing will play until the channel is cleared. I’m seeing different behavior with different UE4 applications, which is troublesome.

If I make a new VR template with 4.27 Plus, and have a very simple loop that plays frequencies, I can only get it to work once per hand. With the below code, you’d expect it to play continually, alternating between each hand:

Instead, it vibrates for 2 seconds on the first hand, then 2 seconds on the right hand, and then never again.

Sight Nevermind, it was doing that until I took the time to write this note, and now when I try it again it loops as expected. That’s without changing any code or settings.

[EDIT] Now this is interesting. I can interrupt the vibration by touching the triggers, which seems to cause a tiny vibration on its own. I wonder if there’s an issue with controller input noise. Maybe some of our teams’ controllers inputs are noisier than others and they’re continually cancelling out any new haptics. I guess that wouldn’t explain why some apps work and others don’t though. We’re really at a loss.