Yellow-Dog-Man / Resonite-Issues

Issue repository for Resonite.
https://resonite.com
140 stars 2 forks source link

Ability to get correct hand body nodes for head and hands avatars #3024

Open JackTheFoxOtter opened 1 month ago

JackTheFoxOtter commented 1 month ago

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

Full IK avatars generate proxies for the body nodes pointing at the correspondings parts of the avatar's hierarchy. By getting the "hand" body nodes, you can retrieve the slot of the hands of the avatar. For head and hands avatars, those proxies seems to be missing, so the body nodes point to the left / right hand slots directly under the user's root slot instead. This creates a difference between full IK and head and hands avatars, which leads to some user made systems working for full IK avatars not working for head and hands avatars.

This also means that all the finger segment body nodes for head and hands avatars are null, and the head body node doesn't point to the actual head of the avatar.

As a concrete example, I made a system that needs to differentiate between what side of hand a user uses to physically press a button. I grabbed the slot of the button event source component and checked if it's a child of the user's left hand body node to check if it's coming from the user's left hand. This works for full IK avatars, but doesn't work for head and hands avatars, since the hand body node doesn't point to the actual hand of the avatar that has the grabber and fingers.

Describe the solution you'd like

I'd like the hand body nodes on head and hands avatars to point at the correct hand slots on the avatar.

Describe alternatives you've considered

A different way to get the correct hand slots for head and hands avatars. I do however think this would add unnecessary confusion. I feel like the body nodes should point at the correct nodes on the body regardless of avatar type.

Additional Context

No response

Requesters

marsmaantje & myself

shiftyscales commented 1 month ago

This sounds highly related to #1805 - as I had discovered there- this primarily seems to stem from the lack of a BipedRig component on head and hands avatars which appears to be the component necessary to feed the proper slots to these nodes.

As I commented there:

I did some digging, and it appears that the BipedRig component contains a list of body nodes and their assigned bones, presumably fed to it by the VRIK and HandPoser components. Removing the BipedRig component will cause the BodyNodeSlot node to output the BodyNode instead.

As far as I can tell this is intended/by design.

On that previous issue, their specific use-case / need was not made apparent- but I feel you have made some clearer cases here.

In particular:

Seeking input from @Frooxius when he's available.