Procedural Worldbuilding

2020–2023

Procedural Worldbuilding

Rule-Based Environment Generation through Terrain, Biomes, Materials, and Code.

This project focuses on building large-scale environments through procedural generation. The goal is to explore how rule-based systems, custom attributes, and code-driven tools can create complex scenes with high flexibility and rapid iteration.

This project expands from generative image-making into a reusable environment workflow in Houdini. The system focuses on art-directable controls—terrain formation, biome-driven scattering, and mask-based material blending—so a single setup can generate many consistent variations while remaining editable at every stage.

Final rendered procedural harbor city
Vegetation scattered across a mountain lake environment
Rendered mountain and lake environment generated from terrain fields
01

HeightField Terrain Generation

Terrain is created with Houdini HeightFields and treated as a layered dataset rather than a single height map. Primary forms are established first, then refined through erosion and filtering passes. Derived fields—slope, flow, curvature, and custom masks—become shared control signals for both scattering and surfacing, keeping terrain shape and look development in sync.

Houdini HeightField terrain generation setup
02

Biome Vegetation Scattering System

Vegetation distribution is generated through biome rules driven by HeightField attributes. Density is controlled by altitude and slope thresholds, with additional breakup masks for clustering, clearings, and edge variation. Instances inherit orientation and scale from the terrain field, allowing consistent placement while keeping enough stochastic variation for natural results.

Biome distribution chart relating vegetation to temperature and precipitation
03

Mask-Driven Material Blending

Surfacing is controlled through a mask stack derived from HeightFields, including slope- and height-based layers plus authored masks for art direction. These masks drive material blending to maintain coherent transitions (e.g., rock-to-soil, soil-to-grass) and keep the visual language consistent with the scattering logic.

Terrain material blending mask 1
Terrain material blending mask 2
Terrain material blending mask 3
Terrain material blending mask 4
04

MaterialX Automation (Python HDA)

To reduce repetitive shader setup, a Python-driven HDA generates MaterialX networks automatically from standardized texture sets and naming conventions. The tool builds a consistent node graph, connects maps, exposes common look-dev controls, and enforces uniform parameter interfaces—making materials faster to iterate and easier to reuse across scenes.

Animated demonstration of Python-driven MaterialX network generation
05

Render Breakdown

The harbor city render is separated into lighting, reflection, ambient occlusion, background, and masking passes. These layers allow the scene to be balanced in compositing, refining depth, contrast, and atmosphere in the final image.

Harbor city rendering breakdown, AO
AO
Harbor city rendering breakdown, cc
CC
Harbor city rendering breakdown, cover
COVER
Harbor city rendering breakdown, dd
DD
Harbor city rendering breakdown, did
DID
Harbor city rendering breakdown, rl
RL
Harbor city rendering breakdown, sd
SD
Harbor city rendering breakdown, sid
SID
Harbor city rendering breakdown, ti
TI
Harbor city rendering breakdown, alpha
ALPHA
Harbor city rendering breakdown, bg
BG
Harbor city rendering breakdown, m
M
← All projects