demo · v131

WebXR Hand Input - Level 1

Hand tracking exposes per-joint pose data for all 26 joints per hand. The button below requests an immersive-AR session with the hand-tracking feature; on devices without it you'll see the rejection, and the diagram visualises the joint layout each XRHand exposes.

probing…

joint layout

left hand (26 joints)

right hand (26 joints)

the api

const session = await navigator.xr.requestSession("immersive-ar", {
  requiredFeatures: ["hand-tracking"],
});

session.requestAnimationFrame((time, frame) => {
  for (const source of session.inputSources) {
    if (!source.hand) continue;
    const tip = source.hand.get("index-finger-tip");
    const pose = frame.getJointPose(tip, refSpace);
    console.log(pose.transform.position, pose.radius);
  }
});

see also