Drawing Pipeline

One of Cinema 4D's prime features is its real-time render preview, e.g., real-time deformation editing in the viewports.

To facilitate this feature, the various actions involved must take place in a predefined order.

Suppose you have created a Cube object. You then assign an expression tag that distorts the cube in a particular way. Next, you assign a Bend deformation object to the cube. Which action should take place first? Should the cube be bent first, then distorted, or should the cube be distorted and then bent? Two entirely different outcomes are possible depending on which action takes place first.

Suppose you have animated an object moving from point A to point B, yet at the same time you have given it an Expression tag that tells it to move to point C. The object cannot be in both places at the same time, so who wins? The winner is whichever one is evaluated last of all – if the expression is evaluated first, the animation overwrites the expression and the object comes to rest at point B; if the animation is evaluated first, the expression overwrites it and the object ends up at point C.

Cinema 4D enables you to assign priority levels to expression tags to control exactly when the expression is evaluated.

The order in which actions are processed is what we refer to as the pipeline — actions take place one after the other, as though they are flowing through a pipe. Since the whole process determines what is ultimately drawn on the screen, the entire concept is termed the drawing pipeline. Be aware of the drawing pipeline so that you can predict the outcome of applying several functions simultaneously.

Suppose you have assigned a Look At Camera tag expression to an object. You will be unable to rotate the object freely in the viewport due to Use Expressions being enabled for the drawing pipeline. (The object will continue to point at the object with its Z axis).

Elements

The Use Animations, Use Expressions, Use Generators and Use Deformers functions (see below) turn specific elements of the drawing pipeline on or off. If an element is turned off, its data will no longer be evaluated in the viewports. For example, if you turn off deformers, all objects will appear in their non-deformed state.

Use Animation

Animation refers to any data stored in the Timeline. Although tag expressions can animate an object, expressions are treated as a separate data type.

Evaluation order

Tracks are evaluated from bottom to top in the Timeline, beginning with parent objects. The child objects (Child objects) are then evaluated according to the hierarchy; to display the hierarchy in the Object Manager, open the entire structure for a complex object group by choosing View / Folding in the Object Manager.

Use Expressions

Expressions are evaluated from left to right as they appear in the Object Manager.

This can, for example, be done using tags (e.g., XPresso, Python or Look at Camera).

It gives instructions to the object. An expression could, for example, change the color used by a house material according to the state of a sun object.

Evaluation order

Expressions are evaluated from left to right as they appear in the Object Manager. First the parent object is evaluated, then the order continues along the hierarchy tree; to display this tree, open the entire structure for a complex object group by choosing View / Folding in the Object Manager. The objects are evaluated from top to bottom in the order you see them.

Use Generators

Generators are objects that create geometry with the assistance of other objects. For example, a Subdivision Surface object generates a temporary polygon object. You can convert the temporary object to a real object if required using the Current State To Object command.

Generators include

Evaluation order

Generators are evaluated starting with the child objects, then evaluation moves up the hierarchy tree; to display this tree, open the entire structure for a complex object group by choosing View / Folding in the Object Manager. The objects are evaluated from top to bottom in the order you see them.

Use Deformers

Deformers are the functions listed in the Create | Deformer (see Deformation) and include Explosion, FFD and so on.

A deformer deforms the object(s) that it is applied to. The deformation is applied to a virtual copy of the source object so that the original geometry is preserved and can always be restored. The Polygon Reduction command also performs in this way and is therefore classed as a deformer.

The main difference between expressions and deformers is that expressions are processed before the (virtual) copy is created, whereas deformers are processed after the copy is created.

Use Animation

Use Expressions

Use Generators

Use Deformers

The above can be used to enable or disable specific elements of the drawing pipeline (this can also be done in the Project presets). If an element is disabled its data will not be evaluated in the editor. If, for example, Use Deformers is disabled, all objects will appear undistorted.

Evaluation order

Deformers are evaluated starting with the child objects, then evaluation moves up the hierarchy tree; to display this tree, open the entire structure for a complex object group by choosing View / Folding in the Object Manager. The objects are evaluated from top to bottom in the order you see them.

The following example clarifies why the evaluation order for deformers and generators begins with child objects.

A Loft object creates a temporary polygon object — it is a generator. Suppose the splines that describe the Loft object are themselves deformed by several FFD objects (deformers).

It's only possible for the FFDs (Child objects of the splines) to deform the splines before they are used by the Generator object if the evaluation order is from the bottom of the hierarchy tree to the top.

The display order

We have addressed the order in which elements of the same data type are evaluated, but what is the evaluation order for elements of differing types? Again, the display pipeline works to a strict order:

The drawing pipeline is evaluated each time you perform a new action in Cinema 4D. Although this appears to be an overhead, it makes it possible, for example, to apply a Target tag expression to an object then see it move automatically as you move the target object around in a viewport. You are able to work with objects live.

Should you encounter unexpected results in Cinema 4D, check the drawing pipeline first.

Use IK

Allows you to switch the new IK on and off globally for your scene.

Use Constraints

Allows you to switch all Constraint tags on and off globally for your scene.

Use Joint Symmetry

Allows you to switch all symmetry options defined in the joint objects on and off globally for your scene.

Use Hair

This option lets you globally activate or deactivate hair. This applies to visibility in the editor window and rendering.