Skip to content

@relu-interactives/spatial-ecs


@relu-interactives/spatial-ecs / index / XrHandShape

Type Alias: XrHandShape ​

ts
type XrHandShape = {
  handedness: "left" | "right";
  fingers: Record<XrFinger, XrFingerCurl>;
  pinch: Record<Exclude<XrFinger, "thumb">, number>;
  spread: {
     thumbIndex: number;
     indexMiddle: number;
     middleRing: number;
     ringPinky: number;
  };
  palm: XrPalmPose | null;
  scale: number;
  thumbDirection: THREE.Vector3 | null;
  fingerDirections: Record<XrFinger, THREE.Vector3 | null>;
};

Defined in: xr/handPose.ts:363

Everything a pose is matched against, derived once per hand per frame.

Properties ​

PropertyTypeDescriptionDefined in
handedness"left" | "right"-xr/handPose.ts:364
fingersRecord<XrFinger, XrFingerCurl>-xr/handPose.ts:365
pinchRecord<Exclude<XrFinger, "thumb">, number>Thumb-opposition per finger.xr/handPose.ts:367
spread{ thumbIndex: number; indexMiddle: number; middleRing: number; ringPinky: number; }-xr/handPose.ts:368
spread.thumbIndexnumber-xr/handPose.ts:369
spread.indexMiddlenumber-xr/handPose.ts:370
spread.middleRingnumber-xr/handPose.ts:371
spread.ringPinkynumber-xr/handPose.ts:372
palmXrPalmPose | null-xr/handPose.ts:374
scalenumberCharacteristic hand size, metres.xr/handPose.ts:376
thumbDirectionTHREE.Vector3 | nullDirection the thumb points, world space.xr/handPose.ts:378
fingerDirectionsRecord<XrFinger, THREE.Vector3 | null>Direction each finger points, world space (metacarpal → tip). Separate from curl: a finger can be straight while pointing anywhere, and "index extended, pointing up" is a different pose from "index extended, pointing at the user".xr/handPose.ts:386