39 lines
1.9 KiB
Markdown
39 lines
1.9 KiB
Markdown
## GeoData Heightmap Export
|
||
|
||
This repository converts DGM1 elevation tiles into Unity-ready 16-bit PNG heightmaps and a placement manifest. It relies on GDAL for mosaicking, resampling, and scaling to UInt16 ranges Unity expects.
|
||
|
||
### Prerequisites
|
||
- GDAL installed with Python bindings (`osgeo` importable).
|
||
- Python 3.9+ available on PATH.
|
||
- DGM1 source tiles placed in `raw_dgm1/` as `dgm1_<utm_zone>_<easting>_<northing>.tif` (with matching `.tfw` files).
|
||
|
||
### Repository Layout
|
||
- `raw_dgm1/` — input rasters (not versioned).
|
||
- `work/` — intermediates such as `dgm.vrt` and `_tmp.tif` files; safe to delete/regenerate.
|
||
- `export_unity/height_png16/` — final 16-bit PNG heightmaps for Unity import.
|
||
- `export_unity/tile_index.csv` — manifest mapping tile IDs to world bounds and global min/max used for scaling.
|
||
- `export_heightmaps.py` — main export script.
|
||
- `AGENTS.md` — contributor guide.
|
||
|
||
### Quick Start
|
||
1. Build the VRT mosaic from raw tiles:
|
||
```bash
|
||
gdalbuildvrt work/dgm.vrt raw_dgm1/*.tif
|
||
```
|
||
2. Export Unity heightmaps and manifest:
|
||
```bash
|
||
python3 export_heightmaps.py
|
||
```
|
||
3. Import the PNGs into Unity Terrains using `tile_index.csv` for placement and consistent height scaling (0–65535).
|
||
|
||
### Key Commands
|
||
- Refresh VRT: `gdalbuildvrt work/dgm.vrt raw_dgm1/*.tif`
|
||
- Run export pipeline: `python3 export_heightmaps.py`
|
||
- Inspect an output tile: `gdalinfo export_unity/height_png16/<tile>.png | head`
|
||
|
||
### Workflow Notes
|
||
- The script computes a global min/max from the VRT to scale all tiles consistently; adjust `OUT_RES`, `RESAMPLE`, or `TILE_SIZE_M` in `export_heightmaps.py` if your AOI or target resolution changes.
|
||
- `_tmp.tif` files in `work/` are transient; you can delete `work/` to force a clean rebuild.
|
||
- Keep file names stable to avoid churn in Unity scenes; re-exports overwrite in place.
|
||
- Large raw datasets are intentionally excluded from version control—document download sources or scripts instead of committing data.***
|