What is the reason the hand-tracking joints have these axes? visionOS

What is the reason the hand-tracking joints have these axes? I'm trying to create a virtual hands model and that's a mess.

Answered by Vision Pro Engineer in 788551022

The resting pose for the right hand is easiest to understand in the context of a model posed in the T position (shown here). The left hand's transform is the mirror (180 degree x-axis rotation followed by a negative translation of all the joints) of the right hand's transform; similar to turning a glove inside out so you can wear it on the opposite hand. This enables an easier workflow to mirror animations and similar use cases since applying the same rotation to both sides will cause the hands' poses to mirror one another.

On a related note, towards the end of Going beyond the window with SwiftUI there’s an overview of creating virutal hands with ARKit.

Accepted Answer

The resting pose for the right hand is easiest to understand in the context of a model posed in the T position (shown here). The left hand's transform is the mirror (180 degree x-axis rotation followed by a negative translation of all the joints) of the right hand's transform; similar to turning a glove inside out so you can wear it on the opposite hand. This enables an easier workflow to mirror animations and similar use cases since applying the same rotation to both sides will cause the hands' poses to mirror one another.

On a related note, towards the end of Going beyond the window with SwiftUI there’s an overview of creating virutal hands with ARKit.

Thanks! In "Going beyond the window with SwiftUI" we have an example of gloves in the "Hello World" project, but I can't find that there now.

What is the reason the hand-tracking joints have these axes? visionOS
 
 
Q