Stage the Blender character/gear/prop library
Commit the finished generator output from the parallel Blender pass: 8 skinned NPC variants, 18 gear pieces, and 20 props under assets/models/blender/, editable sources (gdignored), manifest, review sheets, and the integration notes in docs/blender-assets.md. - audit: all 46 assets clean (characters 3,788-4,640 tris, under 6000/4000) - tests: Python manifest/audit contract and Godot import/bone/slot/ground checks - docs: README library section, architecture/plan references, TODO Phase 3.5 status, MEMORY integration rules - .gitignore: per-asset preview PNGs, extracted GLB textures, blend1 backups Nothing in the game loads the library yet; integration follows." && git log --oneline -1
This commit is contained in:
1 parent
7efb5024ec
commit
d513e0b82c
109 files changed
+1916
-114
No files matched your search
@@ -129,15 +129,20 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o
|
||||
flat plane, so avoidance (not a baked mesh) routes guests around props. Placements live in
|
||||
`PROP_PLACEMENTS` with `placement_problems()` validation; variants come from `variant_for(index)`.
|
||||
`smoke_props.gd` must be windowed because the guard reads captured-mouse input.
|
||||
- **Blender asset library (v0.6.0, in progress):** `tools/blender_assets.py` generates
|
||||
`assets/models/blender/{npc,npc_gear,props}/` plus `manifest.json`, `docs/blender_previews/`,
|
||||
and (when finished) `docs/blender-assets.md`. Contract: 8 character variants (same bones/slots
|
||||
as `npc_base`), 18 gear pieces in attach-point space (head/hand/back/chest), 22 props; the first
|
||||
nine replace current furniture/lamps/trees/cone, the rest are new dressing. Treat the manifest
|
||||
as the source of truth and run `python3 tools/blender_assets.py audit`/`sheet` before wiring.
|
||||
At the time of writing only `npc_casual` existed (7,756 tris / 5,616 verts, above the current
|
||||
6,000/4,000 character budget) — reconcile the budget before integration. Don't edit the
|
||||
generator while its Blender process is running.
|
||||
- **Blender asset library (v0.6.0, built + audited 2026-11-01, not integrated):**
|
||||
`tools/blender_assets.py` (`build`/`render` in Blender; `audit`/`sheet`/`list` stdlib) writes
|
||||
`assets/models/blender/{npc,npc_gear,props}/*.glb`, `manifest.json` (integration source of
|
||||
truth), sources in `assets/models/blender_src/` (`.gdignore`d), and review sheets
|
||||
`docs/blender_previews/sheet_*.jpg` (per-asset PNG renders are gitignored). 8 characters, 18
|
||||
gear, 20 props; notes in `docs/blender-assets.md`. Characters are drop-in for `npc_base`
|
||||
(same mesh node name, bones at the same rest positions, five tint slots) and stay under the
|
||||
6000/4000 budget only because of body decimation (0.36) + `smart_project` at 80°: glTF vertex
|
||||
count includes UV-seam splits, so extra beveled detail quickly breaks 4000.
|
||||
**Gotchas:** `bisect_plane` and thin bevels leave zero-area triangles (Godot warns "non-finite
|
||||
normal in LOD generation"); `_clean()` + a weld after bisect fix it, and the audit rejects them.
|
||||
Fixed-colour detail materials carry a 4×4 texture because `_apply_outfit_materials()` sets
|
||||
`albedo_color = WHITE` on unknown slots. Cycles CPU render ≈ 3 s/asset; Godot import of the
|
||||
library is clean.
|
||||
- **Prop pipeline (done):** audit enforces 400 tris / 600 verts, ground contact, UV range, no
|
||||
degenerate tris, one material. `capture_prop_gallery.gd` writes `10-prop-gallery.png` (3x2 studio
|
||||
line-up, back row on a platform) and the `prop_gallery` catalogue entry compares it.
|
||||
|
||||
Reference in new issue
Block a user