VR Input Latency on attached components collision.

Hi been working on a VR C++ template for the studio where I work for around a month now and I have a few questions about some issues I cant seem to fix or find solutions for anywhere.

Firstly when you attach any component to the hand it tracks fine visually although If you actually enable physics collision on say the hands mesh in the UE4 VR template built into the engine. Then pick a physics object up by balancing it on top of the hand it, when you move the hand up and down you can see it dip in and out of the mesh because its collision is getting allot of input latency. I understand that checking the box called disable low latency update fixes this issue but only by making the mesh lag behind the controller also. What I am asking is what is the actual process to get any attached components MESH AND COLLISION to the motion controllers to have a smaller amount or no latency.

To replicate this:

  • Create default VR blueprint template.
  • Go into the hands skeletal mesh and check the physics asset has collision. (Maybe change it to a box so its easier to balance things on the hands)
  • When you close your fist it enables physics collision on the hand in the default template.
  • Now you should walk over to one of the cubes in the demo map and close the fist and balance something on top and bring the hand up and down and you will see the collision dipping into the mesh.
  • Finally the easiest way to see whats happening is by launching the game and typing the console command “pxvis collision” this will show how the collision moves relative to the controller and mesh.

Now I know that disable low latency update fixes this but it actually just makes the mesh do the same as the collision which can be seen by going into the VR steam overlay and moving the hand around. You can see the latency compared to the SteamVR controller in the steam overlay that tracks perfectly.

So how do you make it so that the collision has low latency update as well?

Also I have been making a drawers, doors etc. The normal constraints in UE4 can be forced out of their constraint with the hands when physics collision is enabled? So I have coded some “Fake physics” which just translate the mesh using set world location with the relative offset to the motion controller along any given axis. But this method does not have collision so you cant push the drawer shut. What is the best way of going about adding this in. Box trace?

I know its allot but these are questions I have seen allot of people asking and there doesn’t seem to be a solid explanation so I would appreciate the answer thank you :).