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>
175 lines
2.5 KiB
JSON
175 lines
2.5 KiB
JSON
[
|
|
{
|
|
"name": "Cliffs Corner",
|
|
"spawn": {
|
|
"x": 21.72600853145121,
|
|
"z": -89.96723823539561,
|
|
"y": 6.96,
|
|
"dx": 0.7116289476302671,
|
|
"dz": -0.7025555073406219
|
|
},
|
|
"streams": [
|
|
{
|
|
"pts": [
|
|
[
|
|
63.92619388342862,
|
|
-109.98937518013152,
|
|
17.17
|
|
],
|
|
[
|
|
78.3750416498091,
|
|
-148.8340213803462,
|
|
25.6
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
106.13660245700423,
|
|
-179.68219050814878,
|
|
30.64
|
|
],
|
|
[
|
|
105.14898470103478,
|
|
-213.87167130817437,
|
|
28.03
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
83.43625143590378,
|
|
-146.95142862004474,
|
|
26.11
|
|
],
|
|
[
|
|
68.98740366952329,
|
|
-108.10678241983003,
|
|
17.79
|
|
]
|
|
],
|
|
"speed": 11.0,
|
|
"interval": 1.8
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
110.54673313420321,
|
|
-214.02759389225906,
|
|
27.69
|
|
],
|
|
[
|
|
111.53435089017266,
|
|
-179.83811309223347,
|
|
30.29
|
|
]
|
|
],
|
|
"speed": 11.0,
|
|
"interval": 1.8
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
110.03793689684629,
|
|
-168.49583563849748,
|
|
31.15
|
|
],
|
|
[
|
|
105.07701815835642,
|
|
-166.64105720795808,
|
|
31.55
|
|
],
|
|
[
|
|
102.76621908994164,
|
|
-165.6886852292976,
|
|
31.69
|
|
],
|
|
[
|
|
100.0562323833477,
|
|
-163.76233037299872,
|
|
31.53
|
|
],
|
|
[
|
|
96.9873892973125,
|
|
-160.78656603278262,
|
|
31.04
|
|
],
|
|
[
|
|
94.50499850150788,
|
|
-158.03413164414619,
|
|
30.28
|
|
],
|
|
[
|
|
91.4342291831665,
|
|
-153.71805517412884,
|
|
29.08
|
|
],
|
|
[
|
|
82.70848350683406,
|
|
-145.88280488205245,
|
|
25.76
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
79.10280957887883,
|
|
-149.90264511833848,
|
|
25.94
|
|
],
|
|
[
|
|
87.56161285248508,
|
|
-157.4814104264721,
|
|
28.74
|
|
],
|
|
[
|
|
90.25853122720883,
|
|
-161.369924756482,
|
|
29.84
|
|
],
|
|
[
|
|
93.10927630970947,
|
|
-164.5442567671812,
|
|
30.49
|
|
],
|
|
[
|
|
96.57846276532892,
|
|
-167.89332522702423,
|
|
31.01
|
|
],
|
|
[
|
|
100.07071556655998,
|
|
-170.36781557108517,
|
|
31.29
|
|
],
|
|
[
|
|
103.11280473039093,
|
|
-171.67115319207213,
|
|
31.36
|
|
],
|
|
[
|
|
108.14657768085227,
|
|
-173.5537759619962,
|
|
30.96
|
|
]
|
|
],
|
|
"speed": 11.0,
|
|
"interval": 1.8
|
|
}
|
|
],
|
|
"targets": [
|
|
15000,
|
|
35000,
|
|
60000
|
|
]
|
|
}
|
|
] |