Lane E round 4 (E1): decimate 19 ped rigs 924k→46k tris (≤3k each) for gate 3

weld + meshopt simplify (--ratio 0.05 --error 0.12); skinning + skeleton preserved
(65 joints intact), walk/idle clips untouched, silhouettes clean at street distance.
Originals backed up to gitignored pipeline/.peds_orig/. Hands to Lane D (D2) for rig
validation; Lane F re-measures gate 3 (~24-rig cap × ≤3k ≈ ≤67k fleet).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
m3ultra 2026-07-14 18:29:50 +10:00
parent 5b8c806271
commit 518678d4e4
23 changed files with 119 additions and 0 deletions

1
.gitignore vendored
View File

@ -9,3 +9,4 @@ node_modules/
.env
pipeline/.genprops/
web/assets/models/
pipeline/.peds_orig/

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

View File

@ -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 **~31k56k 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
15642805, 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).

97
pipeline/_peds_decim.json Normal file
View File

@ -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
}
]

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.