PROCITY/pipeline/MESHGOD_BATCH.md
2026-07-14 20:36:12 +10:00

64 lines
3.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 **~1417¢/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.280.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)
```bash
# 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 in `web/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 to `web/assets/manifest.json` (re-run `build_manifest.py` once the results land), publish.
- Re-run `validate_manifest.py --depot` to confirm they're live and the manifest stays green.