overte icon indicating copy to clipboard operation
overte copied to clipboard

Hand-tracked fingers are bent sideways on SteamVR

Open ada-tv opened this issue 3 months ago • 2 comments

I have a hunch this might be related to us ignoring the hand metacarpal bones because our avatar rig doesn't have them.

It's also completely possible that this is a bug in SteamVR's OpenXR support.

Image (thanks @JulianGro)

ada-tv avatar Oct 11 '25 18:10 ada-tv

I do get a bunch of warnings in the log, which may or may not be related:

[10/15 13:50:01] [WARNING] [hifi.animation] Rig::getJointPositionInWorldFrame produced NaN.  is owner thread =  true  position =  (0, 0, 0) translation = (-9.74004, -15.2077, 131.47) rotation = (2.15769e-05, -0.995106, -2.15769e-05, -0.0988141) poseSetTrans = (nan, nan, nan) success = true jointIndex = 12

Rotation is a quaternion, so I have absolutely no idea how any of this is supposed to work. I thought, quaternions would be used for position and rotation? Maybe the variable name is just misleading?

bool Rig::getJointPositionInWorldFrame(int jointIndex, glm::vec3& position, glm::vec3 translation, glm::quat rotation) const {
    (...)

JulianGro avatar Oct 16 '25 20:10 JulianGro

Those are more likely your avatar's legs or arms. When our IK solver gives up (legs or arms clipping and it can't solve) it sets the joint rotations to NaN, for whatever reason.

ada-tv avatar Oct 17 '25 07:10 ada-tv

Monado now uses SteamVR's hand tracking poses on the steamvr_lh driver, and the hand poses are perfectly fine there. This is probably a bug with SteamVR itself.

ada-tv avatar Dec 10 '25 11:12 ada-tv