Files
animation/hand-poses/README.md
T
jeremy 9ac741302e feat(hand-poses): canonical hand-pose library, pre-ship staging for ariki-game
Four Kevin-harvested poses (flat/relaxed/fist/grip) as glTF node-local quats
on the canonical Quaternius skeleton. pose_flat shipped to the runtime
HandPoseLayer 2026-08-17 and verified in the dance bed; fist/grip staged,
blocked on the Lena finger-weight repair.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-17 14:53:20 -07:00

1.8 KiB
Raw Blame History

Hand poses — pre-ship staging for ariki-game

Canonical hand-pose library. Poses live here first; when a pose is adopted for the game it is copied to ariki-game/assets/quaternius/hand-poses/ (keep the two byte-identical — the runtime HandPoseLayer reads the game copy).

Format

{"bones": {"<bone_name>": [x, y, z, w], ...}} — glTF node-local quaternions on the canonical Quaternius skeleton, which is exactly Godot bone-pose space for these bodies. Apply directly:

skeleton.SetBonePoseRotation(skeleton.FindBone(name), new Quaternion(x, y, z, w));

40 bones per pose, including *_04_leaf_* tip bones. Some bodies lack the leaf bones — skip bones FindBone returns -1 for, never error. On non-canonical rigs (Mako) poses must be applied rest-relative; the runtime layer simply excludes those bodies instead.

Poses

File Source (Kevin packs) Runtime status
pose_flat.json harvested flat hand SHIPPED to layer 2026-08-17 — verified in the dance bed on exp01
pose_relaxed.json HandWave01 f0 staged
pose_fist.json AttackPunch01_R/L f7, merged blocked on Lena finger-weight repair (fist/grip shred on exp01exp04)
pose_grip.json CombatIdle1H01 f0, both hands blocked, same repair

Verification (before shipping a pose)

  • tools/handpose_bake_preview.py body.glb pose.json out.glb — bake into rest rotations.
  • tools/skin_displacement_check.py posed.glb original.glb — Godot-exact LBS travel; cm-scale = sane, m-scale = broken. Blind to fin tearing — pair it with the edge-stretch check (tools/edge_stretch.py).
  • tools/handpose_skin_to_obj.py + tools/handpose_render_objs.py — the only honest visual check. Never judge by importing a baked-pose GLB into Blender (false shards).