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>
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
"""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)])
|
||||
Reference in New Issue
Block a user