Procedural Geometry

MODO 10.1 introduces a new procedural geometry system. This procedural system allows geometry to be dynamically created and modified over time. There are three extensible components to the procedural system; Mesh Operations, Tool Operations and Selection Operations.

Mesh Operations

Mesh Operations are the core building blocks of the procedural system. The mesh operations are placed into a stack, and a procedural mesh is passed from one operation to another to result in a final modified mesh. They can perform any kind of edit to the mesh they want, such as creating new geometry or modifying existing geometry.

There are usually three components to a mesh operation; the item, the ILxMeshOperation object and a modifier that writes the ILxMeshOperation object to one of the items channels. These components can either be created manually, by implementing each server, or for simple mesh operations that only rely on some basic inputs, an automated approach is provided that reduces the amount of boilerplate code that is required.

Mesh Operation - Overview Provides an overview of the mesh operation interface and item type.

Mesh Operation - Automatic implementation This provides an example in both Python and C++ of how to create an extremely simple mesh operation. This mesh operation takes an ILxMeshOperation interface and generates an associated item type and modifier.

Mesh Operation - Manual implementation In some rare cases, full control of the mesh operation implementation is required. In these cases, you will need to implement an item type, a modifier and an ILxMeshOperation interface. This example in Python and C++ demonstrates the implementation of a Mesh Operation from scratch.

Mesh Operation - Example This demonstrates a fully featured mesh operation plugin. The plugin demonstrates evaluation and re-evaluation, as well as how to control where the mesh operation lives in the UI using configs.

Tool Operations

Tool Operations are a sub-type of the Mesh Operation. They provide a simple way to wrap a new or existing direct modelling tool in a mesh operation, so that it can be evaluated by the procedural system. The tool operation provides many behaviours that are available to direct modelling tools, including user interface such as tool handles, as well as access to tool packets for modifying tool behaviour. Tool Operations can also be used to extend the functionality of direct modelling tools, outside of the procedural system.

Similar to Mesh Operations, Tool Operations can either be created automatically from an existing tool server, or can be created manually by implementing various servers.

Tool Operation - Overview Provides an overview of the tool operation interface and item type.

Tool Operation - Virtual Undo Explains how tool operations can be used to extend the functionality of direct modelling tools.

Tool Operation - Automatic implementation This provides an example in both Python and C++ of how to create an extremely simple tool operation. This tool operation takes an ILxTool interface and an ILxToolOperation interface and generates an associated item type and modifier.

Tool Operation - Manual implementation In some rare cases, full control of the tool operation implementation is required. In these cases, you will need to implement an item type, a modifier, an ILxTool interface and an ILxToolOperation interface. This example in Python and C++ demonstrates the implementation of a Tool Operation from scratch.

Selection Operations

Selection Operations control which elements on a procedural mesh are modified by a mesh operation or tool operation. At the start of the procedural evaluation, each mesh element is tested against a selection operation to see if it should be modified or not. The selection can use any rules to determine whether an element is selected, such as the element position, index, area, normal…etc.

Similar to the Mesh Operation and Tool Operation, Selection Operations can either be implemented manually or automatically generated.

Selection Operation - Overview Provides an overview of the selection operation interface and item type.

Selection Operation - Automatic implementation This provides an example in C++ of how to create an extremely simple selection operation. This takes an ILxSelectionOperation interface and generates an associated item type and modifier.

Selection Operation - Manual implementation In some rare cases, full control of the selection operation implementation is required. In these cases, you will need to implement an item type, a modifier and an ILxSelectionOperation interface. This example in C++ demonstrates the implementation of a Selection Operation from scratch.