ValveSoftware / steamvr_unreal_plugin

SteamVR Input Unreal Plugin - Documentation at: https://github.com/ValveSoftware/steamvr_unreal_plugin/wiki Sample project (UE4.15-4.23): https://github.com/ValveSoftware/steamvr_unreal_plugin/wiki/sample/SteamVRInputPlugin.zip Sample Project (UE.424+): https://github.com/ValveSoftware/steamvr_unreal_plugin/wiki/sample/SteamVRInputPlugin_UEIntegrated.7z

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Oculus Quest has a delay on the grip buttons

Gnimmel1979 opened this issue · comments

I'm developing a VR game with Unreal 4.26 using a Valve Index on my development machine and everything works great.

However, if I create a build and test it on a Oculus Quest with a Link cable, their seems to be a delay in the grip buttons which I use for picking up and throwing objects.

I have 2 events set up on them, one as a button for actually picking something up and another as the axis so I can animate the hand clenching into a fist. On the Index, Vive and even the older Oculus CV1 this all works great, but when I test on a Quest 2 with link cable it's slow.

This means when I try to pick something up and throw it on the Quest, the object flies off in the wrong direction because my hand has stopped moving by the time it registers the grip button being release.

The axis value is also slow, when I squeeze the button fast all the way, the axis value slowly moves up to 1 making my hand animation appear to be about half the speed it should be.

How do I get the real grip values on the Quest?

Hi @Gnimmel1979 - I just tried to repro with the VR Template in 4.26.2 which has Action Mappings for grabbing and axis mappings for the hand animation. I'm unable to see any delays with both SteamVR 1.18.7 and SteamVR Beta.

Are you seeing the delays on the UE VR Template as well on your end? One thing to check is if you've set any custom thresholds on the SteamVR Binding interface (although the plugin and the runtime shouldn't differentiate between a Quest or a CV1 for these input bindings)

Hello @1runeberg, thanks for taking a look at this.

I just tried a brand new project with the VR template and my Oculus Quest 2 directly connected through the official link cable and got the same results, so I know it's not only my project.

This time I made a screen recording so you can see exactly what I'm getting. This is from inside UE4.26.2 using VR preview, but I get the same lag if I make a build and run as an .exe.

If I do the exact same thing on my Index with the grip pressure, I get no lag and using Vive wands with the triggers make a instant fist.

At the start when I first put on the helmet and clench my fists (grip button), I'm clicking it in fully straight away, yet you can see the fingers slowly clench into a fist.

At around 45 seconds in, I am clicking in the grip button fully and releasing multiple times very fast and the fingers hardly move. Again, on the Vive wands and Index I get fast finger movement so it has time to form the fist.

I didn't realize until after I recorded, but it also recorded the microphone from the quest which picked up the grip buttons clicking sound so you can hear when I tried rapidly squeezing the grip buttons.

The video is uploaded to google drive at;
https://drive.google.com/file/d/172W5myT-aDJrsovGCkivOuhsvbv5wsgS/view?usp=sharing

can you print out the axis values of the grip and trigger and check how the response is?

I just did this in my game (I'm not too familiar with blue prints to add to the VR template) and it's surprising how slow the values are.

This is on an oculus quest 2 with link cable, pressing in the grip button fully each time, I'm not slowly pressing it in like the values suggest.

If I run this on my Index with either a Vive wand or the Knuckles controllers, the value is not slow at all and works as expected.

I uploaded the video to;

https://drive.google.com/file/d/15Bv7wki6249bNBo1RYlHqKafINZ3B2Wk/view?usp=sharing

You can get axis values from the standard template by adding this in the input mapping:
image

and in BP_MotionController the following nodes:
image

I've tested on my end and you can see from this session capture the granular changing of the axis values as i very slowly press in to the grip button. I also did a couple of quick grips:
https://user-images.githubusercontent.com/17371351/128751698-e7775280-33b9-459f-a6d0-7cbf20c688b8.mp4

If you're referring to the response of the animation, that's more tuning within the project/animation blending itself and not related to the values being sent to the engine.

if you're not getting those fine values when slowly pressing the grip button, it might be good to check if you have other plugins that may be interfering with input or perhaps ask a colleague to test, as im not able to repro this on the standard template with two separate testing rigs and quest2+cable sets.

I'm sorry for the late replay, I didn't get a notification about your last reply.

I just tried printing out the Axis value in the BP template and for some reason I couldn't get anything to print even after add it to the input axis and blue print as you described.

GrabAxis

I did do a little more searching and found a thread on the oculus forums which seem to be the same problem;
https://forums.oculusvr.com/t5/Oculus-Quest-2-and-Quest/Oculus-Link-Trigger-Response-Issues/td-p/786610

As for the animation on my video, I can live with a delayed animation, it's the delay on the click that affects game play. I use the axis value to drive a blendspace for the grip, but I use action mapping for the pick up and drop on the grip which works great on steam and Index, just not the Oculus.

You can try regenerating the bindings for the test template:
image

The fact that your axis is not registering to 1.0 immediately seem indicative there's something else wrong somewhere. I cant reproduce this error on my end in two different machines with two different quests, so im not sure i can help.

you might need to check with a colleague to see if they can reproduce in a vanilla UE and vanilla project without any other plugins. All I can think of if it's not a hardware issue, is that there's either code or another plugin that's interfering with input. I'm not sure why it only affect Oculus - it could be plugins or code related to Oculus in your project or UE install? do you get the same issue if you use just the Oculus plugin?

Thanks for taking another look.

Good to know it might only be my end, although I've tested this on 2 different computers here, both with the same results.

Saying that, it was the same Oculus Quest 2 on both computers. I will have to find someone with another quest to test my build on and see if it's my Quest.

I did recently fire up Half Life Alex and Saints and Sinners on the Quest 2 and didn't see any lag.

I'll reply again if I can track down where the problem is,

Hi - Just double checking if you've managed to test a vanilla UE in a different machine? I'd also test by disabling other plugins that might be using steamvrinput if you have any.