Procedural Cactus Generator

Four possible variations of cacti that the generator can produce. Some of the changeable parameters include height, number of branch generations, number of both primary and child branches, fringe amount, trunk radius, and profile control via a ramp.

Four possible variations of cacti that the generator can produce. Some of the changeable parameters include height, number of branch generations, number of both primary and child branches, fringe amount, trunk radius, and profile control via a ramp.

The generator starts with a base trunk line (or drawn curve) which is fed into a feedback loop that iterates based on the number of desired branch generations. The bend, scale, and lift of each branch  is adjusted based on the age and position.

The generator starts with a base trunk line (or drawn curve) which is fed into a feedback loop that iterates based on the number of desired branch generations. The bend, scale, and lift of each branch is adjusted based on the age and position.

The cross section of the cacti is drawn and the valleys inset. It is then swept along each generation of line from the skeleton, beveled, subdivided and smoothed. Base UVs are generated from the sweep node as it provide nice even UVs along curved lines.

The cross section of the cacti is drawn and the valleys inset. It is then swept along each generation of line from the skeleton, beveled, subdivided and smoothed. Base UVs are generated from the sweep node as it provide nice even UVs along curved lines.

The blockout is converted into a VDB and the fringe points extracted to copy the cacti pits onto. It is then fractured and the pits are blasted away followed by a conversion and remesh back to polygons. A poly reduce is applied and UVs are transferred.

The blockout is converted into a VDB and the fringe points extracted to copy the cacti pits onto. It is then fractured and the pits are blasted away followed by a conversion and remesh back to polygons. A poly reduce is applied and UVs are transferred.

The same pits used for the fracture are distorted to create the spike buttons. An intersection analysis with the cactus flesh is used to create a bounding box "safe zone" for spikes to be copied to. Candidate points are randomly reduced to a max number.

The same pits used for the fracture are distorted to create the spike buttons. An intersection analysis with the cactus flesh is used to create a bounding box "safe zone" for spikes to be copied to. Candidate points are randomly reduced to a max number.

Spike geometry is copied to the points and a padded bounding box created for each one. End caps are blasted and a random face is chosen to be kept for a spike alpha card.

Spike geometry is copied to the points and a padded bounding box created for each one. End caps are blasted and a random face is chosen to be kept for a spike alpha card.

The final high and low poly models can be saved out separately for an external baker or baked automatically within the generator itself. This is one example of poly count reduction but it can be manipulated dynamically to meet a target poly count.

The final high and low poly models can be saved out separately for an external baker or baked automatically within the generator itself. This is one example of poly count reduction but it can be manipulated dynamically to meet a target poly count.

Using the Side Fx Labs "Simple Baker" all of the mesh data is baked inside Houdini including four masks generated from attributes on the high poly to be used later in Substance Designer.  These masks are composited into the RGBA channels of a single map.

Using the Side Fx Labs "Simple Baker" all of the mesh data is baked inside Houdini including four masks generated from attributes on the high poly to be used later in Substance Designer. These masks are composited into the RGBA channels of a single map.

The mesh data maps are pointed to from inside Designer and automatically processed through the node network. Multiple tri-planar projections and masks from Houdini help to hide any UVs seams. Final PBR maps are output.

The mesh data maps are pointed to from inside Designer and automatically processed through the node network. Multiple tri-planar projections and masks from Houdini help to hide any UVs seams. Final PBR maps are output.

Continuing on with my trend of creating organic procedurally generated models. I decided to revisit the very first project I ever tried in Houdini and rebuilt it from the ground up. Hence, I present Procedural Cacti Generator v2.0! The goal of this project was to see if I could create a full pipeline prop generator. I've very roughly gone over my process, but if you have any questions please don't hesitate to ask.

Date
October 14, 2020