SUMMARY
Procedural modeling is a great way to simplify parametric models. If you plan on using the same type of asset more than once, a procedural model can be very useful. If you are a Revit user coming to Blender, you will see a similarity between dynamic Families and Procedural Models, and converting your families to procedural models can be a great way to improve your Blender and procedural modeling skills. Cabinets are a great place to start.
This tutorial will explain the overall ideas behind building a procedural cabinet in Blender and give an example of each type of node group. The asset can be found here on Gumroad and an in depth video tutorial is coming soon.
WHAT IS A PROCEDURAL ASSET
A procedural asset uses an algorithm to create a 3d model, texture, or material. In Blender, this is done using a node based workflow called Geometry Nodes. With a procedural asset, the geometry of an object can be altered nondestructively.
VISUALIZE IT
Before building your asset, it can be helpful to create a road map towards your goal. This can be done many ways, with a drawing, with a flow chart, whatever helps you visualize it. I like to create a rough version of the model in a drawing and define each segment with a simple place holder. Once each placeholder is created, they are more defined until the outcome is what I was looking for.
PIECES OF THE MODEL
Assets are often made up of more than one object. These can be built in the same model or nested as a family, instance, block, function, etc… depending on the program you are using. In this tutorial, some objects will be built using node groups, and some will be an instance. The main segments of the cabinet will be:
The casework
The drawers
These two segments do use some of the same properties but are created differently, so separating them into two processes simplifies it. Each of these segments will contain objects that come together to create the finished asset.
The casework
Bottom
Top
Sides
Toe Kick
The drawers
Drawers
Dividers
Handles
MODEL PROPERTIES
Now that we have the pieces of the model defined, we can figure out which properties will also need to be defined to build those pieces. Some of these will be user defined, and some will be constant. In Blender, the user defined properties are called Inputs in geometry nodes. Here are the user defined inputs for this cabinet model.
Cabinet Height [h]
Cabinet Width [w]
Cabinet Depth [d]
Cabinet Side Thickness [th]
Drawer Quantity [N]
Toe Kick Height [h_toe]
Handle Width [w_handle]
Material
There will also be other properties used to create the model, but they will be defined within the nodes. These will be
Toe Kick Inset
Divider Height
Casework Height
Drawer Height
Top Plate Height
Toe Kick Y
Toe Kick Z_mid
These are defined with user defined properties, constants, and math nodes.
NODE GROUPS
The inputs and parameters are then linked into two distinct node groups, the cabinet body and the drawer segments. This image shows the model and the nodes that created it. The inputs are used to define the variables and then both the inputs and those variables are used to define the geometry.
MAKING THE CABINET
The casework is made up of a bottom, a top, sides, and a toe kick. Each of these segments is defined in a node group.
Each of these segments is a cube placed as an instance on a point. They all use the appropriate dimensions, but are created very similarly. Here is the top plate node group expanded
The drawer segment is made up of drawers, dividers, and handles, and those instances are repeated in an array based on the user-defined Number of Drawers [N].
The mesh line allows you to define a start and end point for a line and how many points are along that line. This requires two mesh lines. One that defines the array for the drawers and handles, and one that defines the array for the drawer dividers. To make this easier, the drawers and handles are in one node group, and the dividers are in the other.
The drawers and handles can be modeled using geometry nodes, as shown, or other pre-made assets can be used as the instances for these parts of the model.
The dividers are simple instances distributed on the points of the mesh line.
PUT IT ALL TOGETHER
Once each piece has been defined, the Join Geometry node will be used to put it together. In this asset, there is also a set material node. Each piece can be individually fine tuned for the level of detail required. While it may look complicated, it only uses a handful of nodes to create the cabinet.