Manually Importing into Unreal

[!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.json contains 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.json that is exported with your Unreal node 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)

  • Ă— 100 converts metres to centimetres
  • Resolution - 1 keeps 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

  1. Set your Terrain Definition (width and intended max height)
  2. Export the heightmap as 16-bit
  3. Keep definition.json with the export (if included)

2) In Unreal Engine

  1. Open Landscape Mode
  2. Select Import from File
  3. Choose your heightmap file
  4. Check Unreal has detected the correct resolution
  5. Set:
    • Scale X = computed XY Scale
    • Scale Y = computed XY Scale
    • Scale Z = computed Z Scale
  6. Click Import

Masks and weightmaps

  1. Import the landscape heightmap
  2. Apply the landscape material
  3. Create/confirm the landscape layers (names must match)
  4. 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

  1. See GitHub: Gaea2Unreal ↩︎

  2. see docs: Unreal ↩︎

  3. See GitHub: Gaea2Unreal ↩︎

3 Likes

Excellent break down.

1 Like