← All Posts
Wide view of the completed procedural shipping container yard in Houdini

Building a Procedural Shipping Yard in Houdini

Procedural Environments & Houdini Workflows4 min read

Initial Container Setup

The initial setup for the container, and the basis for its overall scale, is based off a single box node, which means everything downstream will change with the shape of that box, letting you make it as big or small as you want. The concept was to create something that looked visually real from a medium and far distance, ensuring the most key details of the container were visible.

Base shipping container render alongside the full Houdini node network that builds it
The base container mesh and the node network that drives every downstream variation.

Sheet Metal

Each major length of the container was extracted as a line, then offset with a small VEX wrangle: on every pair of points, if the pair index is odd, the point is pushed along Y by a signed amplitude, alternating the ridge direction on each side of the container. Once that was dialed in, it could be applied to every side of the container, then optimized, cleaned up, and packed. Each container was built from 3,700 primitives.

VEX wrangle code and resulting corrugated line profile for the sheet-metal ridges
The wrangle that offsets alternating point pairs to fake corrugated sheet metal.

Instancing the Containers

Because the scene needed an entire shipping yard, I needed a lightweight setup that stayed as cheap as possible. The approach that worked best was building a proxy bounding-box geometry and distributing it across a point array, with a wrangle node representing each row of containers and a set of functions that make every row fully customizable.

Subnetwork graph merging container point groups into rows across the shipping yard
Subnetworks generating each row of the yard from the proxy geometry.

Customizable Row Density

Each row has its own minimum and maximum container count, randomly generated between those two numbers, plus a density curve you can raise or lower to override specific areas of the yard to be denser or sparser.

Attribute wrangle parameters for min/max container count and the density ramp graph
Per-row min/max count and the density ramp controlling how full each row gets.

Final Layout

Once everything is laid out, the final scene renders in about two minutes, and unpacked would contain over 20 million polygons.

Wide viewport render of the completed procedural shipping container yard
The finished procedural shipping yard, ready to render.
Next PostBuilding a Procedural Shipping Yard in Houdini →