diff --git a/.gitignore b/.gitignore index b180dc9..44f9f8f 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ node_modules/ .env pipeline/.genprops/ web/assets/models/ +pipeline/.peds_orig/ diff --git a/docs/shots/laneE/peds_decimated.png b/docs/shots/laneE/peds_decimated.png new file mode 100644 index 0000000..6ce73f7 Binary files /dev/null and b/docs/shots/laneE/peds_decimated.png differ diff --git a/pipeline/AUDIT.md b/pipeline/AUDIT.md index 893afca..519d80a 100644 --- a/pipeline/AUDIT.md +++ b/pipeline/AUDIT.md @@ -158,3 +158,24 @@ Raw stats for every **parsable `.glb`** (59 of the ~69 library entries; the rest or subdir sources not counted): `pipeline/_audit_stats.json`. `glb_stat.py` reports **world-space** dims (node-transform-aware) and WebP/PNG/JPEG texture sizes. Normalizer output: `pipeline/_normalize_results.json`. + +## Round 4 — ped-rig decimation (gate-3 blocker) + +The 19 street ped rigs in `web/models/peds/` were **~31k–56k tris each (924k total)** — the cause of +gate 3 failing (~279k tris at the busiest intersection vs ≤200k). Decimated to **≤3k tris each** +(integrator decision #1) via `gltf-transform` `weld` → `simplify` (meshoptimizer): + +``` +gltf-transform weld in.glb _w.glb +gltf-transform simplify _w.glb out.glb --ratio 0.05 --error 0.12 +``` + +meshoptimizer works cleanly here (proper manifold skinned character meshes, NOT the TRELLIS +shell-soup of the R3 hero props). Result: **924,153 → 46,551 tris** (48.6k → 2.45k avg; range +1564–2805, all ≤3k), **36M → 5M** on disk. **Skinning fully preserved** — `JOINTS_0`/`WEIGHTS_0` +intact, skeleton unchanged (nodes + 65 joints identical to source), so the shared `walk.glb`/ +`idle.glb` clips retarget unchanged (both left untouched). Contact sheet: +`docs/shots/laneE/peds_decimated.png` — silhouettes/textures read clean, no melted faces/hands +(fine for street distance). Originals backed up (gitignored) at `pipeline/.peds_orig/`; per-ped +before/after in `pipeline/_peds_decim.json`. Lane D validates rig binding + anims (task D2); Lane F +re-measures gate 3 (~24-rig near cap × ≤3k ≈ ≤67k fleet contribution). diff --git a/pipeline/_peds_decim.json b/pipeline/_peds_decim.json new file mode 100644 index 0000000..50662e8 --- /dev/null +++ b/pipeline/_peds_decim.json @@ -0,0 +1,97 @@ +[ + { + "file": "comical_boy_01.glb", + "before": 31292, + "after": 1564 + }, + { + "file": "comical_luchador_01.glb", + "before": 49576, + "after": 2478 + }, + { + "file": "man_athletic_01.glb", + "before": 56258, + "after": 2805 + }, + { + "file": "man_bouncer_01.glb", + "before": 41532, + "after": 2073 + }, + { + "file": "man_casual_01.glb", + "before": 42818, + "after": 2132 + }, + { + "file": "man_casual_02.glb", + "before": 49180, + "after": 2458 + }, + { + "file": "man_casual_03.glb", + "before": 47867, + "after": 2386 + }, + { + "file": "man_dj_streetwear_01.glb", + "before": 53876, + "after": 2692 + }, + { + "file": "man_elder_01.glb", + "before": 32098, + "after": 1603 + }, + { + "file": "man_grunge_01.glb", + "before": 50187, + "after": 2500 + }, + { + "file": "man_soldier_ww2_01.glb", + "before": 54668, + "after": 2729 + }, + { + "file": "man_suit_01.glb", + "before": 54938, + "after": 2741 + }, + { + "file": "man_worker_hivis_01.glb", + "before": 53738, + "after": 2680 + }, + { + "file": "woman_athleisure_01.glb", + "before": 52126, + "after": 2596 + }, + { + "file": "woman_business_01.glb", + "before": 52838, + "after": 2711 + }, + { + "file": "woman_casual_01.glb", + "before": 53460, + "after": 2670 + }, + { + "file": "woman_casual_02.glb", + "before": 48229, + "after": 2769 + }, + { + "file": "woman_chef_01.glb", + "before": 49794, + "after": 2485 + }, + { + "file": "woman_smart_01.glb", + "before": 49678, + "after": 2479 + } +] \ No newline at end of file diff --git a/web/models/peds/comical_boy_01.glb b/web/models/peds/comical_boy_01.glb index 5f99b50..4be95ef 100644 Binary files a/web/models/peds/comical_boy_01.glb and b/web/models/peds/comical_boy_01.glb differ diff --git a/web/models/peds/comical_luchador_01.glb b/web/models/peds/comical_luchador_01.glb index 5744719..f8db204 100644 Binary files a/web/models/peds/comical_luchador_01.glb and b/web/models/peds/comical_luchador_01.glb differ diff --git a/web/models/peds/man_athletic_01.glb b/web/models/peds/man_athletic_01.glb index c5efeda..ca04c33 100644 Binary files a/web/models/peds/man_athletic_01.glb and b/web/models/peds/man_athletic_01.glb differ diff --git a/web/models/peds/man_bouncer_01.glb b/web/models/peds/man_bouncer_01.glb index e993436..7050449 100644 Binary files a/web/models/peds/man_bouncer_01.glb and b/web/models/peds/man_bouncer_01.glb differ diff --git a/web/models/peds/man_casual_01.glb b/web/models/peds/man_casual_01.glb index 231c8f0..28250d9 100644 Binary files a/web/models/peds/man_casual_01.glb and b/web/models/peds/man_casual_01.glb differ diff --git a/web/models/peds/man_casual_02.glb b/web/models/peds/man_casual_02.glb index 726abd6..892ae50 100644 Binary files a/web/models/peds/man_casual_02.glb and b/web/models/peds/man_casual_02.glb differ diff --git a/web/models/peds/man_casual_03.glb b/web/models/peds/man_casual_03.glb index 0b9c212..fabbd5e 100644 Binary files a/web/models/peds/man_casual_03.glb and b/web/models/peds/man_casual_03.glb differ diff --git a/web/models/peds/man_dj_streetwear_01.glb b/web/models/peds/man_dj_streetwear_01.glb index bacdd16..bbd17f9 100644 Binary files a/web/models/peds/man_dj_streetwear_01.glb and b/web/models/peds/man_dj_streetwear_01.glb differ diff --git a/web/models/peds/man_elder_01.glb b/web/models/peds/man_elder_01.glb index d09bb45..9cf6e58 100644 Binary files a/web/models/peds/man_elder_01.glb and b/web/models/peds/man_elder_01.glb differ diff --git a/web/models/peds/man_grunge_01.glb b/web/models/peds/man_grunge_01.glb index 48f99ca..a9514fd 100644 Binary files a/web/models/peds/man_grunge_01.glb and b/web/models/peds/man_grunge_01.glb differ diff --git a/web/models/peds/man_soldier_ww2_01.glb b/web/models/peds/man_soldier_ww2_01.glb index e512ff6..6a40db3 100644 Binary files a/web/models/peds/man_soldier_ww2_01.glb and b/web/models/peds/man_soldier_ww2_01.glb differ diff --git a/web/models/peds/man_suit_01.glb b/web/models/peds/man_suit_01.glb index 060027d..9e1c9fc 100644 Binary files a/web/models/peds/man_suit_01.glb and b/web/models/peds/man_suit_01.glb differ diff --git a/web/models/peds/man_worker_hivis_01.glb b/web/models/peds/man_worker_hivis_01.glb index 55c0967..8e7bbd0 100644 Binary files a/web/models/peds/man_worker_hivis_01.glb and b/web/models/peds/man_worker_hivis_01.glb differ diff --git a/web/models/peds/woman_athleisure_01.glb b/web/models/peds/woman_athleisure_01.glb index 1b052d9..41d0416 100644 Binary files a/web/models/peds/woman_athleisure_01.glb and b/web/models/peds/woman_athleisure_01.glb differ diff --git a/web/models/peds/woman_business_01.glb b/web/models/peds/woman_business_01.glb index 51d61bb..2e2cbb3 100644 Binary files a/web/models/peds/woman_business_01.glb and b/web/models/peds/woman_business_01.glb differ diff --git a/web/models/peds/woman_casual_01.glb b/web/models/peds/woman_casual_01.glb index 62acfa8..54a1719 100644 Binary files a/web/models/peds/woman_casual_01.glb and b/web/models/peds/woman_casual_01.glb differ diff --git a/web/models/peds/woman_casual_02.glb b/web/models/peds/woman_casual_02.glb index ae477ae..d4c5e6f 100644 Binary files a/web/models/peds/woman_casual_02.glb and b/web/models/peds/woman_casual_02.glb differ diff --git a/web/models/peds/woman_chef_01.glb b/web/models/peds/woman_chef_01.glb index e6105ab..c32295d 100644 Binary files a/web/models/peds/woman_chef_01.glb and b/web/models/peds/woman_chef_01.glb differ diff --git a/web/models/peds/woman_smart_01.glb b/web/models/peds/woman_smart_01.glb index e6dede3..f3b5733 100644 Binary files a/web/models/peds/woman_smart_01.glb and b/web/models/peds/woman_smart_01.glb differ