park_kit/manifest.json
type-two 153e26c329 park_kit v0.1 — 27 textured park props + 18 MODELBEAST surfaces + manifest
propkit.py: textured-GLB writer (TEXCOORD_0, shared external textures,
MIRRORED_REPEAT). prop_author.py: parametric generators — ramps, rails,
furniture, trees, dressing — each with local-space grind metadata and
skatemakerpro element/collider hints.

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

914 lines
13 KiB
JSON

{
"name": "park_kit",
"version": "0.1",
"note": "Original GODVERSE park objects. props/ and textures/ must ship together (GLBs reference ../textures/*.jpg). grinds are prop-local segments \u2014 rotate/translate with the prop and append to the park rails list. element = matching skatemakerpro terrain kind for real collision.",
"textures": "MODELBEAST flux_local (flux2-klein-4b), original generations",
"props": [
{
"id": "qp_24",
"src": "props/qp_24.glb",
"category": "obstacle",
"desc": "plywood quarter pipe 4ft, steel coping",
"size": [
2.4,
1.25,
2.297
],
"tris": 124,
"grinds": [
{
"a": [
-1.2,
-1.697056274847714
],
"b": [
1.2,
-1.697056274847714
],
"ya": 1.22,
"yb": 1.22,
"kind": "rail"
}
],
"element": {
"kind": "quarter",
"len": 2.4,
"r0": 1.8,
"r1": 1.8,
"h": 1.2
}
},
{
"id": "qp_18",
"src": "props/qp_18.glb",
"category": "obstacle",
"desc": "mini quarter 3ft",
"size": [
1.8,
0.95,
1.873
],
"tris": 124,
"grinds": [
{
"a": [
-0.9,
-1.2727922061357857
],
"b": [
0.9,
-1.2727922061357857
],
"ya": 0.92,
"yb": 0.92,
"kind": "rail"
}
],
"element": {
"kind": "quarter",
"len": 1.8,
"r0": 1.35,
"r1": 1.35,
"h": 0.9
}
},
{
"id": "bank_12",
"src": "props/bank_12.glb",
"category": "obstacle",
"desc": "plywood wedge bank",
"size": [
2.4,
0.9,
2.2
],
"tris": 54,
"grinds": [
{
"a": [
-1.2,
0
],
"b": [
1.2,
0
],
"ya": 0.9,
"yb": 0.9,
"kind": "ledge"
}
],
"element": {
"kind": "bank",
"len": 2.4,
"h": 0.9,
"run": 1.8
}
},
{
"id": "kicker",
"src": "props/kicker.glb",
"category": "obstacle",
"desc": "curved plywood launch kicker",
"size": [
1.2,
0.45,
1.04
],
"tris": 56,
"element": {
"kind": "bank",
"len": 1.2,
"h": 0.45,
"run": 1.0
}
},
{
"id": "funbox_ply",
"src": "props/funbox_ply.glb",
"category": "obstacle",
"desc": "plywood funbox, banks both sides, steel edge caps",
"size": [
2.4,
0.6,
3.2
],
"tris": 68,
"grinds": [
{
"a": [
-1.2,
0.6
],
"b": [
1.2,
0.6
],
"ya": 0.6,
"yb": 0.6,
"kind": "ledge"
},
{
"a": [
-1.2,
-0.6
],
"b": [
1.2,
-0.6
],
"ya": 0.6,
"yb": 0.6,
"kind": "ledge"
}
],
"element": {
"kind": "funbox",
"hw": 1.2,
"hd": 0.6,
"h": 0.6,
"skirt": 1.0
}
},
{
"id": "spine_ply",
"src": "props/spine_ply.glb",
"category": "obstacle",
"desc": "plywood spine, double coping",
"size": [
2.4,
0.95,
2.746
],
"tris": 188,
"grinds": [
{
"a": [
-1.2,
0.1
],
"b": [
1.2,
0.1
],
"ya": 0.92,
"yb": 0.92,
"kind": "rail"
},
{
"a": [
-1.2,
-0.1
],
"b": [
1.2,
-0.1
],
"ya": 0.92,
"yb": 0.92,
"kind": "rail"
}
],
"element": {
"kind": "spine",
"len": 2.4,
"r": 1.35,
"h": 0.9
}
},
{
"id": "manual_pad",
"src": "props/manual_pad.glb",
"category": "obstacle",
"desc": "low concrete manual pad, steel edges",
"size": [
2.0,
0.28,
1.658
],
"tris": 60,
"grinds": [
{
"a": [
-1.0,
0.8
],
"b": [
1.0,
0.8
],
"ya": 0.28,
"yb": 0.28,
"kind": "ledge"
},
{
"a": [
-1.0,
-0.8
],
"b": [
1.0,
-0.8
],
"ya": 0.28,
"yb": 0.28,
"kind": "ledge"
}
],
"element": {
"kind": "funbox",
"hw": 1.0,
"hd": 0.8,
"h": 0.28,
"skirt": 0.3
}
},
{
"id": "ledge_concrete",
"src": "props/ledge_concrete.glb",
"category": "obstacle",
"desc": "concrete grind ledge, tagged side",
"size": [
2.4,
0.42,
0.508
],
"tris": 62,
"grinds": [
{
"a": [
-1.2,
0.225
],
"b": [
1.2,
0.225
],
"ya": 0.42,
"yb": 0.42,
"kind": "ledge"
},
{
"a": [
-1.2,
-0.225
],
"b": [
1.2,
-0.225
],
"ya": 0.42,
"yb": 0.42,
"kind": "ledge"
}
],
"collider": {
"type": "box",
"hw": 1.2,
"hd": 0.225,
"h": 0.42
},
"element": {
"kind": "ledge",
"hw": 1.2,
"hd": 0.225,
"h": 0.42
}
},
{
"id": "grindbox_ply",
"src": "props/grindbox_ply.glb",
"category": "obstacle",
"desc": "plywood grindbox: round bar one edge, angle the other",
"size": [
1.8,
0.448,
0.553
],
"tris": 68,
"grinds": [
{
"a": [
-0.9,
0.25
],
"b": [
0.9,
0.25
],
"ya": 0.42400000000000004,
"yb": 0.42400000000000004,
"kind": "rail"
},
{
"a": [
-0.9,
-0.25
],
"b": [
0.9,
-0.25
],
"ya": 0.4,
"yb": 0.4,
"kind": "ledge"
}
],
"element": {
"kind": "ledge",
"hw": 0.9,
"hd": 0.25,
"h": 0.4
}
},
{
"id": "rail_flat_3m",
"src": "props/rail_flat_3m.glb",
"category": "obstacle",
"desc": "round flat rail, 3m",
"size": [
3.0,
0.37,
0.12
],
"tris": 128,
"grinds": [
{
"a": [
-1.5,
0
],
"b": [
1.5,
0
],
"ya": 0.35,
"yb": 0.35,
"kind": "rail"
}
],
"collider": {
"type": "none"
}
},
{
"id": "rail_flat_6m",
"src": "props/rail_flat_6m.glb",
"category": "obstacle",
"desc": "round flat rail, 6m",
"size": [
6.0,
0.47,
0.12
],
"tris": 172,
"grinds": [
{
"a": [
-3.0,
0
],
"b": [
3.0,
0
],
"ya": 0.45,
"yb": 0.45,
"kind": "rail"
}
],
"collider": {
"type": "none"
}
},
{
"id": "rail_kink",
"src": "props/rail_kink.glb",
"category": "obstacle",
"desc": "kinked down rail: flat then slope",
"size": [
3.206,
0.57,
0.12
],
"tris": 192,
"grinds": [
{
"a": [
-1.6,
0
],
"b": [
0.2,
0
],
"ya": 0.55,
"yb": 0.55,
"kind": "rail"
},
{
"a": [
0.2,
0
],
"b": [
1.6,
0
],
"ya": 0.55,
"yb": 0.1,
"kind": "rail"
}
],
"collider": {
"type": "none"
}
},
{
"id": "rail_rainbow",
"src": "props/rail_rainbow.glb",
"category": "obstacle",
"desc": "rainbow rail arc",
"size": [
3.4,
0.82,
0.14
],
"tris": 244,
"grinds": [
{
"a": [
-1.6,
0
],
"b": [
0,
0
],
"ya": 0.06,
"yb": 0.8,
"kind": "rail"
},
{
"a": [
0,
0
],
"b": [
1.6,
0
],
"ya": 0.8,
"yb": 0.06,
"kind": "rail"
}
],
"collider": {
"type": "none"
}
},
{
"id": "pipe_full",
"src": "props/pipe_full.glb",
"category": "obstacle",
"desc": "concrete full pipe, graffiti bombed outside",
"size": [
3.0,
3.65,
3.8
],
"tris": 192,
"collider": {
"type": "box",
"hw": 1.5,
"hd": 1.9,
"h": 3.8
}
},
{
"id": "bench_park",
"src": "props/bench_park.glb",
"category": "furniture",
"desc": "timber slat park bench, steel frame",
"size": [
1.8,
0.866,
0.638
],
"tris": 276,
"grinds": [
{
"a": [
-0.9,
0.25
],
"b": [
0.9,
0.25
],
"ya": 0.45,
"yb": 0.45,
"kind": "ledge"
},
{
"a": [
-0.9,
-0.36
],
"b": [
0.9,
-0.36
],
"ya": 0.86,
"yb": 0.86,
"kind": "rail"
}
],
"collider": {
"type": "box",
"hw": 0.9,
"hd": 0.35,
"h": 0.45
}
},
{
"id": "bench_concrete",
"src": "props/bench_concrete.glb",
"category": "furniture",
"desc": "concrete bench block, tagged",
"size": [
1.8,
0.45,
0.452
],
"tris": 14,
"grinds": [
{
"a": [
-0.9,
0.225
],
"b": [
0.9,
0.225
],
"ya": 0.45,
"yb": 0.45,
"kind": "ledge"
},
{
"a": [
-0.9,
-0.225
],
"b": [
0.9,
-0.225
],
"ya": 0.45,
"yb": 0.45,
"kind": "ledge"
}
],
"collider": {
"type": "box",
"hw": 0.9,
"hd": 0.225,
"h": 0.45
},
"element": {
"kind": "ledge",
"hw": 0.9,
"hd": 0.225,
"h": 0.45
}
},
{
"id": "picnic_table",
"src": "props/picnic_table.glb",
"category": "furniture",
"desc": "timber A-frame picnic table",
"size": [
1.8,
0.78,
2.325
],
"tris": 240,
"grinds": [
{
"a": [
-0.9,
0.4
],
"b": [
0.9,
0.4
],
"ya": 0.78,
"yb": 0.78,
"kind": "ledge"
},
{
"a": [
-0.9,
-0.4
],
"b": [
0.9,
-0.4
],
"ya": 0.78,
"yb": 0.78,
"kind": "ledge"
}
],
"collider": {
"type": "box",
"hw": 0.9,
"hd": 0.85,
"h": 0.78
}
},
{
"id": "bin_council",
"src": "props/bin_council.glb",
"category": "furniture",
"desc": "council park bin, dark green",
"size": [
0.61,
1.02,
0.595
],
"tris": 252,
"collider": {
"type": "cylinder",
"r": 0.32,
"h": 1.02
}
},
{
"id": "bollard_steel",
"src": "props/bollard_steel.glb",
"category": "furniture",
"desc": "galvanised bollard",
"size": [
0.16,
0.93,
0.16
],
"tris": 96,
"collider": {
"type": "cylinder",
"r": 0.1,
"h": 0.93
}
},
{
"id": "railing_ped_2m",
"src": "props/railing_ped_2m.glb",
"category": "furniture",
"desc": "pedestrian railing, 2m module",
"size": [
2.04,
1.024,
0.14
],
"tris": 152,
"grinds": [
{
"a": [
-1.0,
0
],
"b": [
1.0,
0
],
"ya": 1.0,
"yb": 1.0,
"kind": "rail"
}
],
"collider": {
"type": "none"
}
},
{
"id": "planter_box",
"src": "props/planter_box.glb",
"category": "furniture",
"desc": "brick planter, concrete cap, gum sapling",
"size": [
1.28,
1.95,
0.989
],
"tris": 140,
"grinds": [
{
"a": [
-0.64,
0.29
],
"b": [
0.64,
0.29
],
"ya": 0.5,
"yb": 0.5,
"kind": "ledge"
},
{
"a": [
-0.64,
-0.29
],
"b": [
0.64,
-0.29
],
"ya": 0.5,
"yb": 0.5,
"kind": "ledge"
}
],
"collider": {
"type": "box",
"hw": 0.64,
"hd": 0.29,
"h": 0.5
}
},
{
"id": "kerb_3m",
"src": "props/kerb_3m.glb",
"category": "dressing",
"desc": "kerb + gutter strip \u2014 slappy central",
"size": [
3.0,
0.15,
1.65
],
"tris": 36,
"grinds": [
{
"a": [
-1.5,
0
],
"b": [
1.5,
0
],
"ya": 0.15,
"yb": 0.15,
"kind": "ledge"
}
],
"collider": {
"type": "none"
}
},
{
"id": "wall_graffiti",
"src": "props/wall_graffiti.glb",
"category": "dressing",
"desc": "freestanding graffiti wall \u2014 wallride bait",
"size": [
3.6,
1.8,
0.256
],
"tris": 16,
"grinds": [
{
"a": [
-1.8,
0
],
"b": [
1.8,
0
],
"ya": 1.8,
"yb": 1.8,
"kind": "ledge"
}
],
"collider": {
"type": "box",
"hw": 1.8,
"hd": 0.125,
"h": 1.8
}
},
{
"id": "shade_sail",
"src": "props/shade_sail.glb",
"category": "dressing",
"desc": "council shade sail on galv posts",
"size": [
4.71,
3.403,
3.91
],
"tris": 168,
"collider": {
"type": "cylinder",
"r": 0.1,
"h": 3.2
}
},
{
"id": "tree_fig",
"src": "props/tree_fig.glb",
"category": "vegetation",
"desc": "Moreton Bay fig \u2014 buttress roots, huge canopy",
"size": [
9.36,
5.9,
7.57
],
"tris": 686,
"collider": {
"type": "cylinder",
"r": 0.85,
"h": 2.8
}
},
{
"id": "tree_gum",
"src": "props/tree_gum.glb",
"category": "vegetation",
"desc": "eucalypt \u2014 pale mottled trunk, sparse crown",
"size": [
5.339,
7.106,
3.848
],
"tris": 498,
"collider": {
"type": "cylinder",
"r": 0.32,
"h": 5.6
}
},
{
"id": "mound_dirt",
"src": "props/mound_dirt.glb",
"category": "dressing",
"desc": "dirt jump mound \u2014 ridable",
"size": [
4.4,
0.55,
4.4
],
"tris": 200,
"element": {
"kind": "mogul",
"h": 0.55,
"s": 1.4
}
}
]
}