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>
220 lines
3.2 KiB
JSON
220 lines
3.2 KiB
JSON
[
|
|
{
|
|
"name": "Bridge Approach",
|
|
"spawn": {
|
|
"x": 35.51608905758518,
|
|
"z": -118.5964830886139,
|
|
"y": 6.7,
|
|
"dx": -0.11409585864571734,
|
|
"dz": -0.9934697454074263
|
|
},
|
|
"streams": [
|
|
{
|
|
"pts": [
|
|
[
|
|
21.82446567810751,
|
|
-237.81387509878263,
|
|
37.66
|
|
],
|
|
[
|
|
23.145720027383163,
|
|
-226.45520770652828,
|
|
37.76
|
|
],
|
|
[
|
|
24.788209612143817,
|
|
-213.84815371354867,
|
|
35.66
|
|
],
|
|
[
|
|
26.145569174952232,
|
|
-200.29741976993301,
|
|
31.44
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
2.199941588527042,
|
|
-240.32717119002737,
|
|
36.31
|
|
],
|
|
[
|
|
-2.5248172223755736,
|
|
-243.91950536774928,
|
|
35.81
|
|
],
|
|
[
|
|
-6.325349530807717,
|
|
-247.60965512377,
|
|
35.17
|
|
],
|
|
[
|
|
-15.183983237537262,
|
|
-255.2613583327868,
|
|
33.26
|
|
],
|
|
[
|
|
-19.822722086570074,
|
|
-258.6729952966697,
|
|
32.36
|
|
],
|
|
[
|
|
-24.279515332983824,
|
|
-261.70335578638884,
|
|
31.56
|
|
],
|
|
[
|
|
-29.011437974400625,
|
|
-263.89076106496833,
|
|
30.9
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
20.772447151780117,
|
|
-199.75931223039953,
|
|
31.4
|
|
],
|
|
[
|
|
19.423377981138138,
|
|
-213.23286388675078,
|
|
35.3
|
|
],
|
|
[
|
|
17.78654515972297,
|
|
-225.7924522932427,
|
|
37.39
|
|
],
|
|
[
|
|
16.46063564037367,
|
|
-237.18991410136036,
|
|
37.31
|
|
]
|
|
],
|
|
"speed": 11.0,
|
|
"interval": 1.8
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
-26.737042902514784,
|
|
-268.7884265350654,
|
|
30.16
|
|
],
|
|
[
|
|
-21.61124337794858,
|
|
-266.3980682135746,
|
|
30.89
|
|
],
|
|
[
|
|
-16.704188313209045,
|
|
-263.0814811029762,
|
|
31.77
|
|
],
|
|
[
|
|
-11.761774350471743,
|
|
-259.43849686691397,
|
|
32.83
|
|
],
|
|
[
|
|
-2.7224195143774796,
|
|
-251.63195487598963,
|
|
34.86
|
|
],
|
|
[
|
|
0.9839307874462617,
|
|
-248.02422063236523,
|
|
35.6
|
|
],
|
|
[
|
|
5.4649806575202335,
|
|
-244.6282780101317,
|
|
36.2
|
|
]
|
|
],
|
|
"speed": 11.0,
|
|
"interval": 1.8
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
11.27070084290225,
|
|
-197.84784324166512,
|
|
31.27
|
|
],
|
|
[
|
|
10.896175804718348,
|
|
-204.76641770228525,
|
|
33.12
|
|
],
|
|
[
|
|
10.476477879675205,
|
|
-211.20975788808624,
|
|
34.75
|
|
],
|
|
[
|
|
9.92304078347784,
|
|
-216.20700696593718,
|
|
35.63
|
|
],
|
|
[
|
|
8.932958301853615,
|
|
-221.62531766816238,
|
|
36.37
|
|
],
|
|
[
|
|
7.508738699199866,
|
|
-226.8653717079938,
|
|
36.97
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
},
|
|
{
|
|
"pts": [
|
|
[
|
|
28.875188928696993,
|
|
-229.49242546244793,
|
|
38.44
|
|
],
|
|
[
|
|
28.72548025209394,
|
|
-214.05366159277472,
|
|
35.92
|
|
],
|
|
[
|
|
28.150874632761848,
|
|
-209.45956029627345,
|
|
34.63
|
|
],
|
|
[
|
|
27.279147353059784,
|
|
-204.7812989955361,
|
|
32.98
|
|
],
|
|
[
|
|
26.094879529030933,
|
|
-199.44340263065618,
|
|
31.15
|
|
]
|
|
],
|
|
"speed": 12.0,
|
|
"interval": 1.5
|
|
}
|
|
],
|
|
"targets": [
|
|
15000,
|
|
35000,
|
|
60000
|
|
]
|
|
}
|
|
] |