Dynamic Spring Node

The Dynamic Spring node takes the animated transformation from the parent node then applies tension and inertia to make it into a "spring" motion.

When filtered with a Dynamic-Spring node, a peg that performs a simple translation from point A to point B with no ease-in or ease-out will result in an ease-in from point A, an ease-out to point B followed by a realistic overshoot.

Connection

A Dynamic Spring node must be connected to a peg or other transformation node through its rightmost input port. The spring effect will be applied to the transformation sent through this port.

Rigged together with a Two-Points Constraint node and another peg to offset the pivot point of the original, you can automate the follow through action. In this example, the Movement-Peg node animates the Hair element from its top part. The same animation is also sent through a Dynamic-Spring node, then a peg that offsets the pivot point towards the bottom of the hair (via its own Pivot parameters) which results in the top of the hair being pulled by a regular motion while the bottom follows through with realistic ease and overshoot.

The spring effect the Dynamic Spring applies is based on the motion of the entire hierarchy of its parents, not just on the motion of its immediate parent. This may cause undesired effects. For example, if a Dynamic-Spring is connected to a hand drawing, and the forearm the hand is rigged to rotates, the hand will track behind the motion of the arm and appear detached from its wrist. This can be cancelled out by using the middle port of the Dynamic-Spring node. This port is used to cancel out the spring effect of another motion before applying the spring to its element. Hence, in this example, you would circumvent this issue by connecting the forearm peg to the middle port of the dynamic spring.

NOTE The same effect can be achieved using the Ignore Parents and Parent Name properties of the Dynamic Spring node.

At last, the leftmost port of the Dynamic-Spring node can be connected to a Constraint Switch, the Active parameter of which is multiplied against the Active parameter of the Dynamic Spring node to reduce or disable its effect.

Properties

Parameter Description
Active

The percentage of influence the Dynamic Spring node has on the transformation.

If a Transformation Switch node is connected to the Dynamic Spring node, the Active parameters of the Transformation Switch and the Dynamic Spring nodes will be multiplied together.

Match Animation on Active Attribute

When enabled, the Dynamic Spring node will only perform a movement when its own attributes have a keyframe or an interpolation. This option can be useful if, for example, the animation must be done on twos or threes. You can enable this option, then add stop-motion keyframes on the Dynamic Spring node in the Timeline view on every frame where you want it to update the child element's position. The latter will remain static between keyframes.

In the example below, the Match Animation on Active Attribute option has been enabled, and stop-motion keyframes have been added to the Dynamic Spring node to match the timing of the hand's animation. The frames are a light shade of blue where the Dynamic Spring node applies a movement to the child element, and are grey where it does not.

NOTE The Dynamic Spring node will animate on ones after its last keyframe. Hence, to animate on twos, you must add keyframes on the Dynamic Spring node until it completely stops moving the element. The animation of the Dynamic Spring node often stops several frames later than the animation of the parent peg, because it adds an extra overshoot a movement.
Tension (X/Y/Z/Scale/Skew/Rotate)

The tension applied to each parameter of the animation. The higher it is, the more the child element will appear to "snap" to the position of the original movement.

TIP

You can set the Tension for all parameters to the same value by creating a function for the Tension X parameter, then linking every other Tension parameter to that function. If you create a single keyframe in this function, the parameter will remain constant throughout the scene.

Inertia (X/Y/Z/Scale/Skew/Rotate)

The inertia applied to each parameter of the animation. The higher it is, the more the child element will appear to be weighted against the spring effect.

TIP

You can set the Inertia for all parameters to the same value by creating a function for the Inertia X parameter, then linking every other Inertia parameter to that function. If you create a single keyframe in this function, the parameter will remain constant throughout the scene.

Ignore Parents

If this property is set to any value but 0, the Dynamic Spring will go up its own hierarchy up to the value of this property, and consider the node at this level to be the "Ignored parent". The transformations applied by this parent and all its parents will not be taken in account for the spring effect.

NOTE This has the same effect as connecting one of the node's parents to its middle port.
Parent’s Name

If the Ignore Parents property is set to any value but 0, this property will also be used in determining which parent to consider as the "Ignored parent". When looking up the parent hierarchy of the Dynamic Spring node, if it finds any node with a matching name, it will consider it the "Ignored parent", and the transformations applied by this parent and all its parents will not be taken in account for the spring effect.

NOTE When both the Ignore Parents and the Parent's Name parameters are set, the "Ignored parent" will be the first node in the Dynamic Spring node's parent hierarchy that either matches the name of the Parent's Name parameter or the parent level in the Ignore Parents parameter.
TIP This parameter only works if the Ignore Parents parameter is set to any value but 0. If you want the ignored parent to only be matched by its name and not its level in the hierarchy, you can set the Ignore Parents parameter to an improbably high number (ie: 100 or 1000), and set the Parent's Name to the name of the parent to ignore.