Houdini 16.5 Geometry

Building terrain with height fields

How to use Houdini’s height field tools to generate realistic terrain.

On this page


Houdini provides a wide variety of geometry nodes for generating and shaping terrain.

These tools represent terrain using 2D volumes where each voxel contains the height of the terrain at that grid point, called height fields. The data passing through a geometry network can contain multiple height fields. In the terminology of Houdini’s terrain tools, these are called height layers. For example, a tool might use one height layer to represent bedrock and another to represent loose soil on top. The default height layer is named height.

The tools also use a different type of 2D volume, where each voxel contains a "selected-ness" value, called a mask layer. Most terrain nodes take a second input that can contain a mask layer to control which parts of the terrain the node will modify. The default mask layer is named mask. Like height layers, it’s possible to have multiple mask layers in a geometry stream, and specify which named mask layer to use in a node’s parameters.

The Houdini viewport knows how to visualize the 2D height field as a 3D surface, and the mask field as a red tint on the 3D surface.

Foliage by SpeedTree, textures and small rocks by Allegorithmic and Quixel


Generating a height field from scratch


  • HeightField File loads height data from a 2D elevation map.

  • Lidar Import can load LIDAR formats (for example e57) as height fields.

  • HeightField Output writes height data to a 2D elevation map.

  • HeightField Quick Shade adds materials to terrain based on layers and masks, for rendering.

  • HeightField Scatter scatters points across the 3D surface represented by a height field. This is useful for distributing 3D geometry such as trees/plants across the terrain, or converting the height volume into a point cloud.

  • HeightField Tile Split splits a layer into multiple tiles. This can be useful for distributing work, for working on smaller pieces at a time, or for exporting tiles to game engines.

  • HeightField Tile Splice combines tiles into a single layer.

Adding features to terrain

  • HeightField Layer composites one height layer over another, allowing you to "paste" a feature into a larger field. The node will properly composite volumes that aren’t axis aligned, so you can position and rotate the volumes in 3D space before compositing.

  • HeightField Project raises or lowers terrain in the shape of 3D geometry.

  • HeightField Paint lets you paint elevation values into a height layer by hand.

  • HeightField Pattern generates repeating patterns such as stripes. It includes distortion controls which can make the geometric patterns look more organic. Adding these patterns into a height layer with a mask can create interesting details in terrain.

Conditioning terrain

Simulating natural processes

Making and editing masks

  • HeightField Draw Mask lets you draw masked areas by hand.

  • HeightField Mask by Feature creates masks based on criteria such as elevation, facing direction, or slope. For example, you can create a mask layer representing snowfall only above a certain elevation and only on a certain side of a mountain.

  • HeightField Mask by Object creates a mask from the intersection of a height layer and some 3D geometry.

  • Height Field Mask Noise creates a customized Height Field Noise set up to add noise to a mask layer, which can make it look more organic.

  • Height Field Mask Clear creates a customized Height Field Layer Clear set up to clear the mask.

Layer utilities

Tips and notes

  • The Terrain desktop has a specialized shelf set, radial menu, and pane layout for working with terrain.

  • You can take advantage of the ⇥ Tab menu’s smart completion to type height or just hf instead of the full height field when searching for height field nodes. For example, you can type hfnoise to get the Height Field Noise node.

  • Because height fields and masks are regular Houdini volume geometry, you can use any geometry (SOP) node that works with volumes to edit height fields and masks. For example, you can flood fill the mask to be fully "on" everywhere using a Volume Wrangle with the VEX snippet @mask = 1;.




Next steps

Guru level