[785] Add script to allow setting min/max muscle values used for index tracking.
complete
error.mdl
We need a way to control on a per avatar basis the hand-tracking for the knuckles. A lot of avatars just don't work well with the default mechanim muscle values the tracking system is using to pose the hand. We should not be forced to mutilate our skeletons and re-do our weight-painting to get this to work (no, moving the root of the thumb's metacarpal from the wrist to the middle of the hand is not a valid fix, its straight up anatomically incorrect).
What I propose is a component we can add to an avatar that tells it the min/max stretch for each finger joint as well as a min/max spread for the thumb and the default spread for each finger. Since the knuckles only give us curl information for each finger, just interpolate between the min/max stretch value for all the joints in each finger as the curl goes from 0 to 1 (or whatever range it takes). This should give us a way to get the finger tracking working without having to mangle our avatar's skeleton.
Yes, I know this solution will probably cause the avatars' fingers to no longer line up as well with the player's real finger positions, but honestly I don't think it will be that immersion breaking.
Log In
Tupper - VRChat Head of Community
complete
Completing due to age, lack of activity, and the problem being solved (muscle settings lets you do this)
Tupper - VRChat Head of Community
in progress
You can already do this. We're still not gonna call this done, however. See my wall 'o text in this thread for deets.
Tupper - VRChat Head of Community
tracked
Tupper - VRChat Head of Community
In other words, you can already do this, right now, and it is likely the "correct" way to fix your thumb's weirdness.
Tupper - VRChat Head of Community
So, it turns out that the "Muscles & Settings" configuration in Unity's rigging configuration is already respected on avatars. (Big thanks to CurtisVL's guide that originally pointed this out, available here: http://voxelloop.co.uk/vrc/fix.html) After a small bone fix (rotating the first thumb bone to be more in-line with the YBot layout) I was able to restrict movement on the thumb from the default (-20,20) to (-20,10), and it improved significantly.
I'll try to translate my findings so far. Bear in mind that I'm no engineer, but I've been chatting with our engineers about this issue since Open Beta opened in an effort to determine if this is a purely "weird rig" issue or not-- and if it isn't, what we can do about it.
So, there's two things at play here: the possible data we have about your thumb, and the way that we "squash" the muscle range for compression and feedback.
- Thumb Data
Index Controllers only deliver a binary state about your thumb's up/down position. This means that your "fully spread" position in Muscles & Settings must look both good enough to be "natural" feeling and also good enough for gestures like ThumbsUp or FingerGun.
We do use your Grip Squeeze status to pose further-- try the different combinations of Grip Squeeze up/down and thumb up/down. There's three basic positions your thumb can be in-- fully curled, half-curled, and fully-stretched. All three have to look good, so adjust your range accordingly.
There's some things we could do on our side-- mostly in adjusting the rest pose of the thumb such that it isn't fully splayed. Full splay would only be used when we detect you're trying to do something like FingerGun or ThumbsUp. That's me spitballing BTW, not a confirmed change (yet).
- Muscle Squashing
So even if the data range in Muscles & Settings is (-20,10) for me, that range is squashed (resampled) down to (-1,1) by Unity. That's not so much a limit as it is "scaling." That means you can animate beyond (-1,1), but thats outside the "human" limit you've defined. (Internally for networking, we scale the (-1,1) to (0,1) but thats not important in this context.) The Index Controller finger values we're currently using do remain within the (-1,1) values, but that might change with the thumb presence stuff we've got coming.
As an aside, if you have to push the "bounds" in Muscles & Settings to 0 (on either curl or spread) and it still doesn't look good, that indicates that you must adjust the bone's rotation. This is probably one of the most useful bits of information to come out of this investigation so far.
ALL OF THAT aside, we're continuing to look into some things to help hand fidelity look better. The aforementioned "Thumb Presence" allows us to spread the thumb side to side based on what capsense you're touching (try it in SteamVR home), and that should help a bit. We'll also look into other solutions.
Thanks for the report!
Rak
Tupper - VRChat Head of Community: good shit
Adeon Writer
Tupper - VRChat Head of Community: Side to side motion for the thumbs is interesting, Oculus has this as well (check Oculus Home), any word on if it could get that as well?
Rak
I proposed something like this to Tupper. Let's see if the dev team takes the time to do this right.
Xiexe
Yes please.