Procedural Modeling

Procedural modeling allows you to edit meshes in a non-desctructive way. You can perform topological edits to a mesh, which can be modified, rigged, and even animated. You can easily revert or modify operations, keeping the rest of the operations intact.

The procedural modeling system works similarly to the deformation system. A mesh layer contains the base mesh, which is procedurally modified. This means that when you edit the mesh, operations are layered on top of the base layer. If you modify the base layer, the operations layered on top are re-evaluated to generate the result.

The image below shows the Mesh Operations list with the Base Mesh at the bottom, containing a Star curve primitive with a Curve Fill operation applied to it, followed by a Smooth Shift operation. You can see the resulting mesh on the right.

With procedural modeling, you can change any of the mesh operations without touching the rest of the list. For example, if you swap the Star curve primitive in the example above to an N-Sided curve primitive, you get the following result:

As you can see in the image above, the Curve Fill and Smooth Shift still get applied to the N-Sided curve primitive, and there's no need to re-create the mesh from scratch.

When an operation in the stack changes, only the operations on top of that layer are re-evaluated. This means that applying a procedural operation on the top layer of the stack is as fast as applying a single operation to a base mesh.

You can access the procedural modeling tools in the Mesh Ops tab in the Model and Setup layouts.

For more information on how to use the panel, see Using the Mesh Ops Tab.

The procedural modeling system is made up of two main components: mesh operations and deformers. Mesh operations in turn have three types: tool operations, sub-tools, and selection operations.

You can find details on each of these categories below.

Mesh Operations

Mesh operations are the key components to the procedural modeling system. They are very similar to deformers, but unlike deformers, they are allowed to change topology, rather than just modifying the position of existing elements. They are integrated into the evaluation system, and are applied as a layer on top of the Mesh Operations list. When mesh operations are evaluated, you're provided with an editable mesh, and you can perform any edit on it.

Procedural primitives and curves are examples of mesh operations. The images below show the Toroid tool in the 3D viewport and in the Mesh Operations list.

There are different types of mesh operations: tool operations, sub-tools and selection operations.

Tool Operations

Modo has a diverse and feature-rich modeling toolset. The procedural modeling system takes advantage of this set by providing each tool's functionality as a procedural operation. The result of this is a tool operation.

Most of the existing modeling tools have been converted into procedural operations, and their functionality automatically wrapped by a procedural mesh operation. Unlike a standard mesh operation, procedural tools have access to the procedural Tool Pipe, and various sub-tools to modify their behaviors. Procedural tools also provide tool handles for user interaction. Apart from these two additions, they work identically to a mesh operation.

The images below show a Smooth Shift operation applied to a Toroid procedurally.

Sub-Tools

Similar to the existing Modo toolset, you can modify the properties and evaluation of the procedural tools using a Tool Pipe. For example, a symmetry sub-tool can be combined with a transform operation to perform a symmetrical transform. In the procedural modeling system, sub-tools can be associated with a mesh editing tool in a similar way, to modify how it operates. For instance, you can add a Path Generator as a sub-tool to a Text mesh operation to have the text walk along a curve.

The procedural modeling system can also evaluate other item types as sub-tools. For example, falloff items can be connected to a procedural tool, and evaluated exactly like a falloff tool. Combining multiple sub-tools together can create new and unique operations.

Selection Operations

Procedural modeling works by maintaining operations and their settings in the Mesh Operations list. Any selections must also be stored with the tool operations to allow revision of the selection in the procedural stack.

Selection operations provide this functionality. A selection operation is a special item type that can be associated with mesh operations and procedural tools. As the procedural operation is evaluated, the selection operation is also evaluated, and provides the target elements for any mesh edits. The basic selection operation uses mesh element indices to define which elements are modified. You can define these indices by painting a selection in the 3D viewport.

Additional selection operations can define a procedural selection, allowing the properties of the mesh to define the target for the edit. For example, a procedural selection operation can automatically select all elements of the mesh affected by a falloff. As the base mesh is edited, and the affected area changes, any operation using that selection is modified to operate on different elements.

The image below shows the effect of a Polygon Bevel on a cube, using a Linear Falloff to define what elements are affected.

Note:  For details on selection operations, see Procedural Selection.

Tip:  To quickly select and edit a base mesh in your Items Lists, right-click on a mesh and select Edit Base Mesh from the pop-up contextual menu.

Deformers

Deformers are tightly integrated into the procedural modeling workflow. They are managed in the same stack as mesh operations, and can be mixed together to apply deformers before or after mesh operations and vice versa. For more information on deformers, see Applying Deformers.

The images below show the Push Influence applied to a procedural Toroid mesh.