The 2 R3 TRELLIS glass rejects + optional magazine-rack, generated on fal.ai Hunyuan3D v2 (John-authorized, $22 balance). pipeline/gen_props_fal.py drives the fal operator using the FAL_KEY from MODELBEAST settings (never hardcoded). Frosted/ opaque flux_local concepts gave the reconstructor a surface (clear glass defeated TRELLIS). glass-case 1 att, bus-shelter 2 att (opaque back wall), magazine-rack 1 att = ~$0.64 total, guardrail held. All baked to <=8k via bake_lowpoly.py (switched to EMIT albedo bake — Hunyuan materials bake near-black under DIFFUSE). Verified loading in vendored GLTFLoader, published, validate --depot 0 err. Manifest 17 fittings + 9 furniture; aliases wire glass_case/glass_cabinets/magazine_rack/fridge/listening_corner. Costs logged in AUDIT R5. Last 2 primitive-only fittings retired. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
6.0 KiB
LANE E — cross-lane notes
Round 5
→ Lane C: hero props BAKED to ≤8k tris — re-measure the record interior
The 6 heavy TRELLIS props are re-baked and live on the depot (same filenames, footprints unchanged, so no re-map needed — they upgrade in place):
| prop | tris before → after |
|---|---|
| drinks_fridge | 77k → 8.0k |
| milkshake_mixer | 73k → 8.0k |
| listening_booth | 54k → 8.0k |
| counter_till | 32k → 8.0k |
| novelty_record | 26k → 8.0k |
| arcade_cabinet | 25k → 8.0k |
Fleet 288k → 48k tris. Method: voxel-remesh → decimate → Cycles base-colour bake (see
pipeline/bake_lowpoly.py, AUDIT R5). Verified loading in the vendored GLTFLoader; base colour
baked (no separate metallic/normal maps → also dodges the record_crate dangling-texture class).
→ Please re-measure the record interior (was ~273k tris in your R4 note) and record the new
number in LANE_C_GLB_VALIDATION.md — it should drop by ~most of the prop weight.
→ Lane C: 3 new fittings LIVE (fal Hunyuan) — glass_case + magazine_rack
The two remaining primitive-only fittings are now real GLBs on the depot (≤8k, base-colour baked):
glass_case(procity_fit_glass_case_01.glb, 1.08×1.42 m, 1.0 m tall) — timber base + glass panels + items inside. Registry idsglass_case(toy/dept) +glass_cabinets(pawn) both alias to it. → addglass_case/glassCase(+ your pawn cabinet kind) →'glass_case'inKIND_TO_GLB.magazine_rack(procity_fit_magazine_rack_01.glb, 0.54×0.44 m, 1.2 m tall) — tiered timber rack w/ magazines (milkbar/pawn). Registrymagazine_rackaliases to it. → map your kind →'magazine_rack'.- Both base-origin, verified loading in the vendored GLTFLoader.
manifest.fittingAliasesalso mapsfridge→drinks_fridgeandlistening_corner→listening_boothif 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.
→ Fable: E1 (bake) + E3 (fal) status
- E1 bake DONE + committed — 6 props ≤8k, published. Feeds C's re-measure + your v1.1 tag.
- E3 fal DONE — glass_case + bus_shelter + magazine_rack generated on fal Hunyuan v2, ~$0.64
total (log in AUDIT R5), ≤2 attempts each, all baked ≤8k + published. Guardrail held (nothing
else on fal).
validate --depot0 err. Last two primitive-only fittings retired. - E2 depot growth next (v2-serving library props).
Round 4
→ Lane D (task D2): decimated peds ready to validate
The 19 ped rigs in web/models/peds/ are decimated and staged (committed 518678d, ref
lane-e/round4-peds). Please validate rig binding + animation:
- ≤3k tris each (range 1564–2805; per-ped before/after in
pipeline/_peds_decim.json). Fleet total 924k → 46.5k tris (48.6k → 2.45k avg). At the 24-rig near cap ≈ ≤67k. - Skinning preserved:
JOINTS_0/WEIGHTS_0intact; skeleton unchanged (nodes + 65 joints identical to source on every ped I checked), so the sharedwalk.glb/idle.glbclips retarget unchanged.walk.glb/idle.glbwere NOT touched. - Method:
gltf-transform weld→simplify --ratio 0.05 --error 0.12(meshoptimizer — works because these are manifold skinned meshes, not R3 TRELLIS shell-soup). Contact sheet:docs/shots/laneE/peds_decimated.png(silhouettes/textures clean at street distance; fingers merge + faces flatten as expected at 3k, no melting). - Originals backed up (gitignored) at
pipeline/.peds_orig/if you need a before/after diff.
If any rig fails to bind/animate or a silhouette reads badly, tell me the file(s) and I'll re-run that one with a gentler error (0.08 keeps ~50% more tris but still <5k). Then F re-measures gate 3 after your sign-off.
→ Lane C: E2 asset re-exports
procity_fit_record_crate_01.glb— FIXED. Root cause of yourundefined 'uri'crash: the material'smetallicRoughnessTexture+occlusionTextureboth pointed at a sourceless texture (the packed AO/roughness map failed to encode to WebP during normalize; base-colour- normal were fine). Fix:
pipeline/fix_glb_textures.pystrips material slots that reference a sourceless texture (orphaning it — three.js loads textures lazily, so no crash). Verified it loads in the real vendoredGLTFLoader(meshes=1, tris=5000, textures ok) alongside a bookshelf control. Re-published to the depot — re-maprecord_crate/recordBininglb.js(they should already be mapped) and it'll upgrade instead of falling back.
- normal were fine). Fix:
- counter-with-till — LIVE. New fitting
counter_till(procity_fit_counter_till_01.glb): 1.61 × 0.64 m footprint, 1.15 m tall, timber counter + cabinet doors + period beige till on top (flux_local concept → trellis_mac, on-device). Fixes the R3 4 m till-less counter that squashed. Verified it loads in the vendoredGLTFLoader(32k tris — TRELLIS shell-soup floor, within decision-#2's 25–77k for focal props) and live on the depot (validate --depot0 err). → Inglb.jsre-addcountertoKIND_TO_GLBmapping to'counter_till'(NOT the oldcounter= balcao, which is a 4 m long bar counter kept for shops that want it). The manifestfittingAliases.counter→counter_tilltoo. It's base-origin (minY=0), so your footprint-fit + floor-plant works unchanged; at a 1.4–2.0 m counter slot it scales to a believable ~1.0–1.4 m tall counter.
→ Fable: status
- E1 (gate-3 critical path): DONE. Peds ≤3k, committed + pinned. Unblocks D2 → F3.
- E2a record_crate: DONE + verified (loads in vendored GLTFLoader). Re-published.
- E2b counter: in progress (local, on-device — no fal spend per decision #3).
- Not doing: fal.ai spend (glass-case/bus-shelter stay parked), hero-prop bake-to-lowpoly.