Heightmap generator from real terrain
3D Terrain exports a 16-bit heightmap PNG, a GeoTIFF DEM (EPSG:4326), a DEM package with world file and PRJ, STL/OBJ/GLB models and a matching surface texture. This guide covers the game-engine side and the GIS-ready formats.
Heightmap generator for Unity, Unreal and Blender
Pick any place on Earth, then export a 16-bit grayscale heightmap PNG of the actual elevation grid — the format Unity terrain, Unreal landscapes, Godot heightmap plugins and Blender displacement expect. A matching surface texture PNG is exported alongside it, so the colour map lines up exactly with the height data.
- 16-bit PNG heightmap — 65,535 steps between the lowest and highest point, real metres in the legend.
- Surface texture — hillshade, colour ramp, water and boundaries baked to a PNG.
- No GIS install — the DEM tiles are decoded in the browser.
What you get
The Export panel has a direct Heightmap option: a raw 16-bit grayscale PNG of the elevation grid (real metres, black = lowest, white = highest) plus a matching surface texture. The DEM package adds a .pgw world file and .prj (WGS84) for GIS software, and the GeoTIFF DEM export writes a georeferenced 16-bit TIFF directly. The STL/OBJ/GLB exports are the same surface as a printable solid.
The modelled grid tightens as the selection shrinks — a whole country comes out coarse, a single valley comes out fine. Draw a box anywhere, or import a GeoJSON polygon for an exact area, then export the STL for that shape.
In each tool
- Blender — subdivided plane, Displace modifier, this PNG as the texture: real terrain in under a minute. Scale Z by the legend's elevation range for true proportions.
- Unreal Engine — Landscape heightmap import starts from a 16-bit elevation image like this one; set the world size from the region's span shown in the app.
- Unity — the terrain workflow builds from the same grayscale heightmap; the legend's min and max metres give you the height scale.
- Godot — heightmap-driven terrain plugins such as Terrain3D take the PNG directly.
How it works
- Choose the area — any country, state or county, a box drawn anywhere on Earth, or an imported GeoJSON polygon.
- Note the elevation range in the legend; you will need it to scale the map in the engine.
- Open the Export panel and save the STL.
- In Blender: import the STL, add an orthographic camera looking straight down, and bake the geometry to a 16-bit image (or use the engine's own terrain-from-mesh tool).
Open the app and export an STL
Questions
- What bit depth is the heightmap?
- 16-bit grayscale PNG — 65,535 steps between the region's lowest and highest elevation, far beyond what an 8-bit image can resolve.
- How do I restore real elevations?
- Linearly: black maps to the lowest metre and white to the highest, and both values are printed in the app's legend. From there, height = min + pixel fraction × (max − min).
- Is it the same data as the 3D model?
- Yes — the exact grid the model, the rendered PNG and the STL export are built from, so assets made from the heightmap register perfectly with them.
- Can I clip it to a custom shape?
- Yes. Import GeoJSON area draws the selection from a polygon, and every export — heightmap included — follows it.
- Can I use it in a commercial project?
- Yes. The elevation data is open; keep the credit line that ships with the exports, as you would for course materials, editorial work or a shipped game's documentation.
- Do I need an account?
- No. There is no account, no trial and no paid tier — every region and export format, for everyone.
- What is the best heightmap generator for Unity?
- For real-world places, this tool exports a 16-bit PNG heightmap plus texture directly from global DEM data. For procedural terrain use a noise-based generator; for real terrain the data source matters more than the exporter.
- Can I get a 16-bit PNG heightmap?
- Yes — Heightmap export in the Export panel writes a 16-bit grayscale PNG with the real elevation values, not an 8-bit approximation.
- How do I make a heightmap from an STL?
- Import the STL into Blender, view it from directly above with an orthographic camera and bake the geometry to a 16-bit image. The direct heightmap export is faster because it comes from the same elevation grid.
- What resolution should a heightmap be?
- Match the terrain size: a 1–2 km patch at 1 m per pixel is 1024–2048 px. This tool exports the native grid for the selected area; zoom in for finer grids.
- Can I use the heightmap in Unreal Engine?
- Yes — Unreal landscape heightmaps use 16-bit grayscale PNG or RAW. Import the PNG; the legend gives the metre range for scaling the Z axis.