The operator stack (also known as the modifier stack or construction history) is fundamental to modeling in Softimage. It is the history of all the operators (such as deformations and topology modifications) that have been applied to an object, and is divided into regions for modeling, animation, and shapes. Operators propagate their effects upwards through the stack, with the output of one operator being the input of the next. At any time you can go back and modify or delete operators in the stack.
You can view the operator stack of an object in an explorer if Operators is active in the Filters menu. The operator stack is under the first subnode of an object in the explorer, typically named Polygon Mesh, NURBS Surface Mesh, NURBS Curve List, Null, and so on.
For example, suppose you get a primitive polygon mesh grid, apply a twist, then randomize the surface. The operator stack shows the operators that have been applied. You can open the property page of any operator and modify values. Any changes you make are passed up through the history and reflected in the final object.
If you apply the same operation to an object several times in a row, the multiple occurrences of the same operator are automatically grouped together under an expandable folder in the stack and the number of occurrences is shown in square brackets.
This simplifies the view in the explorer — for example, you see a single MoveComponent folder node instead of hundreds of MoveComponent nodes. Clicking on the folder name selects all the operators in the folder.
Generators create an object. These include most of the operators available from the Get Primitive menu, as well as those under Create. Examples include Geometry (primitive), CurveCreation, Loft, NURBS to Mesh, and so on.
Topology operators change the geometry, for example, by adding or removing components. These include most of the operators available under Modify. Examples include Curve Shift, Insert Surface Knot, Subdivide Polygon, and so on.
The construction history is divided into four main regions: Modeling, Shape Modeling, Animation, and Secondary Shape Modeling. The purpose of these regions is to keep the construction history clean and well ordered by allowing you to classify operators according to how you intend to use them. For example, when you apply a deformation, you might be building the object's basic geometry (Modeling), or creating a shape key for use with shape animation (Shape Modeling), or creating an animated effect (Animation), or creating a shape key to tweak an enveloped object (Secondary Shape Modeling).
You add operators to specific regions by selecting a construction mode before you perform a modeling operation, as described in . If you unintentionally added an operator in the wrong mode, you can move the operator to the correct region as described in .
As you work, you can display the final result (the result of all operators in all regions) or just the current mode (the result of all operators in the current region and those below it) as described in .
There are two additional construction regions that are used for ICE simulations. They appear automatically when you create a ICE simulation operator. For information that is specific to these regions, see .
You can include animated operators in the Modeling region, if desired. However, the animation will be lost if you freeze the modeling. In addition, if there is shape animation above an animated deformation in the stack, there is a danger that shapes will "pop" when polygons intercollide.
The Shape Modeling region is above the Modeling region. In addition to containing the Cluster Shape Combiner node, this region lets you apply deformations to define shape keys for shape animation. When you store a shape key in Shape Modeling mode, the effect of the operators in this region are stored in the shape key. When you create a shape clip by applying a key, only the operators in this region are removed — this protects animated deformations that may be present in the Animation region, such as envelopes, from being removed.
The Animation region is above the Shape Modeling region. You can use it for animated deformations that you don't want to be removed when you freeze the modeling or apply a shape, for example, deformations such as envelopes, waves, cages, lattices, spines, or even a simple Push with an animated amplitude.
The Secondary Shape Modeling region is at the top. You can use it to create shape keys for things like muscle bulges on top of an enveloped character. Like the Shape Modeling region, the effect of the operators in this region are stored when you store a shape key in Secondary Shape Modeling mode, and the operators in this region are removed when you create a shape clip by applying a key.
Note that all shape keys are applied at the level of the Cluster Shape Combiner at the bottom of the Shape Modeling region, including shapes created in Secondary Shape Modeling mode. This means that Softimage must calculate the inverse deformation of any operators in the Animation region when it creates the shape key. As a result, shapes work well if there is only an envelope operator in the Animation region, but they might not always give the desired results when there are non-envelope deformations in the Animation region. This is unavoidable because not every deformation has an inverse.
In explorers, the tops of each region are indicated by special markers that act as placeholders. The markers are created automatically as soon as you apply the first operator, and can be moved like other operators as described in . However, you cannot change the order of the markers by moving one marker above or below another one. In addition, the Cluster Shape Combiner must always be at the bottom of the Shape Modeling region.
At any time as you work, you can display the final result (the result of all operators in all regions) or the just the current mode (the result of all operators in the current region and those below it) as described in . You can even have different displays in different views so, for example, you can see and move points in one view in Modeling mode while you see the results after enveloping and other deformations in another view.
The Construction Mode - Enable Auto Update option in the Modeling preferences controls whether the construction mode changes automatically when you perform certain operations. When this option is on, the following changes happen automatically:
You can continue to apply deformation and topology operators no matter which region is displayed. You can even have different displays in different views so, for example, you can see and move points in one view in Modeling mode while you see the results after enveloping and other deformations in another view.
When a generator or topology operator exists below other operators in the stack, you must be very careful when modifying or animating its parameters. If the amount of geometry changes, then the indices of components will also change. This can have an adverse affect on other operators higher in the stack if they rely on clusters or component indices.
For example, suppose you get a primitive polygon mesh grid and then create a cluster on it. If you reopen the primitive Geometry property editor and increase the Subdivisions, the cluster shifts because the new points are being added at a point in the stack earlier than where the cluster is defined — this also affects any operator such as MoveComponent that may use the cluster as an input.
Point cluster on a polygon mesh. The indices of some of the points are shown: points 1 and 2 are not part of the cluster, and points 3 and 4 are.
Increasing the subdivisions in the primitive shifts the cluster. The same points are still in the cluster, but their positions have shifted.
Subdividing polygons does not shift the cluster. New points have new indices and are added to the cluster based on their adjacency
If you intend to modify or animate the parameters of a topology operator on an object with shape animation, then you should apply that topology operator after authoring all your shapes. The topology operator will be inserted in the modeling region below the Cluster Shape Combiner, but the shapes will update correctly. The shape animation does not require the topology operator to be re-evaluated, and you can freeze the topology operator without affecting the shapes.
For example, you can take a shape-animated object and apply polygon reduction to create one or more low-resolution versions of the object. In this way, all the shapes and transitions are preserved. However, if you apply polygon reduction first and then create the shape animation, the shapes are not correct when you change the amount of reduction.
Adding or removing components from a cluster that is created below a topology operator in the stack. This includes clusters that are created automatically when you apply deformations or properties to selected components.
In these situations, you should simply disable all topology operators above the cluster creation point before modifying the cluster or property. When you have finished, re-enable the top of the stack and the object updates properly.
When you apply a topology operator, Softimage checks to ensure that no new dependency cycles are created. A dependency cycle is a situation where one or more inputs of an operator depend on its output, possibly through some route involving other operators and clusters. This can lead to corruption and instability.
When Softimage detects a new dependency cycle, it prompts you to remove the new operator. It is strongly recommended that you click Yes to delete the last operator applied. Clicking No and leaving the operator in the scene can lead to eventual problems.
You can change the order of operators in an object's stack by dragging and dropping them in an explorer view. You must always drop the operator onto the operator or marker that is immediately below the position where you want the dragged operator to go.
Be aware that you might not always get the results you expect, particularly if you move topology operators or move other operators across topology operators, because operators that previously affected certain components may now affect different ones. In addition, some deformation operators like MoveComponent or Offset may not give expected results when moved because they store offsets for point positions whose reference frames may be different at another location in the stack.
When you try to drag and drop an operator, Softimage evaluates the implications of the change to make sure it creates no dependency cycles in the data. If it detects a dependency, it will not let you drop the operator in that location. Moving an operator up often works better than moving it down — this is because of hidden cluster creation operators on which some operators depend.
If you drag an operator to a new location and then drag it back to its original location, you might not get the original results. This is due to internal dependencies on clusters. However, if you undo after dragging an operator, you will always get the original results.
One exception to these rules is the Surface Continuity Manager operator (SCM Fixer Op2): you cannot move this operator and it is always at the top of the stack. Another exception is the Cluster Shape Combiner: it is at the bottom of the Shape Modeling region by default and cannot be moved (although you can move other operators immediately below it).
However if you want to move operators using scripts, you can also use the SwapOps, MoveOperatorAfter, and MoveOperatorBefore commands. If these commands fail, they provide more precise error messages than CopyPaste.
If you need to insert new operators in the middle of the stack, you can disable the stack from any operator up to the top. New operators are added to the active portion of the stack until you re-enable the top of the stack.
When you are satisfied with an object, you can freeze all or part of its operator stack. This removes the current history — as a result, the object requires less memory and is quicker to update. However, you can no longer go back and change values.
Sometimes, it is useful to "freeze" certain operators in the stack without freezing earlier operators that are lower in the stack. For example, you might have many MoveComponent operators that are slowing down your scene, but you don't want to lose an animated deformation or a generator (if your object has a modeling relation that you want to keep).
Another situation where this would be useful is when you need to change the behavior of particular deformations. For example, if you apply a Bulge deformation, scale some points, and adjust the Bulge operator's amplitude, you'll see that the scaling is multiplied by the bulge effect. If you want an additive effect, you need to somehow "freeze" the MoveComponent operator created by scaling the points.
In these cases, you can collapse several deformation operator into a single Offset operator. The Offset operator is a single deformation that contains the net effect of the collapsed deformations at the current frame. The Offset operator has no parameters and no property editor.
You cannot collapse across topology operators. If a topology operator is in the middle of a set of deformation operators to be collapsed, two Offset operators are created: one above the topology operator and one below it.
For example, if you apply a Randomize deformation, create a texture projection, apply a Push deformation, then select the deformations and collapse them, two Offset operators are created because the texture projection is reading data from the point in-between. If you freeze the texture projection, you can then collapse the deformations into a single Offset operator.
For example, let's say you have a Lattice deformation, followed by a Twist, and then you collapse the Twist into an Offset operator. If you then modify the lattice, you'll notice that the Offset operator still applies the same relative offset to each point, but depending on how you modify the lattice, it is no longer really a "twist".