Files
gig-line/Tools
zwitschi ece48649f5 feat: terrain mesh from the DEM, and correct the blockout frame
Tools/terrain_from_dem.py builds a 191x106 grid at 2 m over the block, Z being
NAVD88 minus the origin ground. Building footprints from the OSM extract are cut
out so rooftops never become terrain (72 footprints, 6310 cells). Spot checks
reproduce the measured profile: origin 0.00, Orange Dr +3.39, south gutter
+0.93, crown +1.38, north sidewalk +1.43.

Blosm projects with a sphere, not an ellipsoid, so its frame was ~0.4% oversized
and rotated by meridian convergence: about 2 m at the theatre. The blockout now
fits a six-parameter affine into EPSG:26911 on five control points (0.0 cm
residual) and transforms root objects only, since children inherit and double
transforming them read as a 2 m placement error.
2026-11-06 23:40:50 +01:00
..

Tools

Repeatable import/export and processing helpers. Anything that was done twice by hand belongs here.

Conventions

  • One script, one job. No interactive prompts; every input is an argument.
  • Each script documents its input format, output format, and the exact tool version it was tested with.
  • Blender scripts run headless (blender --background --python), so they can be re-run for a regression check.
  • No credentials, no absolute machine paths, no writes outside the project by default.
  • A script that produces game content logs what it produced, so Game/Content can be audited against it.

Helpers

  • check-lfs.sh — repository guard: fails if git-lfs or the lfs filter is missing, or if an LFS-tracked file was committed as a plain blob.
  • blosm_blockout.py — headless Blosm import of the committed .osm extract into a .blend, with a per-building scale report. Exact invocation in Art/blender/README.md.
  • commons_fetch.py — Wikimedia Commons reference fetcher. Search or exact File: titles, 1600 px thumbnails, provenance sidecar.json per folder. Writes only into the gitignored Art/reference/; reference images are never committed.

Planned helpers

  • Blender export preset runner (named presets, metric scale assertion)
  • Blender→Unreal scale test (export a known-size cube, verify 100× conversion)
  • OSM extract fetch and manifest writer (records date, bounds, checksum)
  • QGIS processing steps as batch scripts, so the geo cleanup is reproducible rather than GUI-only