On this page |
Overview ¶
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.
Masterclass ¶
Generating a height field from scratch ¶
-
The Height Field node generates a new, flat height field.
A Height Field node followed by a Height Field Noise is the primary way to start with some random terrain.
I/O ¶
-
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 ¶
-
HeightField Blur smooths out details in terrain.
-
HeightField Noise and HeightField Distort by Noise add random detail to terrain.
-
HeightField Clip flattens areas above and/or below a certain height, for example to create tableland (mesa/tapui).
-
HeightField Terrace creates flattened steps up slopes, creating looks like terraced farms or waterfall rock formations.
Simulating natural processes ¶
-
HeightField Erode simulates the process of erosion, creating natural-looking features.
-
HeightField Slump simulates the process of loose/piled soil moving downhill.
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 Geometry 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.
Note
If you see odd results when masking nodes, try using Heightfield Isolate Layer or Heightfield Visaulize's Custom Tinting range to verify the values in the mask are from 0-1 (inclusive).
Values from 0-1 appear as red tint in the mask visualization. Zero values appear white, but negative values and values greater than 1 also appear white. If a mask doesn’t behave as expected it might be because it contains out-of-range values.
Layer utilities ¶
-
HeightField Transform moves and rotates the fields in world space.
-
HeightField Visualize lets you visualize elevation values using a color ramp.
-
HeightField Remap “redistributes” height values in a layer into a new range, based on a ramp.
-
HeightField Resample changes the resolution of a field’s underlying grid.
-
Height Field Wrangle is an alias for Volume Wrangle. It lets you edit the values in a height volume using a VEX snippet.
-
Height Field VOP is an alias for Volume VOP lets you build a VOP network to edit the values in a height volume.
-
HeightField Copy Layer creates a new layer by copying an existing one.
-
HeightField Layer Properties sets layer options such as how to compute values outside boundaries of the field (Border type).
-
HeightField Layer Clear resets the values in a layer to 0.
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 justhf
instead of the fullheight field
when searching for height field nodes. For example, you can typehfnoise
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;
.