In the last post I set the approach for EREMUS's terrain: build it procedurally in Houdini as a reusable, tiling system rather than a hand-sculpted Unreal scene, by combining what three tutorials each do best. This post is the first build, the actual Houdini network that turns that decision into terrain, from the first macro shapes through to a packaged HDA.
Starting with the macro shapes
I started from a HeightField and a distorted ramp heightfield_pattern. A ramp gives me parallel ridges, and turning on Distort curls them into the wind-blown sand lines I was after. I then stacked a few pattern copies with the layer mode set to add, big shapes first, then medium shapes, so the landform carries several scales of structure instead of one flat noise field. Building that macro silhouette before adding any detail was the single discipline the Terrain Handbook drove home across every biome, and it is what stopped the terrain looking like generic procedural noise.
The first version was too uniform, every ridge the same height, which read as noise and not landform. Stacking a second, larger pattern copy on top is what finally broke that up. Getting the number of stacked scales right was the fiddly part: one pattern looked flat, three looked busy; two, big then medium, was the balance.
Adding detail and structure
On top of the macro shapes I layered heightfield_noise, heightfield_slump, and a heightfield_resample pass. The noise and slump give the finer sand structure and settle the slopes so they read as real, gravity-affected material rather than a displacement pattern, and the resample keeps the resolution consistent for everything that comes after it.
Blending the dunes and driving the masks
I used heightfield_layer nodes to blend the dune field into the base, then drove the material breakup with masks rather than by hand. heightfield_maskbyfeature on height, slope and occlusion generates the masks that feed three material layers, sand, rock and worn, into a heightfield_quickshade. Masking off features like peaks, exposed slopes and cavities, instead of painting materials manually, is what keeps the whole thing art-directable: when I change the terrain, the masks follow it automatically. This masking-and-texturing approach is the part the Terrain Handbook goes deepest on, across its dusty, fiery and icy biomes.
Packaging it as a reusable HDA
The entire network is wrapped into a custom HDA, /obj/geo1/desert_terrain, with the parameters I actually tweak exposed at the top level. This covers Modules 1 to 5 of my terrain plan. This is where the procedural desert workflow shaped the decision: the world was always meant to be tiled and streamed into Unreal through Houdini Engine, so the terrain has to be a reusable generator that can also carry the scattering and PDG tiling later, not one hero mesh I can only build once.
I exposed the dune direction and scale, the noise and slump amounts, and the three mask thresholds (sand, rock, worn), the handful of controls I actually reach for when art-directing, so I can retune a tile without opening the network.
Evaluating the process
THE ITERATION WALL: "The slowest part was not any single node; it was iteration speed. Once the resolution was up and the slump and mask passes were stacked, every tweak meant waiting on a recook, so 'try an idea' became a minute-plus round trip, and that quietly shaped how boldly I experimented. Next time I would lock the shapes at low resolution and only crank it for the final look." MASKS LOOKING UNIFORM: "What caught me out is that art-directable masks are not automatically good-looking masks. My first maskbyfeature setup split sand, rock and worn cleanly by height and slope, and it read as three flat bands, exactly the uniform look I was trying to avoid. Breaking it up with occlusion and a little noise in the mask, instead of pure height thresholds, was the difference between 'procedural' and 'believable'."
Where this goes next
That is the first terrain, end to end, the macro shape, the detail and erosion, the feature-mask texturing, and the HDA that packages it all so it can be tuned and reused. The next posts take it further along the pipeline: texturing the terrain in COPs with feature masks instead of hand-painting, scattering the outpost floor across it, and getting it into Unreal through PDG tiling and Houdini Engine.












