3.1 KiB
PROCITY bespoke hero props — MeshGod batch (Step 5)
Budget-gated. Do NOT run without John's go. Pricing corrected (2026-07-14, John): fal Hunyuan v2 is ~14–17¢/gen, not 30¢. Post-R3/R4 the batch is mostly filled free on MODELBEAST; the fal remainder is only glass-case + bus-shelter (+ optionally magazine-rack) ≈ $0.28–0.51 one-pass, ~$1 worst case with the ≤2-attempts rule. Everything here has an in-engine primitive fallback, so the game never blocks on it. The batch spec is
pipeline/meshgod_batch.json(djsim_home / thriftgod_hero pattern).
What this fills
The audit coverage table (AUDIT.md) found the sorted library has no usable source for a
handful of shop-defining props. These are them — the objects that make a shop-type read instantly:
| prop | shop type | why not from the library |
|---|---|---|
| listening-booth | record | nothing like it in the dump |
| cash-register | all | none (till is universal) |
| glass-case | toy / pawn / milkbar | audit found no glass display case |
| drinks-fridge | milkbar | none |
| magazine-rack | milkbar / pawn | none |
| arcade-cabinet | arcade / dept | none |
| milkshake-mixer | milkbar | none |
| novelty-record | record (roof ornament) | the "ooh" landmark object |
| bus-shelter | street | none (Lane B street dressing) |
Run it (only after go-ahead)
# 1. FIRST check for reuse — save money. cash-register & glass-case very likely already exist
# from thriftgod_hero.json (its street-bench/council-bin/milk-crate-stack/cashbot are already
# live on the depot):
curl -s https://digalot.fyi/3god/api/list | grep -iE 'register|glass|display|fridge|arcade'
# 2. generate the ones not already available:
cd ~/Documents/MESHGOD # (or meshgod)
python -m meshgod.batch manifest ~/Documents/procity/pipeline/meshgod_batch.json --out assets3d/procity
# 3. finish + publish through the SAME house pipeline as the library assets:
# meshgod.batch already runs finish_glb (metres/base-origin/decimate). Then normalize any
# stragglers with pipeline/normalize.py and publish with pipeline/publish.py.
The MeshGod gotcha (why some gaps are NOT here)
Thin wires and flat discs reconstruct badly in image→3D. These stay in-engine primitives
(listed under _primitives_instead in the JSON) — Lane B/C build them from boxes/cylinders:
- spinner-rack (thin wire) → extruded-cylinder primitive
- band-poster-easel (thin A-frame) → box + canvas poster
- vhs-rewinder (tiny box) → box primitive
- returns-slot → a cut in the shopfront wall plane
- escalator-prop → extruded ramp primitive
- pegboard-wall → a plane skinned with
tex-pegboard.jpg(already inweb/assets/gen/)
The novelty-record is deliberately specced as a thick chunky disc on a base (not a flat
disc) so it survives reconstruction.
After generation
- Each solid →
procity_fit_<name>_01.glb/procity_street_<name>_01.glb, thumbnail rendered, add toweb/assets/manifest.json(re-runbuild_manifest.pyonce the results land), publish. - Re-run
validate_manifest.py --depotto confirm they're live and the manifest stays green.