Docs: helmet reshape + one-model consolidation to the gameplay player (07-22) + AnimatedLitShader atlas-tint gotcha

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-22 21:19:01 -07:00
parent 2d47287b15
commit 8ddbc70ae7
@@ -69,7 +69,42 @@ to a lamp + darken the head**. Shipped (commit `8b50753f9`):
stronger character. Remaining optional character work: deeper proportion pass (bulk legs/shoulders), a face read
inside the porthole — offered as follow-ups.
**Blender gotchas banked (07-22):** (1) glTF `export_apply=True` does NOT bake an armature POSE — the exporter
## OVERHAUL-2 (07-22) — helmet reshape, stronger silhouette, ONE-model consolidation to gameplay
Operator, judging the game-cam view: "looks unfinished; camera should be the game POV (add switching); the
character reads like a lamp; do an extensive overhaul" → then "the diving helmet is too spherical/golf-ball,
make the silhouette stronger" → then "they should not be two separate models."
- **Helmet reshape:** the dome was a squashed sphere (0.44w × 0.34h). Reshaped in the master mesh → modest
vertical stretch + a FLATTENED FACEPLATE (front verts pulled toward a plane) + chunky collar ring + bigger
porthole bezel = a diving-helmet read, not a golf-ball. (A pure ×1.42 stretch first overshot into an egg —
reverted; the faceplate-flatten + collar were the real fix.)
- **Stronger silhouette:** broadened the outer shoulder-pad verts (armour mesh, Y 118-162, |X|>30, ×1.17) +
beefed the boots (Y<28, ×1.14) + the earlier tank-rig bulk.
- **ONE-model consolidation (the architecture fix):** the two Bathynauts were the ArtStaging static bake
(`SM_Suit_Bathynaut.glb`) and the gameplay skinned char (`Player.prefab`, built by `PlayerRigTools` from a
Synty body + a grafted skinned kit `SM_Suit_BathynautKit.fbx`) — both from the same `.blend` but exported
twice with divergent materials. Resolved: the master `Suit_Bathynaut_Kitbash.blend` is the **single source**;
I re-exported BOTH branches from it (static-posed GLB for staging, skinned kit FBX for gameplay). ArtStaging
STAYS a static bake — correct, because a plain (non-ECS) scene can't deform a Rukhanka-skinned mesh; it just
derives from the one source now. **Gameplay propagation:** re-exported the skinned kit with the reshaped
helmet grouped into Metal/Beacon/Porthole SMRs (rest pose), authored skinned diver materials
(`M_Diver_Metal_Skinned`, `M_Diver_PortholeGlow_Skinned`) + kept `M_EmissiveGloam_WarmSkinned` for the beacon,
shifted the body material to a cool diver tone, rebuilt `Player.prefab` via the proven graft chain. **Verified
live in DevSandbox from the game camera: the gold-dome lamp is gone — a dark-helmeted diver.**
-**AnimatedLitShader gotcha:** `_BaseColor` MULTIPLIES the `_BaseColorMap` (PaletteAtlas) sample — a dark
tint over a gold atlas band stays gold-ish. To force a flat color, CLEAR `_BaseColorMap` (null) so the
material uses `_BaseColor` directly. (Palette-correct alternative = re-UV the piece to a dark atlas band.)
- **Remaining full-match gap:** the gameplay char keeps the Synty body, so the brass-armour/teal-undersuit
split + the shoulder/boot silhouette edits (which live on the `.blend` armour) are NOT in-game yet — that
needs the Synty body replaced by the `.blend` body+armour (a bigger `PlayerRigTools` change). The core
lamp-fix + reshaped helmet + palette shift DID land.
- **Camera:** `StagingCameraSwitcher` POV rig (POV_1_Game = real rig Pitch45/Dist13/FOV55, + hero/front/close;
V/]/[ + 1-4) with deep-water clear. Commits `8b50753f9` (staging overhaul), `8df43b830` (helmet+silhouette),
`2d47287b1` (gameplay player). **★ the "lamp" read is WORST at true game scale — judge characters from
POV_1_Game / in a gameplay scene, never only a hero shot.**
## (earlier) 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