top of page

Vindrael Work Flow




Houdini Terrain Generation



Houdini River Auto Generation
Terrain Outcome


To create the river, I drew a curve over the heightfield, then resampled and smoothed it for clean spacing and natural turns. I fed the curve and terrain into a custom Python SOP that samples height/gradient, snaps points to the surface, and iteratively shifts them downhill inside a Block Begin/End loop. A final pass of the tool refined the result, yielding a clean river spline ready for carving and width control.






I built the terrain in Houdini using three heightfield layers—main ridges/valleys, mid-scale stripes, and a smooth base—then blended them for the first pass. A local mask allowed me to add noise to an overly flat central area. Later, I used Mask By Feature to isolate remaining flat regions and introduced additional variation, removing unnatural plateaus and creating smoother, more believable mountain transitions.
From the refined river curve, I generated width data and swept it into a ribbon, then transferred these attributes to the heightfield to carve the riverbed and shape the banks. Resample and Smooth nodes cleaned transitions, producing a natural, continuous river path.


Slope -1

Slope -2

Slope -3

Houdini River Auto Generation
After finalizing the river spline, I used a Sweep node—driven by the width attribute—to expand the curve into a polygon ribbon, forming the river plane. I then calculated a distance-from-border value and blurred it to create a soft mask that fades from the river center toward the banks, useful for controlling bed depth and shoreline blending.
Curve Fit Terrain




Finally, I softened the normal and recalculated the slope, ensuring the river strip reads clean, smooth, and continuous.
Houdini Final Outcome










Depth Fade
Pixel Depth Dither
Snow
CombieNormal Sample
Slope Mask



Pivot Mask
Landscape UV
CombieNormal




Roughness
SubSurface
Water Mask
Snow Mask
Opacity Mask

To build the master automatic landscape material, I first created seventeen small material functions in UE, breaking common operations into reusable modules: opacity and distance fade, pixel dithering, slope and height masks, water and snow masks, normal blending, roughness control, subsurface colour, world-aligned UVs, and multi-layer blending, etc.





Unreal Engine Auto Material
In the master material, I simply plug these functions into the Base Color, Normal, Roughness, Opacity and other inputs as needed, which allows me to assemble rock, grass, dirt, snow and water surfaces quickly while keeping the overall shading logic consistent and easy to tweak.


Generates world-space and landscape UVs at different scales for snow edges, water edges, variation masks and standard layers.

Rock Layer
Samples a tiling noise texture to build water-edge and snow-edge masks, with adjustable scale and intensity.


Stone Layer

Grass Layer

Dirt Layer
Unreal Engine Auto Material - (Final Landscape Material)
Each terrain layer—rock, small stones, grass, and dirt—feeds its base color, normal, UV settings, and color adjustments into a shared layer function. The layers vary mainly in scale and intensity, with grass and dirt adding tiling and depth-fade controls for smoother blending in exposed or low-slope areas.
Water Layer

Snow Layer



Unreal Engine PCG Forest



Tyndall Effect

The god-ray material uses UE’s volumetric cone texture with adjustable UVs and panned noise for subtle motion, with color, opacity, and depth-fade shaping its tint, intensity, and soft edges.

Dirt Layer
Stone Layer
Water Layer
Grass Layer
Snow Layer
Auto Material Effect
Using UE’s PCG, I sampled landscape data, filtered point density, and controlled spacing, then added random transforms and weighted mesh spawning to create a dense, varied forest.



The fog material combines UE’s volumetric fog texture with panned noise and depth-fade controls, with color and intensity parameters shaping a soft, adjustable fog effect.
Unreal Engine BluePrint
Fog Effect
Contact
I'm always looking for new and exciting opportunities. Let's connect.
+86 18978911207
bottom of page