# park_kit — GODVERSE park object library Reusable, textured, license-clean park objects for **bookquoy** and **skatemakerpro** (and whatever comes next). 52 props, 20 photoreal surfaces, all original: geometry authored parametrically in `tools/prop_author.py`, textures generated on the MODELBEAST farm (flux_local, local GPU, no cloud spend). ## The contract **`props/` and `textures/` ship together.** GLBs are geometry-only (2–24KB) and reference `../textures/*.jpg` by relative URI, so every prop shares one texture set and the browser caches each surface once. Move a GLB without the textures folder and it loads grey. `manifest.json` is the catalog. Per prop: | field | meaning | |---|---| | `src` | `props/.glb` — drop straight into a skatemakerpro `props[]` entry | | `grinds` | grindable edges in **prop-local metres** `{a:[x,z], b:[x,z], ya, yb, kind}` — rotate/translate with the prop, append to the park `rails[]` | | `element` | matching skatemakerpro terrain kind (`quarter`/`bank`/`funbox`/`spine`/`ledge`/`mogul`) with params — place alongside ramp props for real collision from the heightfield | | `collider` | simple blocker hint for furniture/trees (`box`/`cylinder`/`none`) | | `size` | world-space bounding box `[x, y, z]` | Sampler is MIRRORED_REPEAT — tileable-intent textures never show a hard seam. UVs are world-scale (metres per tile fixed per material), so texture density matches across every prop. ## Catalog - **transition:** qp_24, qp_18, qp_vert (8ft), wallride_qp (to-vertical, concrete), spine_ply, bank_12, kicker, launch_high, euro_gap, pyramid, funbox_ply, volcano, roller, pipe_full (graffiti-bombed concrete full pipe), mound_dirt - **rails:** rail_flat_3m, rail_flat_6m, square_flatbar, rail_down, rail_kink, rail_kink2 (double), rail_aframe, rail_donkey (kinks up), rail_rainbow, pole_jam (35°) - **ledges/boxes:** ledge_concrete, grindbox_ply, box_low (10in), box_table (24in), manual_pad, manny_incline, hubba_down (flat-to-down) - **street furniture:** bench_park, bench_concrete, picnic_table, bin_council, bollard_steel, railing_ped_2m, planter_box, jersey_barrier, parking_block, hydrant, pool_edge (bullnose coping + tile band), bleachers_3 - **vegetation:** tree_fig (Moreton Bay, buttress roots), tree_gum (eucalypt) - **infrastructure/dressing:** kerb_3m (slappy central), wall_graffiti (wallride bait), shade_sail, fence_chain_3m, floodlight, drain_grate ## View it ```bash python3 serve.py 8151 # then open http://localhost:8151 ``` Dropdown per prop or the full grid; red lines = grind metadata (toggle). `window.__view(id)` / `window.__ready()` hooks for headless checks. ## Regenerate ```bash python3 tools/gen_textures.py # MODELBEAST textures (idempotent; --force name to redo) python3 tools/prop_author.py # all GLBs + manifest.json ``` `tools/propkit.py` is the textured-GLB writer (UVs + external images — the character_kit writers' upgrade). `fan(..., out=)` auto-orients windings; lathe UVs wrap girth-first to match tube (bark ridges stay vertical). ## Provenance Everything here is original GODVERSE work. Textures: flux2-klein-4b on the farm, prompts in `tools/gen_textures.py`. No game assets, no trademarks, no scans.