Constraint nodes are a series of nodes that can be used to subject parts of a cut-out character rig to certain physical constraints. Specifically, they are designed to add the following capabilities for rigging and animation:
- Create points on drawings which, when moved, will translate, rotate and scale the drawing so that the parts of the drawings those points are attached remain locked to those points.
- Lock the different parts of a rig by their articulations. This makes it so moving a part of a rig that is constrained to its adjacent parts will move those other body parts along it, and rotate the part being moved as needed.
- Automate a "spring" like movement based on a simple translation. Specifically, the Dynamic Spring node is able to apply a delayed movement on a part of a character rig based on the movement of its parents. This can also be wielded to automate follow-through action for parts like hair, ears, whiskers, and such.
- Limit, switch between, turn on and off or interpolate different transformations applied by pegs onto elements.
- Bake transformations into the resting position of elements.
Constraint nodes use the pivot point of pegs connected to them to define their constraint points. Rigging with constraint nodes is more complicated than rigging with a mere hierarchy of pegs and elements, as it requires using the different nodes together, like building blocks, to define precisely the relationship between adjacent parts of a rig. They however allow the animator to pose and animate a character rig by moving the pivot points of its articulations rather than by transforming its individual layers, while the constraint nodes take care of making the appropriate transformations to the adjacent body parts. The resulting procedure is potentially much more natural and streamlined.
Harmony features the following Constraint nodes:
- Two-Point Constraint: Constrains a drawing between the pivot-point of two pegs. This node can be configured to stretch and squash the drawing it transforms automatically, as well as to stop stretching or squashing the drawing past specified limits. This can be especially useful for rigging limbs together and allow the animator to manipulate them by their articulations.
- Three-Point Constraint: Constrains a drawing between the pivot-point of three pegs.
- Multi-Point Constraint: Constrains a drawing between the pivot-point of multiple pegs.
- Dynamic Spring: Applies the movement of the parent peg with inertia and tension factors onto the child element. This can be used to automatically generate life-like ease and overshoot, as well as follow-through animation.
- Transform Limit: Filters the transformations from the parent node by multiplying each type of transformation (ie: translations, rotation, scale, etc.) by a factor going from 0% to 100%, before applying it to the child node.
- Transformation-Gate: This node can be used to dynamically select which one of several transformations from several connected parent nodes is applied to its child. It is also able to make an interpolation between two transformations from two of its parents, and apply the interpolated transformation to its child. It can be used with constraint nodes or any other node that outputs a transformation, such as pegs and quadmaps.
- Constraint Switch: This node can be connected to the leftmost input port of any other constraint node to temper its effect. It does so by applying a ratio ranging from 0% to 100% to the transformations applied by the constraint node it is connected to. If connected to a Transformation-Gate, it can remotely control which input port the Transformation-Gate uses to apply transformations to its child.
- Static Constraint: Can be used to permanently store (or "bake") the transformation applied by its parent or parents. Once transformations are baked into the node, it can be disconnected from the parent, then connected to a child to apply the baked transformation onto it, acting like a transformation template or a resting position.