@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 ​
| Property | Type | Description | Defined in |
|---|---|---|---|
handedness | "left" | "right" | - | xr/handPose.ts:364 |
fingers | Record<XrFinger, XrFingerCurl> | - | xr/handPose.ts:365 |
pinch | Record<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.thumbIndex | number | - | xr/handPose.ts:369 |
spread.indexMiddle | number | - | xr/handPose.ts:370 |
spread.middleRing | number | - | xr/handPose.ts:371 |
spread.ringPinky | number | - | xr/handPose.ts:372 |
palm | XrPalmPose | null | - | xr/handPose.ts:374 |
scale | number | Characteristic hand size, metres. | xr/handPose.ts:376 |
thumbDirection | THREE.Vector3 | null | Direction the thumb points, world space. | xr/handPose.ts:378 |
fingerDirections | Record<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 |

