Lane E round 5 (E2): depot growth — street bin + record-crate stack (consumer-driven)

v2 features are procedural (no forced GLB needs), so E2 is light per Fable's "no
unconsumed entries": two synthetic depot props with clear homes — council-bin ->
procity_street_bin_01 (Lane B street dressing) + milk-crate-stack ->
procity_fit_crate_stack_01 (Lane C floor piles / dig). Both 3k tris, base-origin,
re-normalized to procity names + thumbs, published, verified loading, validate --depot
0 err. Manifest 18 fittings + 10 furniture (28 GLBs). Also noted B3 resolved
(novelty_record 26.5k->8k via E1 bake).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
m3ultra 2026-07-14 21:27:13 +10:00
parent 8644d3f7ac
commit 019304d647
8 changed files with 91 additions and 6 deletions

View File

@ -22,8 +22,12 @@ other lanes' files was touched.*
att × ~$0.16), well under the <$1 estimate; guardrail held. Costs logged in AUDIT R5. Last two
primitive-only fittings (glass_case, magazine_rack) retired; new street `bus_shelter`. Manifest
now 17 fittings + 9 furniture (26 GLBs). Contact sheet `docs/shots/laneE/props_fal.png`.
- **E2 — depot growth for v2:** ~812 library props serving C's dig / D's roster / B's windows.
*(next)*
- **E2 — depot growth: DONE (light, consumer-driven).** The v2 features are procedural (dig uses
generated sleeves, B's window shader + D's roster need no GLBs), so per Fable "no unconsumed
entries" I added two clear-consumer props: `street/bin` (council-bin → Lane B) + `fit/crate_stack`
(milk-crate-stack → Lane C floor piles/dig). Both 3k tris, re-normalized + published, verified
loading, `validate --depot` 0 err. Also **resolved Lane B's B3 ask** — novelty_record 26.5k→8k
via the E1 bake. Manifest now **18 fittings + 10 furniture (28 GLBs)**. Further growth on request.
## Round 4 (Fable) — ped decimation (gate-3 critical path) + asset fixes

View File

@ -31,10 +31,18 @@ The two remaining primitive-only fittings are now real GLBs on the depot (≤8k,
- Both base-origin, verified loading in the vendored GLTFLoader. `manifest.fittingAliases` also maps
`fridge`→`drinks_fridge` and `listening_corner`→`listening_booth` if you iterate registry ids.
### → Lane B: new street prop — `bus_shelter`
`procity_street_bus_shelter_01.glb` (manifest `furniture.bus_shelter`, 2.33×1.41 m, 2.4 m tall, ≤8k,
base-origin). Solid painted-steel shelter (back wall + roof + bench) for street dressing / D's roster
context — place at bus-stop-ish spots along the footpath if useful. Primitive-free; fail-soft as usual.
### → Lane B: new street props — `bus_shelter` + `bin`
- `procity_street_bus_shelter_01.glb` (`furniture.bus_shelter`, 2.33×1.41 m, 2.4 m, ≤8k, base-origin).
Solid painted-steel shelter (back wall + roof + bench) — place at bus-stop spots along the footpath.
- `procity_street_bin_01.glb` (`furniture.bin`, 0.57×0.68 m, 1.0 m, 3k) — red council wheelie bin, an
obvious town-furniture gap. Map `bin` in your furniture GLB-upgrade path if you want it on footpaths.
- **B3 resolved:** `novelty_record` is now **8k** (was 26.5k) via the E1 bake — re-measure the busy view.
All furniture GLBs base-origin + footprint-accurate; fail-soft as usual.
### → Lane C also: `crate_stack` for floor piles / dig
`procity_fit_crate_stack_01.glb` (`fittings.crate_stack`, 0.71×0.72 m, 0.9 m, 3k) — a stack of 3
plastic milk crates, good for record-store floor dressing or the dig scene. Optional; map a kind to
`'crate_stack'` if useful.
### → Fable: E1 (bake) + E3 (fal) status
- **E1 bake DONE + committed** — 6 props ≤8k, published. Feeds C's re-measure + your v1.1 tag.

View File

@ -244,3 +244,20 @@ published, `validate --depot` 0 err. **Provenance: FLUX.2-klein-4B concept + fal
Blender bake — synthetic, no third-party source** (Hunyuan output is model-generated geometry).
Raw fal GLBs + concepts kept in gitignored `pipeline/.genprops/`. These retire the last two
primitive-only fittings (glass_case, magazine_rack) + add a street bus_shelter.
## Round 5 — E2: depot growth (consumer-driven)
The round-5 v2 features are **procedural** (dig.js riffles generated sleeve art; B's window shader is
100% procedural; D's roster is spawn logic) — so no forced GLB needs. Per Fable "don't add manifest
entries no lane consumes", E2 is deliberately light: two already-synthetic depot props with clear
consumers, re-normalized to procity names + thumbs (both already ≤5k tris, metre-scale, base-origin):
| new id | source | footprint / h | consumer |
|---|---|---|---|
| `street/bin` (`procity_street_bin_01.glb`) | `council-bin.glb` (thriftgod_hero, on depot) | 0.57×0.68 m, 1.0 m | Lane B street dressing (towns need bins) |
| `fit/crate_stack` (`procity_fit_crate_stack_01.glb`) | `milk-crate-stack.glb` (thriftgod_hero) | 0.71×0.72 m, 0.9 m | Lane C record-store floor piles / dig context |
Both 3k tris, verified loading in the vendored GLTFLoader, published, `validate --depot` 0 err.
Provenance: MeshGod-generated (thriftgod_hero) — synthetic, web-ok. **Note:** also resolved Lane B's
B3 ask — `novelty_record` (was 26.5k, spiking the busy view) is now 8k via the E1 bake. No speculative
props added; further depot growth is available on request once C's dig / D's roster name concrete needs.

View File

@ -149,6 +149,40 @@
],
"thumb": "/tmp/fal_bake/thumbs/procity_fit_magazine_rack_01.png",
"out": "/tmp/fal_bake/procity_fit_magazine_rack_01.glb"
},
{
"src": "/tmp/council-bin.glb",
"file": "procity_street_bin_01.glb",
"out": "/tmp/e2_norm/procity_street_bin_01.glb",
"thumb": "web/assets/thumbs/procity_street_bin_01.png",
"tri_before": 3000,
"tri_after": 3000,
"size_m": [
0.569,
1.0,
0.683
],
"footprint": [
0.57,
0.68
]
},
{
"src": "/tmp/milk-crate-stack.glb",
"file": "procity_fit_crate_stack_01.glb",
"out": "/tmp/e2_norm/procity_fit_crate_stack_01.glb",
"thumb": "web/assets/thumbs/procity_fit_crate_stack_01.png",
"tri_before": 3000,
"tri_after": 3000,
"size_m": [
0.71,
0.9,
0.721
],
"footprint": [
0.71,
0.72
]
}
],
"errors": []

4
pipeline/batch_e2.json Normal file
View File

@ -0,0 +1,4 @@
[
{"src": "/tmp/council-bin.glb", "id": "bin", "category": "street", "height_m": 1.0, "tris": 5000},
{"src": "/tmp/milk-crate-stack.glb","id": "crate_stack", "category": "fit", "height_m": 0.9, "tris": 5000}
]

View File

@ -711,6 +711,15 @@
"height": 1.2,
"thumb": "thumbs/procity_fit_magazine_rack_01.png"
},
"crate_stack": {
"file": "procity_fit_crate_stack_01.glb",
"footprint": [
0.71,
0.72
],
"height": 0.9,
"thumb": "thumbs/procity_fit_crate_stack_01.png"
},
"cash_register": {
"file": "vintage-cash-register.glb",
"footprint": [
@ -801,6 +810,15 @@
],
"height": 2.4,
"thumb": "thumbs/procity_street_bus_shelter_01.png"
},
"bin": {
"file": "procity_street_bin_01.glb",
"footprint": [
0.57,
0.68
],
"height": 1.0,
"thumb": "thumbs/procity_street_bin_01.png"
}
},
"fittingAliases": {

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB