Procedural city generator (houdini digital asset)
I developed a procedural city generation tool as a Houdini Digital Asset (HDA) designed for rapid layout, previs, and environment generation. The system allows artists to quickly generate large-scale urban environments while retaining fine-grained control over structure, density, and visual style.
The tool is built entirely in SOPs, with VEX-driven geometry logic for performance and Python-based parameter automation to support a clean, artist-friendly interface. All generation is non-destructive, enabling fast iteration without manual rework.
​​
This tool-driven approach makes the system suitable for animation, games, and real-time visualization, where large environments must be iterated on quickly and consistently.
Artist-Facing Features
-
Adjustable street grid layout and city scale
-
Procedural city blocks with automatic zoning
-
Density-map–driven building height variation for distinct urban regions (e.g. dense cores vs. suburban areas)
-
Parameterized road and sidewalk widths
-
Automatic placement of secondary elements (trees, traffic lights)
​
City Blocks & Building Generation
Each city block is generated procedurally by scattering seed points and instancing modular building footprints. Geometric analysis (area and perimeter) determines whether a region becomes a building footprint or open space, allowing blocks to naturally mix architecture and green space.
Building height and distribution are controlled via a custom density map, enabling intuitive, high-level artistic direction over city structure.
​
Procedural Building Styles
The generator supports multiple building archetypes:
-
Skyscrapers with simplified silhouettes for dense urban areas
-
Low-rise buildings with randomized window layouts
Window size, spacing, and facade variation are fully parameterized, enabling consistent style control while avoiding visible repetition.
​
Roads, Sidewalks & Urban Details
-
Roads are generated automatically along block boundaries
-
Sidewalks are created through edge extrusion
-
Key parameters include grid resolution, road count, and thickness values
At each four-way intersection, traffic lights are placed automatically using orientation detection and point-based logic, adding believable urban detail with no manual setup.
​
Forward-Looking Exploration
After completing the core system, I experimented with integrating a Model Context Protocol (MCP) workflow to explore how contextual scene data could influence procedural decisions in future iterations. While not currently part of the generation pipeline, this experiment laid groundwork for environment-aware asset placement and smarter procedural logic.
This exploration reflects my interest in building tools that evolve alongside production needs.