[SOLVED] Getting position of fingertips when using hand tracking

Godot Version

4.3

Question

I’m trying to get input from XR hand tracking. Specifically, I need the position of the finger tips (at least the thumb and index finger). I do not need the entire skeleton for any other reason, nor do I need to display the hand itself.

From what I have been able to find, this is best done using an XRNode3D with a XRHandModifier3D. This requires the use of a Skeleton3D, but I can’t find much information on how to use this. For one thing, no-where have I found how to add bones to the skeleton. I have tried using the hands from xrToolkit, but they are badly distorted (the bones are rotated) because they are not OpenXR hands. I did find one hand model that is OpenXR, but then I can’t find how to extract, build, or link (whichever is required) the skeleton.

Any help would be greatly appreciated!

Ive got some OpenXR compliant hand meshes in GitHub - Malcolmnixon/GodotXRHandPoseDetector: Godot XR Hand Pose Detector which can be driven by the XRHandModifier3D.

You can then create BoneAttachment3D nodes as children of the hand skeleton and driven by the tip-bones.

Thanks!
I assume I only need the gltf (and bin) files?
When I add them to the scene I can see the models and they track to my hands during runtime, but the fingers don’t move.

My current setup:
XROrigin
| - XRNode3D
| - - HandModel (gltf)
| - - - Skeleton3D
| - - - - XRHandModifier

But the skeleton contains no bones, and I can’t figure out how to add them. I assume this is causing the issue, that the modifier doesn’t know what to update.

I can also see the armature that is part of the hand gltf, but I don’t know how to access it.

When I try to use the BoneAttachment3D, there are no bones to select

Figured it out, it turns out that I missed the “Make Children Editable” option. All works now, thanks!