Back to Works

Procedural Forest Biome

An L-system-based tree generator and PCG distribution for natural environments.

Sunlight falling through a procedurally generated forest
Tech Stack
Houdini
Unreal Engine 5.6
Role
Developer
Core Mechanics
PCG Framework
HLSL
HDA Tool

Procedural Forest Biome combines an L-system-based tree generator in Houdini with procedural vegetation distribution in Unreal Engine 5.6.

The workflow starts with authoring trees and shrubs, then uses terrain-derived temperature and moisture to populate a forest community. Tree shape, materials, and wind animation are part of the same asset creation process.

The Challenge

Create a vegetation generation tool using Houdini L-systems, handling UVs, branching, tree shape, materials, and wind animation.

Derive temperature, moisture, and other environmental data from the terrain heightmap in UE5, then pass that data into the PCG graph for sampling and filtering.

Generation Workflow

01 Generate vegetation assets

Adjust tree age, gravity, leaf size, canopy shape, and materials. Use the tree generation tool to bake a variety of tree and shrub assets for later use.

02 Set the climate

Adjust the terrain’s moisture and temperature data to control the environmental conditions used by the biome.

03 Generate a community

Define an area with the spline tool, then add rocks, trees, shrubs, and herbaceous plants to the generation candidate pool to create a forest community with an ecological structure.

System Architecture

PCG Biome Graph

Run a basic Surface Sampler once, then filter subsequent branches using the FFT Biome Sampler. Reusing the sampled points reduces repeated iteration and improves generation speed.

PCG graph showing spline-based rock and canopy placement with road clearance
Spline-based placement, canopy distribution, and road clearance.
FFT Biome Sampler feeding slope, humidity, and temperature filters for warm and cold trees
Shared biome data feeds slope, humidity, and temperature filters. Open the graph to inspect it at full size.

L-system + Sweep Tree Generator

Expose basic parameters such as tree age, thickness, gravity, and leaf settings. Noise and ramps allow distinctive artistic styles and give artists greater control over the tree’s silhouette.

Adjusting the procedural tree generator in Unreal Engine.

Wind Animation 1 — Pivot Painter 2 + Labs Tree Hierarchy

A hierarchical foliage setup combines Labs Tree Hierarchy with Pivot Painter 2 for branch and leaf wind animation.

Labs Tree Hierarchy node setupPivot Painter 2 configuration
Tree animated using Pivot Painter 2 and its branch hierarchy

Wind Animation 2 — Height Mask + Sine Function

A second approach combines a height mask with a sine function to control wind motion along the vegetation’s height.

Height mask and sine function wind material setupVegetation wind animation using a height mask and sine function

Foliage Material

Foliage material graph in Unreal Engine
Foliage material setup.

Problems Solved

Video

Watch on Bilibili ↗

L.Z / 2026