fix(street): taper sidewalk upstand to flush at the building edge

The sidewalk stood the full 0.15 m kerb height above the DEM at *both* edges, so
the outer (building-side) lip was a 15.8 cm ledge where the walk route crossed
from Terrain_DEM onto Sidewalk_South. sidewalk_z now tapers the upstand from full
at the road-side edge to zero at the building-side edge (a ~3-4 % ramp, walkable
and visually negligible).

Pre-check: south max step 20.5 -> 13.4 cm, north 15.1 -> 7.2 cm (the residual
13.4 cm is the crossing-ramp gradient, tracked separately). Street and site
rebuilt, site re-imported (7/7 meshes, collision flags intact), DemoMap rebuilt;
packaged -qaselftest still PASS. README step table updated.
This commit is contained in:
zwitschi committed 2026-11-08 16:12:46 +01:00
1 parent 115612e7e8
commit eab89bae47
21 files changed
+61 -36

No files matched your search

+11 -5
View File
@@ -80,7 +80,10 @@ LD_LIBRARY_PATH="$B/blender/lib" "$B/blender/blender" -b --factory-startup \
```
- `Road_Hollywood`: 8 120 verts, 7 812 faces, carriageway −10.5…+10.5 m, DEM elevations plus a 2 cm lift so it does not z-fight the terrain.
- `Sidewalk_South` 4.0 m wide, `Sidewalk_North` 5.3 m wide, both raised by the kerb height.
- `Sidewalk_South` 4.0 m wide, `Sidewalk_North` 5.3 m wide. The kerb upstand is
**full at the road-side edge and tapers to zero at the building-side edge**, so
the walk surface meets the terrain flush (before `0.1.1` the outer lip stood the
full kerb height above the DEM — a 15.8 cm ledge).
- `Kerb_South`, `Kerb_North`: vertical faces, mostly **0.13 m** — the 0.15 m assumption minus nothing on the road side — and flushed to 0 within ±2.5 m of each signalised crossing with a 1.5 m blend. Measured from the built mesh: 256 steps at 0.13 m, 15 flush, a few in transition.
Crown check on the built mesh at mid-block: gutter −10.5 m → +0.99, −5 m → +1.38, centre → +1.52, +5 m → +1.58, +10.5 m → +1.52. The crown sits just north of the centreline, as the cross-sections said.
@@ -105,13 +108,16 @@ A downward raycast on a 1 m grid along both sidewalks and the designated crossin
| Route | Samples | Holes | Z range | Worst step |
| ----------------- | ------: | ----: | ------------- | ---------: |
| South sidewalk | 279 | 0 | −0.45 … +3.13 | 20.5 cm |
| North sidewalk | 279 | 0 | +0.07 … +3.83 | 15.1 cm |
| Crossing at 130 m | 26 | 0 | +1.16 … +1.80 | 8.6 cm |
| South sidewalk | 279 | 0 | −0.47 … +3.06 | 13.4 cm |
| North sidewalk | 279 | 0 | +0.07 … +3.76 | 7.2 cm |
| Crossing at 130 m | 26 | 0 | +1.14 … +1.80 | 9.0 cm |
No holes anywhere, so nothing drops the player on either side. The two flagged steps:
- **15.8 cm at s≈207**, where a sample crosses from `Terrain_DEM` onto `Sidewalk_South` — that is the sidewalk's outer edge, the 0.15 m kerb height minus the terrain. Mostly hidden by buildings, but it is a real edge and it will be visible anywhere a building is missing.
- ~~15.8 cm at s≈207, the sidewalk's outer edge~~ — **fixed in `0.1.1`**: the
sidewalk upstand now tapers to zero at the building side, so the outer edge is
flush with the terrain. The remaining 13.4 cm max step on the south route is the
crossing-ramp gradient below, not the outer edge.
- **10–13 cm steps at s≈33, 39 and 126**, inside the sidewalk mesh: the kerb-flush transition at the crossings. That is a ~10 % ramp over 1.5 m, steeper than a real crossing ramp (8 % max). Worth grading properly when the crossings are detailed.
This is a pre-check, not the `0.1.0` release check: the release check is traversal in the engine.