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>
38 lines
5.2 KiB
JSON
38 lines
5.2 KiB
JSON
{
|
|
"_comment": "PROCITY hero props — the gaps the sorted library CAN'T fill (see AUDIT.md coverage table). Text->3D via MeshGod. height_m = real-world height (1 unit = 1m). Run ONLY with John's go (≈30c/solid ≈ $2.70): python -m meshgod.batch manifest pipeline/meshgod_batch.json --out assets3d/procity . BEFORE generating, check the DealGod canon-3D cache / 3GOD /api/list for reuse (cash-register + glass-case likely already exist from thriftgod_hero.json). MeshGod gotcha: thin wires / flat discs reconstruct badly — those stay in-engine primitives and are NOT in this list.",
|
|
"_round3_outcome": {
|
|
"_comment": "Round 3 (Fable): these went through MODELBEAST (flux_local concept -> trellis_mac GLB) instead of fal.ai — free, on-device. Pipeline: pipeline/gen_props.py. Outcome below; see pipeline/gen_props.py + docs/shots/laneE/props_gen_local.png.",
|
|
"generated_local": ["listening-booth", "drinks-fridge", "arcade-cabinet", "milkshake-mixer", "novelty-record"],
|
|
"reused_from_depot": {"cash-register": "vintage-cash-register.glb (thriftgod_hero, already live on 3GOD)"},
|
|
"to_primitive": {"magazine-rack": "TRELLIS wire rack = shell-soup, floors ~112k tris (COLLAPSE + meshopt both fail on wire) — the classic thin-wire gotcha; use an in-engine wire primitive instead"},
|
|
"fal_fallback": {"_comment": "TRELLIS failed on these transparent-glass subjects (no GLB); sf3d gives a featureless blob. Local 2-attempt budget spent -> fal.ai, gated on John (<=$2.70). Both have in-engine primitive fallbacks so nothing blocks.", "glass-case": "transparent glass top defeats TRELLIS segmentation", "bus-shelter": "thin steel frame + perspex panels"},
|
|
"note_tris": "TRELLIS meshes are dense multi-shell scans; normalize.py decimate floors 25-77k tris (>library <=5k law). Accepted for focal/optional/LOD-able props (texture-intact); a texture-bake-to-lowpoly / gltfpack pass is a follow-up."
|
|
},
|
|
"_round5_outcome": {
|
|
"_comment": "Round 5 (Fable): fal.ai authorized ($22 balance). The R3 fal_fallback trio is now DONE + live on the depot. Pipeline: flux_local concept (frosted/opaque surfaces) -> pipeline/gen_props_fal.py (fal-ai/hunyuan3d/v2) -> normalize -> bake_lowpoly (<=8k, EMIT albedo bake). ALSO: all 6 R3/R4 TRELLIS hero props baked to <=8k (pipeline/bake_lowpoly.py). Costs logged in AUDIT.md R5.",
|
|
"fal_done": {"glass-case": "1 attempt ~$0.16", "bus-shelter": "2 attempts ~$0.32 (att.2 opaque back wall)", "magazine-rack": "1 attempt ~$0.16 (optional, solid timber not wire)"},
|
|
"fal_total": "~$0.64 of $22; guardrail held (nothing else on fal)",
|
|
"baked_to_8k": ["drinks_fridge", "milkshake_mixer", "arcade_cabinet", "listening_booth", "novelty_record", "counter_till", "glass_case", "bus_shelter", "magazine_rack"]
|
|
},
|
|
"assets": [
|
|
{"name": "listening-booth", "prompt": "a record shop listening station booth, angled timber panel with a shelf and hanging headphones, single stool", "height_m": 1.6, "tris": 6000, "for": "record"},
|
|
{"name": "cash-register", "prompt": "an ornate antique brass cash register with round number keys and a bell", "height_m": 0.35, "tris": 6000, "for": "all", "reuse": "thriftgod_hero:vintage-cash-register — check depot first"},
|
|
{"name": "glass-case", "prompt": "a retail glass display case counter with a wooden base and glass top shelves", "height_m": 1.0, "tris": 6000, "for": "toy/pawn/milkbar", "reuse": "thriftgod_hero:glass-display-case — check depot first"},
|
|
{"name": "drinks-fridge", "prompt": "a round-shouldered vintage upright drinks fridge with a glass door and faded stickers", "height_m": 1.6, "tris": 5000, "for": "milkbar"},
|
|
{"name": "magazine-rack", "prompt": "a slanted timber and wire magazine display rack with tiered shelves", "height_m": 1.2, "tris": 4000, "for": "milkbar/pawn"},
|
|
{"name": "arcade-cabinet", "prompt": "a 1990s upright arcade machine cabinet shell, boxy body, sloped control panel, dark screen bezel", "height_m": 1.7, "tris": 6000, "for": "arcade/dept"},
|
|
{"name": "milkshake-mixer", "prompt": "a chrome twin-spindle milkshake mixer machine on a diner counter, solid body", "height_m": 0.5, "tris": 4000, "for": "milkbar"},
|
|
{"name": "novelty-record", "prompt": "an oversized thick vinyl record standing on edge as a roadside novelty ornament, solid chunky disc on a base", "height_m": 2.0, "tris": 4000, "for": "record roof-ornament"},
|
|
{"name": "bus-shelter", "prompt": "an Australian suburban bus stop shelter, steel frame with scratched perspex panels and a bench seat", "height_m": 2.4, "tris": 8000, "for": "street"}
|
|
],
|
|
"_primitives_instead": {
|
|
"_comment": "MeshGod gotcha assets — thin/flat geometry reconstructs badly. Lane B/C build these as in-engine primitives, NOT via MeshGod:",
|
|
"spinner-rack": "thin wire book/card spinner — extruded-cylinder primitive",
|
|
"band-poster-easel": "thin A-frame sidewalk sign — box primitive + canvas poster",
|
|
"vhs-rewinder": "tiny box on the counter — box primitive",
|
|
"returns-slot": "wall slot for the video returns — cut in the wall plane",
|
|
"escalator-prop": "dept-store escalator — extruded ramp primitive",
|
|
"pegboard-wall": "pawn/video wall — plane with tex-pegboard.jpg skin (already in gen/)"
|
|
}
|
|
}
|