Files
settled-reach/spikes/synty-intake/scripts/bone_axes_dump.py
T
jpmschweitzerandClaude Fable 5 cb6b39331d feat(client): follow-facing — body commits to path, mouse drives layered head/torso look-at (T-1088)
During an RMB path-follow the body yaw locks to the leg direction (rig
commit_body_to_motion, from interpolated velocity — immune to SetFacing
interleaving between throttled steps). The mouse instead drives a layered
look-at: LookAtModifier3D pair on Head (±70°) + spine_02 (±30° torso twist
for looking far lateral/behind — past their sum the character physically
cannot look further without turning). Forward axis measured from the
armature rest pose (+Z), not guessed. Influence fades in/out on follow
start/end. Pure client presentation per D-249; SetFacing still rides the
wire, so the server vision cone follows the mouse while walking — the
character looks where the player points.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 20:35:43 +02:00

21 lines
759 B
Python

"""Dump rest-pose local matrices for look-at target bones in armature.glb."""
import sys
import bpy
glb = sys.argv[sys.argv.index("--") + 1]
bpy.ops.wm.read_factory_settings(use_empty=True)
bpy.ops.import_scene.gltf(filepath=glb)
for obj in bpy.data.objects:
if obj.type == "ARMATURE":
for name in ("Head", "neck_01", "spine_02", "spine_03"):
b = obj.data.bones.get(name)
if b is None:
print(name, "MISSING")
continue
# matrix_local: bone rest transform in armature space.
m = b.matrix_local
print(name, "head:", [round(v, 3) for v in b.head_local])
for row in range(3):
print(" ", [round(m[row][c], 3) for c in range(4)])