A channels represents a subset of an object's properties. This is used to optimize processing performed by the geometry pipeline system by minimizing the amount of processing that must be performed by each modifier.
For example, there is a separate channel for the vertices of the object. If a modifier affects only the vertices, the system has considerably less work to do than if it had to reevaluate the entire state of the object including its face structure, UV coordinates, material assignments, etc. The Bend modifier is an example of a modifier that affects only the vertices (geometry) of an object; other channels do not require evaluation when the Bend modifier modifies vertices.
There are separate object channels for:
GEOM_CHANNEL
- The geometry channel, for vertex modification.TOPO_CHANNEL
- The topology channel, for the face or polygon structures.GEOM_CHANNEL
- The vertices of the object.TEXMAP_CHANNEL
- The texture vertices and procedural mappings.SELECT_CHANNEL
- The sub-object selection channel.SUBSEL_TYPE_CHANNEL
- The current level of selection.DISP_ATTRIB_CHANNEL
- Display attributes channel. The miscellaneous bits controlling the item's display.VERTCOLOR_CHANNEL
- The color per vertex channel.DISP_APPROX_CHANNEL
- Displacement approximation.EXTENSION_CHANNEL
- The channel used by extension channel objects.TM_CHANNEL
- The ObjectState
transformation matrix that flows down the pipeline.Each object defines the meaning of the channels. The three main channels (those that get allocated dynamically) are the GEOM_CHANNEL
, TOPO_CHANNEL
, and the TEXMAP_CHANNEL
.
For example in a TriObject
the GEOM_CHANNEL
to mean the points or vertices of the mesh. The TriObject
also defines the TOPO_CHANNEL
to mean the face or polygon structures. This includes the smoothing groups and materials as well. For a SplineShape
the TOPO_CHANNEL
is undefined. This is because a SplineShape
is essentially just an array of points and has no topology.
Individual caches can be constructed for different channels at different points along the pipeline. So for example, if the texture coordinate portion of the pipeline changes, and the geometric portion of the pipeline is cached, the geometry portion won't need to be reevaluated. This means that modifiers that only depend on geometry may not need to be reevaluated.