Back to Houdini Work

Vines Tool

Jan. 19, 2021

Results using various parameters and target "light" configurations. Growth shape, color, and direction can all be customized.

Boids-Inspired Growth Logic

After working on several projects involving Boids using Craig Reynolds' three rules of interaction, I had an idea to simulate vine growth using similar principles. A primary challenge was ensuring the vines would continuously "cling" to surfaces rather than navigating freely through open space like flocking boids; they needed to actively seek out and adhere to structural anchors.

Vines initial test render 1 Vines initial test render 2 Vines initial test render 3 Vines initial test render 4
Early test results with user controls for source and target geometry. Initially, the vines grew arbitrarily outward like branching trees, before surface-adhesion constraints were refined.

The solver is implemented in Houdini using VEX. On each simulation step, the vine tips evaluate a composite directional vector informed by several weighted factors: orientation toward the goal (light source), proximity thresholds to surrounding surfaces, repulsion from neighboring vines to prevent clumping, and procedural curl noise. Once the heading is computed, points step forward along the surface until reaching designated stop conditions.

HDA Growth Settings Parameter UI
Growth parameter controls inside the HDA interface. Different balancing of attraction, surface cling, and noise generates vastly different botanical behaviors.

Foliage, Age Tracking & Flowers

To make the growth feel organic, leaves needed to sprout selectively—only when the vine segment rested at an appropriate surface angle rather than hanging vertically or clipping inside tight crevices. This is evaluated by measuring the surface normal of the closest geometry and filtering vine points whose alignment falls within a valid angular threshold.

Leaf growth test on character mesh
Testing surface-filtered leaf sprouting across an organic mannequin geometry.

Finally, leaves dynamically emerge as small buds and scale up as the host vine matures, while the primary stems thicken with age. A point attribute counter tracks the age of each segment across the simulation frames, allowing procedural ramps to drive thickness, leaf scale, and pigmentation. Flowers are instantiated using an extension of this age-gated system.

Appearance and Foliage Parameter UI
Customization controls for vine thickness, taper, leaf density, and flower coloration.
Final render of vines climbing wooden lattice
Final Octane Render of procedural vines scaling a wooden garden lattice.