Raise the character mesh budget to 8000
This commit is contained in:
1 parent
cd5e0e0ff7
commit
7dc3d3c873
8 files changed
+50
-41
No files matched your search
@@ -6,14 +6,12 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o
|
||||
|
||||
- The visual-alignment path/loader/panel/HUD work and the realism lighting pass are complete and
|
||||
recorded in `DONE.md`; remaining visual items are the realism follow-ups in `TODO.md`.
|
||||
- **Character vertex cap (2026-11-02):** the current **5,000 glTF vertices per character** limit is
|
||||
now the binding realism constraint, not a design rule. `npc_firefighter` is at **4,948** after
|
||||
the hand pass, leaving no room for better eyelids, nose/lip/ear shaping, hand grips or clothing
|
||||
seams. The cap needs to be raised for the next realism pass; proposed **6,000 vertices** (and
|
||||
revisit the 6,000-triangle cap in the same change). Update `CHAR_MAX_VERTS`/`CHAR_MAX_TRIS`, the
|
||||
contract tests, `blender_assets.py audit`, `docs/npc-visual-review.md`, and re-run the 24-NPC and
|
||||
Web/Compatibility budgets before accepting the new limit. Do not treat 5,000 as a hard product
|
||||
constraint.
|
||||
- **Character mesh cap (2026-11-02):** the eight library variants now use **8,000 triangles /
|
||||
8,000 glTF vertices** per character (`CHAR_MAX_TRIS`/`CHAR_MAX_VERTS` in
|
||||
`tools/blender_assets.py`), up from 6,000/5,000. The frozen `npc_base` fallback keeps its
|
||||
6,000/4,000 contract. This headroom is specifically for the remaining face, hand-grip and
|
||||
clothing realism work; re-run the 24-NPC and Web/Compatibility budgets as geometry lands. Do not
|
||||
add detail without measuring, and do not silently lower the cap back to 5,000.
|
||||
- `PLAN.md` is a compact product/design document, not an implementation log. Historical control
|
||||
and v0.3.0 specs were folded into its Presentation and Controls section; put new step-by-step
|
||||
work in `TODO.md`, not the plan.
|
||||
@@ -101,9 +99,9 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o
|
||||
- **NPC hand pass (0.9.4, 2026-11-02):** palm radius 0.046 at z .742, scale (.80,.62,.88);
|
||||
fingers are `tube` paths from z .758 to .681–.694 with tip spheres, thumb is a bent tube. The
|
||||
optional hand capture is `capture_npc_baseline.gd -- --view=hand` (8 frames, baseline stays 48).
|
||||
`npc_firefighter` is now at 4,948 verts (52 below the current 5,000 cap); the cap is provisional
|
||||
and needs raising for further realism (see the character-vertex-cap decision above). Grip
|
||||
offsets remain open.
|
||||
`npc_firefighter` is at 4,948 verts; the library cap is now 8,000 (see the character-mesh-cap
|
||||
decision above), so the remaining face/grip/clothing detail can use real headroom. Grip offsets
|
||||
remain open.
|
||||
- **UI flow smoke (2026-11-02):** `smoke_ui_flows.gd` boots the real scene and
|
||||
exercises inspection allow/deny, normal vs emergency radio, Help filtering,
|
||||
wand allow/deny and review return-to-menu. Keep this smoke in the 0.9.6
|
||||
@@ -362,7 +360,8 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o
|
||||
ridge, cheekbones, nose bridge/tip, ears with lobes and split upper/lower lips; the new
|
||||
`eye_white` material is a *fixed-colour* slot, so `_apply_outfit_materials()` leaves it white.
|
||||
`_hands_and_shoes()` has four fingers plus a thumb and `_clothing()` adds `Cuff` tori.
|
||||
Budget work: `CHAR_MAX_VERTS` 5000 (see the library note), body decimation 0.26, upper lids are
|
||||
Budget work at the time: `CHAR_MAX_VERTS` 5000 (the library cap is now 8000; see the
|
||||
character-mesh-cap decision), body decimation 0.26, upper lids are
|
||||
boxes rather than spheres, and knuckle spheres/nostrils were cut to stay inside it.
|
||||
**Orientation debugging:** to check a GLB's front axis, compare the mean Z of the `eye_white`
|
||||
surface (face) and of the `rubber` sole verts (toes) — all 8 avatars are +Z, so any
|
||||
@@ -373,11 +372,13 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o
|
||||
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.26) + `smart_project` at 80°: glTF vertex
|
||||
(same mesh node name, bones at the same rest positions, five tint slots); the `npc_base`
|
||||
fallback stayed under its frozen 6000/4000 budget because of body decimation (0.26) +
|
||||
`smart_project` at 80°: glTF vertex
|
||||
count includes UV-seam splits, so extra beveled detail quickly breaks the limit. The 2026-11-01
|
||||
face/hand pass raised `CHAR_MAX_VERTS` to 5000 (tris 3,974–5,026) after measuring 16 avatars at
|
||||
~6.9 ms of a 50 ms frame; `npc_pipeline.MAX_VERTICES`/`MAX_TRIANGLES` (base mesh) are unchanged.
|
||||
~6.9 ms of a 50 ms frame; on 2026-11-02 the library cap became 8000/8000 while
|
||||
`npc_pipeline.MAX_VERTICES`/`MAX_TRIANGLES` (base mesh) stayed frozen at 4000/6000.
|
||||
**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
|
||||
|
||||
Reference in new issue
Block a user