Skip to content

Import helpers ​

The import helpers read an exported build.json, with its image files alongside it, and bring the build into your tool at the right scale. They live in the import-helpers folder of the LibreTerrain repository.

ToolHelperStatus
BlenderAdd-on: centred, metre-scaled terrain meshes, packed mask images and point attributesTested with Blender 5.2 LTS
GodotEditor plugin: saved terrain scenes, float textures and selectable mask previewTested with Godot 4.6 and 4.7
Unreal EnginePython script: Landscape actors and linear layer-weight texturesUntested in Unreal

What they support ​

  • Multiple heightfields, multiple masks, alternative PNG/EXR encodings and single-output builds. Alternative encodings of the same output produce one terrain or texture.
  • Different heightfields become separate terrains at the same world position. Hide the ones you're not using.
  • Mask-only builds.
  • Vegetation points as CSV or JSON, imported as one instancer per species (see below).

Colour maps and 8-bit PNG outputs are skipped with a warning. Builds written with Write images as tiles are rejected.

Keep the files together

Files are resolved relative to build.json, so don't move just the JSON. Missing files, unsupported encodings, duplicate formats or contradictory grid metadata are errors. No source files are ever rewritten.

Blender and Godot prefer EXR. Their 16-bit PNG decoder reads all sixteen bits directly, without gamma conversion. Heights map through the world height range, and masks stay 0–1.

Blender and Godot currently limit a build to 4,194,304 samples per image (2,049² fits). Geometry is baked at one vertex per sample. There is no streaming, tiling, LOD or collision.

Points format ​

Each vegetation point has:

ColumnMeaning
x, yMetres from the world corner, 0..world_size
zAbsolute height in metres
rotation_degRotation about the vertical axis. 0° points along +X, 90° along +Y
scaleUniform multiplier; 1.0 is the species' nominal size
speciesThe species id, e.g. scots_pine

CSV has a header row x,y,z,rotation_deg,scale,species. JSON has the same columns under points. The exact contract is in points-format.md.

Each helper creates one instancer per species with a placeholder cone. Replace it with your own asset at nominal size. No per-point objects are created.

Code dual-licensed MIT / Apache-2.0. "LibreTerrain" and its logo belong to EllisonDigital.