[!Note]
This is the manual import path for Unreal (no plugins, full control). If you want the faster option, Gaea2Unreal is open source and available on GitHub.[1]Manual is still useful for debugging scale, custom pipelines, or locked-down projects.
Manually Importing Gaea Heightmaps into Unreal Engine
This guide covers the reliable way to bring a Gaea heightmap into Unreal Landscape with correct scale and height.
Gaea works in metres. Unreal works in centimetres. The import works fine without conversions, but the scale will be wrong.
This is all expressed from the Unreal Technical Landscape docs [2]
What’s new since the older Gaea 2 versions
A few changes that remove a lot of the old guesswork:
- The /Unreal node now auto-levels the dataset at the end
definition.jsoncontains the ranges needed to keep scale consistent- The alternative Gaea2Unreal tool is open source on GitHub[3]
The Unreal conversions still apply. We’re just making them repeatable.
What you need
Files
- Heightmap exported from Gaea as 16-bit (PNG or R16 recommended)
definition.jsonthat is exported with yourUnrealnode build.
[!Important]
Avoid 8-bit heightmaps. They cause banding and stepping.
Inputs
| Item | Example | Notes |
|---|---|---|
| Terrain width (m) | 2048 | From Gaea Terrain Definition |
| Heightmap resolution (px) | 2017 | The exported heightmap size |
| Max height (m) | 512 | Your intended authored height range |
Scale conversions - Unreal formaulas
1) XY scale (ground size)
Use this for Unreal’s Scale X and Scale Y:
XY Scale = (Width(m) Ă— 100) / (Resolution - 1)
× 100converts metres to centimetresResolution - 1keeps the landscape size accurate (avoids the common “close but not exact” import)
Enter in Unreal
- Scale X = XY Scale
- Scale Y = XY Scale
2) Z scale (height)
Use this for Unreal’s Scale Z:
Z Scale = MaxHeight(m) Ă— 100 Ă— 0.001953125
Enter in Unreal
- Scale Z = Z Scale
[!Tip]
MaxHeight is the height range you authored in Gaea (Terrain Definition / export metadata). Auto-levelling changes distribution, not your intended real-world scale.
Manual import steps - single heightmap
1) In Gaea
- Set your Terrain Definition (width and intended max height)
- Export the heightmap as 16-bit
- Keep
definition.jsonwith the export (if included)
2) In Unreal Engine
- Open Landscape Mode
- Select Import from File
- Choose your heightmap file
- Check Unreal has detected the correct resolution
- Set:
- Scale X = computed XY Scale
- Scale Y = computed XY Scale
- Scale Z = computed Z Scale
- Click Import
Masks and weightmaps
- Import the landscape heightmap
- Apply the landscape material
- Create/confirm the landscape layers (names must match)
- Import each weightmap into the correct layer
[!Important]
Most “weightmaps don’t work” issues are naming, order, or importing before the material/layers exist.
Tiled landscapes / World Partition
If you are importing tiles:
- Keep all tiles consistent (same bit depth and resolution)
- Use the same X/Y/Z scale values for every tile
- Keep any JSON metadata with the correct tile set
Checks
| Symptom | Usually means | Fix |
|---|---|---|
| Terrain too big / too small | XY scale wrong | Recalculate XY with (Resolution - 1) |
| Terrain too flat / too tall | Z scale wrong | Recalculate Z from MaxHeight |
| Visible stepping/terracing | 8-bit export | Re-export 16-bit |
| Looks “re-centred” vs older exports | auto-level export behaviour | Use authored MaxHeight; don’t guess Z |
See GitHub: Gaea2Unreal ↩︎
See GitHub: Gaea2Unreal ↩︎