park_kit/README.md
type-two 0c551843a7 expansion: 25 modular editor props (52 total) + pool tile / grate textures
John's editor taxonomy: kink/A-frame/donkey/down/square rails, pole jam,
hubba, low/table boxes, inclined manny, pyramid, euro gap, vert quarter,
wallride wall, volcano, roller, jersey barrier, parking block, hydrant,
pool coping, chain fence, floodlight, bleachers, drain grate.
propkit: alpha + emissive materials; lathe winding fixed (was inside-out).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 20:10:13 +10:00

3.2 KiB
Raw Blame History

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 (224KB) 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/<id>.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

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

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.