How to manage wonky reverse IK in VR?

Hi all,

I’m experimenting with VR motion using the Upper Body IK plugin:

Following this tutorial:

The UBIK seems to do a lot of the heavy lifting pretty well, but for some reason there seems to be an offset between where the plugin thinks the hand is and where the hand actually is. It has a debug mode that displays a target (white) and actual (orange) sphere to track any local offsets you might provide for calibration. Both debug spheres are on top of each other, the axes line up perfectly and they are concentric with the controller sphere (white solid), but the character mesh’s handbone doesn’t actually seem to be in the position it says it is. I attached a video below.

here is a screen shot of the UE5 mannequin hand bone:
image

You can see, especially at the end of the video, that the hand bone point (apparently in the wrist) is not at the center of the white sphere (which I added to show where the controller actually is). There are some options available like hand position offsets and hand rotation offsets, but changing these seems to generally make things worse.

Does anyone have any experience with using this plugin or reverse IK in general that can give some advice? I could understand and live with the shoulder/elbow being off, but the hand should match the controller extremely well, it’s the one sensor we actually have!

In general, when making VR games, what is the best practice for managing the imprecise nature of reverse IK, but taking advantage of the high level of precision in the controller tracking? It seems many games use floating hands, which I like. I also like the immersion of animating hands and arms for a multiplayer game. My dilemma is that I want to pick up a sword and swing it, but I’m not sure how to reconcile the position/rotation of the sword according to the floating hands and the position/rotation of the sword according to the character mesh. Which is the truth? I feel like I have two options: get the hands to match perfectly (at least when the controller is in range of the mesh’s reach) or sadly drop off the arms for the character models and only use floating hands (I’m trying to avoid this).

Any help would be appreciated!

have you found a solution?