tools/fetch_dem.py pulls the open AWS terrarium elevation tiles for each level's bbox (derived from the OSM geometry itself -- the fetch bboxes were never recorded) and writes an f32 heightmap. The builder bilinear-samples it: roads/footpaths/crossings drape (subdivided to ~8 m so long OSM segments stop chording across curved ground), buildings lift rigidly to the lowest terrain under their footprint with a 2 m foundation skirt, trees/props/planters ride their own base heights, and the flat ground slab becomes a real terrain mesh. Bridges get an explicit deck profile (lerp between end heights plus a hump) instead of draping down into the river, the truss follows the deck, and the Bradfield Highway now genuinely flies over Kemp Place -- the game has an underpass. Kangaroo Point's cliffs are an actual 20 m drop, Edward Street climbs to 55 m at Spring Hill. Junction events bake spawn/convoy heights (osm_junction.py grew a pure-python DEM sampler); the game respects marker heights everywhere it used to hardcode ground=0. Bugs the terrain surfaced, all found by measurement: - Long road segments chorded across curved ground: the car visually sank to its windows mid-block. Fixed by subdividing draped ribbons. - The 9 m terrain grid aliases cliff edges and bulged metres ABOVE the finely draped roads: a car spawning there was inside the terrain sheet and got depenetrated through the floor into the void (y = -710). Fixed by giving roads real collision and carving the terrain grid down wherever a draped road sample lands (11k+ carve samples on Kangaroo Point alone). - The junction validator and tuner drove throttle-only, which cross-slope drift turned into 40-86 m misses; they now hold aim like a player would. - Edward x Elizabeth launched down a 17% grade, went airborne at the crest and wedged off-street: unwinnable geometry, not a bug. Swapped for Elizabeth x George on the flat lower CBD. All 9 junctions validate. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
408 lines
5.9 KiB
JSON
408 lines
5.9 KiB
JSON
[
|
|
{
|
|
"name": "Melbourne x Merivale",
|
|
"spawn": {
|
|
"x": -596.868944790812,
|
|
"z": -210.35268183374677,
|
|
"y": 8.98,
|
|
"dx": 0.8528773292725991,
|
|
"dz": -0.5221113494388324
|
|
},
|
|
"streams": [
|
|
{
|
|
"pts": [
|
|
[
|
|
-522.2431469994345,
|
|
-263.2916099068527,
|
|
7.69
|
|
],
|
|
[
|
|
-513.2984743659174,
|
|
-268.5646201058227,
|
|
7.44
|
|
],
|
|
[
|
|
-505.76645618454586,
|
|
-272.8477143314658,
|
|
6.89
|
|
],
|
|
[
|
|
-497.90899041561073,
|
|
-277.2629244179048,
|
|
6.23
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
-518.3319604245614,
|
|
-316.20816625786284,
|
|
9.74
|
|
],
|
|
[
|
|
-502.53998920863535,
|
|
-289.11772214349674,
|
|
7.36
|
|
],
|
|
[
|
|
-501.0310720126822,
|
|
-286.5339989119062,
|
|
7.03
|
|
],
|
|
[
|
|
-499.3074920997309,
|
|
-283.76972490400925,
|
|
6.7
|
|
],
|
|
[
|
|
-498.93054530357944,
|
|
-283.2413778417831,
|
|
6.63
|
|
],
|
|
[
|
|
-494.34501447411924,
|
|
-276.414559193545,
|
|
6.05
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
-495.26368453007734,
|
|
-272.55523318206934,
|
|
6.0
|
|
],
|
|
[
|
|
-503.1094123444767,
|
|
-268.14663806831595,
|
|
6.51
|
|
],
|
|
[
|
|
-510.58925218160783,
|
|
-263.8934194939837,
|
|
6.98
|
|
],
|
|
[
|
|
-519.5007896114952,
|
|
-258.6397848932893,
|
|
7.39
|
|
]
|
|
],
|
|
"speed": 11.0,
|
|
"interval": 1.8
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
-498.82766047156883,
|
|
-273.4035984064291,
|
|
6.2
|
|
],
|
|
[
|
|
-503.4072640108861,
|
|
-280.2216113581537,
|
|
6.94
|
|
],
|
|
[
|
|
-503.85991989590116,
|
|
-280.8653486954825,
|
|
7.03
|
|
],
|
|
[
|
|
-505.6522751490968,
|
|
-283.7403486882755,
|
|
7.41
|
|
],
|
|
[
|
|
-507.20498688872703,
|
|
-286.3978330566516,
|
|
7.75
|
|
],
|
|
[
|
|
-522.997174842978,
|
|
-313.4886489421985,
|
|
10.11
|
|
]
|
|
],
|
|
"speed": 11.0,
|
|
"interval": 1.8
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
-497.7097209821479,
|
|
-277.3642792991366,
|
|
6.22
|
|
],
|
|
[
|
|
-489.2653413897242,
|
|
-281.21700470668776,
|
|
6.15
|
|
],
|
|
[
|
|
-470.16395422466655,
|
|
-292.9741741951012,
|
|
5.43
|
|
],
|
|
[
|
|
-453.3973200149641,
|
|
-303.3696498434199,
|
|
6.15
|
|
],
|
|
[
|
|
-438.7171383481014,
|
|
-313.0237718470059,
|
|
8.99
|
|
],
|
|
[
|
|
-428.17568968279613,
|
|
-319.6952218182481,
|
|
11.09
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
-490.9127030755138,
|
|
-271.2416907037699,
|
|
6.0
|
|
],
|
|
[
|
|
-487.07948135301893,
|
|
-265.2321814476218,
|
|
6.0
|
|
],
|
|
[
|
|
-460.79611403958603,
|
|
-221.7057389459239,
|
|
6.26
|
|
],
|
|
[
|
|
-449.78766148749827,
|
|
-203.62165684766288,
|
|
6.74
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
}
|
|
],
|
|
"targets": [
|
|
15000,
|
|
35000,
|
|
60000
|
|
]
|
|
},
|
|
{
|
|
"name": "Grey x Glenelg",
|
|
"spawn": {
|
|
"x": -137.3579079842604,
|
|
"z": -96.07581886007603,
|
|
"y": 13.36,
|
|
"dx": 0.5279471843098005,
|
|
"dz": 0.8492772047920241
|
|
},
|
|
"streams": [
|
|
{
|
|
"pts": [
|
|
[
|
|
-66.8941396578206,
|
|
18.021454924938546,
|
|
8.55
|
|
],
|
|
[
|
|
-68.93721227192415,
|
|
14.729250272207434,
|
|
8.67
|
|
],
|
|
[
|
|
-74.03417645108553,
|
|
5.788135121643277,
|
|
9.23
|
|
],
|
|
[
|
|
-78.66584427851572,
|
|
-1.692678191469608,
|
|
9.75
|
|
],
|
|
[
|
|
-82.82069253186671,
|
|
-8.344352365976752,
|
|
10.15
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
-33.05020815528413,
|
|
-14.758620186231095,
|
|
8.09
|
|
],
|
|
[
|
|
-35.06751528318885,
|
|
-14.599409411489315,
|
|
8.2
|
|
],
|
|
[
|
|
-37.27001626186296,
|
|
-13.996146050544787,
|
|
8.29
|
|
],
|
|
[
|
|
-43.35852481930847,
|
|
-10.760668273887504,
|
|
8.5
|
|
],
|
|
[
|
|
-53.694918113870564,
|
|
-4.204520462618362,
|
|
8.68
|
|
],
|
|
[
|
|
-56.331462588402815,
|
|
-2.4702458690280507,
|
|
8.73
|
|
],
|
|
[
|
|
-63.091151948462084,
|
|
2.2185465904455017,
|
|
8.85
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
-78.24074203456223,
|
|
-11.205130833848836,
|
|
10.32
|
|
],
|
|
[
|
|
-74.07981104388904,
|
|
-4.543695408341438,
|
|
9.85
|
|
],
|
|
[
|
|
-69.38832494823436,
|
|
3.0356700785490762,
|
|
9.17
|
|
],
|
|
[
|
|
-64.27327518677029,
|
|
12.007542928328153,
|
|
8.41
|
|
],
|
|
[
|
|
-62.30660151137585,
|
|
15.172859875635417,
|
|
8.28
|
|
]
|
|
],
|
|
"speed": 11.0,
|
|
"interval": 1.8
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
-66.1688465571084,
|
|
-2.2185465904455017,
|
|
9.29
|
|
],
|
|
[
|
|
-59.37835881390333,
|
|
-6.9285441308125515,
|
|
9.26
|
|
],
|
|
[
|
|
-56.602733425687326,
|
|
-8.754752337189586,
|
|
9.26
|
|
],
|
|
[
|
|
-46.12004993919494,
|
|
-15.401140126214159,
|
|
9.08
|
|
],
|
|
[
|
|
-39.50773651812935,
|
|
-18.910676349026538,
|
|
8.74
|
|
],
|
|
[
|
|
-36.1005431869604,
|
|
-19.899678588618844,
|
|
8.57
|
|
],
|
|
[
|
|
-33.51553068408273,
|
|
-20.138534213814854,
|
|
8.43
|
|
]
|
|
],
|
|
"speed": 11.0,
|
|
"interval": 1.8
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
-62.42866919418658,
|
|
-1.5633764655737972,
|
|
9.03
|
|
],
|
|
[
|
|
-56.22534149367183,
|
|
7.176315693408943,
|
|
8.15
|
|
],
|
|
[
|
|
-31.608294574960304,
|
|
46.399012606383145,
|
|
8.71
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
-105.44415325837058,
|
|
17.29338138921854,
|
|
9.0
|
|
],
|
|
[
|
|
-124.85549758561747,
|
|
29.02803771609806,
|
|
10.01
|
|
],
|
|
[
|
|
-145.9651989732041,
|
|
41.680234308480806,
|
|
12.4
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
}
|
|
],
|
|
"targets": [
|
|
15000,
|
|
35000,
|
|
60000
|
|
]
|
|
}
|
|
] |