Docs: suit pose shipped (07-22) — session log + roadmap A0 update; Blender pose-bake gotchas

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-22 18:44:58 -07:00
parent eaff8d16e3
commit 5e0044b492
2 changed files with 26 additions and 4 deletions
@@ -26,7 +26,27 @@ T-posed. Four of five fixes were staging (headless); the fifth (pose) is a Blend
player" line never ran → an empty 5-slot bar polluted the frame. Fix: root defaults `DisplayStyle.None` at
build, flips to Flex only when a local player is found — also kills any pre-connect/menu flash in gameplay.
## NOT done — the suit pose (operator-gated Blender sitting)
## UPDATE (07-22) — the suit pose IS now done
Operator greenlit ("go ahead and do the next fixes"), so the pose shipped via `/art-dev`. The suit `.blend`
turned out to be **already rigged** to the Synty humanoid skeleton — the Unity static-T-pose was because the base
body/armour/head carried vertex groups with **no Armature modifier** (only the kit attachments had them), and 2
lamp parts were unweighted. Rig cleanup (added the modifiers; weighted ChestLamp/LampRim to Spine_03), posed a
grounded combat-ready stance (shoulders down ~63°, elbows braced forward ~22° — axis found by a 2-probe render
loop since the Synty bone rolls are non-standard: local Z = the swing, negative = down), baked the pose to static
geometry and re-exported. **Master `.blend` keeps the rig+pose re-editable**; the GLB overwrite flowed into the
connected ArtStaging prefab instance (38 parts intact, materials + the extracted staging emissive preserved).
Suit width 2.05 m (T-pose) → 1.04 m (posed). Verified from the front + top-down game camera + in the composed
ArtStaging scene (full/200px/grayscale) — reads as a heavy standing diver. Commit `eaff8d16e`.
**Blender gotchas banked (07-22):** (1) glTF `export_apply=True` does NOT bake an armature POSE — the exporter
special-cases armature modifiers as skinning and writes bind pose; to bake a pose to static, apply the deform
first (depsgraph `new_from_object(evaluated)` → assign `o.data` → clear modifiers), THEN export. (2) blendermcp's
headless context makes `bpy.ops.export_scene.gltf` throw `Context has no attribute active_object` and
`modifier_apply.poll() failed` — wrap ops in `bpy.context.temp_override(window, area(VIEW_3D), region,
active_object, object, selected_objects)`, or avoid the operators entirely (depsgraph bake). → cookbook.
## (superseded) the pose was deferred at first — kept for the record
The staging suit is one combined Synty body mesh (`SM_Chr_SpaceSoldier_Male_01`) welded with 37 static kit
attachments, **no rig** in the exported asset (Unity: SMR=0, no Animator). Posing the T-pose requires a Blender