PROCITY/pipeline/meshgod_batch.json
m3ultra 063a959e29 Lane E (assets): pipeline, manifest + 23 on-device facade skins
Audit -> normalize (16 GLBs + thumbs) -> web/assets/manifest.json (the
contract Lanes B/C/D read) -> facade gap-fill.

Step 4 facades generated locally on the M3 Ultra via MODELBEAST
flux_local (FLUX.2-klein-4B / MLX on MPS): 23 skins, free, ~5.7s each,
blank signboard, eyeballed, harvested, mapped to shop types. Every
registry type now has >=3 facades (stall 2->4, closing the Lane A gap).
Corner-lot -side walls tagged face:"side" with empty types so no shop
front ever selects a windowless wall. manifest validates green.

Still gated on John (both optional -- the game runs asset-free):
publish the 16 GLBs to 3GOD (needs GOD3_PW), MeshGod hero props (~$2.70).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 13:48:25 +10:00

24 lines
3.1 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.",
"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/)"
}
}