Neos-Metaverse / NeosPublic

A public issue/wiki only repository for the NeosVR project
197 stars 9 forks source link

Hand Driver Finger Slerp #2489

Open Earthmark opened 3 years ago

Earthmark commented 3 years ago

Is your feature request related to a problem? Please describe.

Many avatars don't have finger proportions matching human hand proportions. Because of this the digits often poke out of the back of the hand (see the Vernid for an extreme example).

Relevant issues

None found yet

Describe the solution you'd like

Add a slerp value to each bone in the hand driver, as the hand driver applies rotations to the avatar, each bone only applies the provided percentage of the true rotation to the bone, instead of the raw controller provided value (this value can go under or over 1). Ex: 0.6 applies 0.6 of the total rotation, preventing the fingers from bending into the hand.

Describe alternatives you've considered

Custom slerp curves, so between 0-0.5 it is linear, then curves back to 0 so the finger bone ends slide along the palm instead of intersecting. This approach is a configuration nightmare, and requires complex curve support. That requires some editor love and ain't great.

Hand IK that back solves bone positions. This is even more complex than custom curves because it's trying to make one super curve with a dozen variables, this is even less likely to be successful.

Rebind the finger bones to different digits. This reduces total movement, where as the target bones do indeed exist. Some avatars (such as the Vernid) have dramatically long end finger bones though, so this would mean the last bone needs to be omitted completely.

Additional context

This is the system my Vernid uses (although manually constructed using two overlaid hands, one using a hand driver and the other linearRotationMappers). The system has been successful, and I feel it could be put back into the hand driver, hence this issue. This would also allow the hand driver to know when it's driven by a direct system like Leap Motion, where it could omit the lerp in leap motion but include it in steamvr (or other approximated finger position schemes).

Without the slerp image

With the slerp image

kulzae commented 3 years ago

Seconding this. there needs to be some sort of adjustment or this will keep becoming a problem. avatar makers continuously create avatars with this issue and expecting end users to edit bones is too much

alexderpyfox commented 2 years ago

I didn't know this was here but yes i also need this 😊

sveken commented 2 years ago

Seen this a few times now helping people import their vrchat avatars, Would be neat to fix,