List Controller

The List controller combines multiple controllers into a single effect. It is a compound controller with tools for managing how its component controllers are calculated. Controllers are evaluated in top-to-bottom order. In addition, you can specify a Weight setting for each controller in the list to determine its relative influence.

When you assign a List controller to a parameter, the current controller is moved one level below the List controller and becomes the first controller in the list. A second parameter, named Available, is added below the List controller. This is an empty placeholder for the next controller you add to the list.

By default, each listed controller's Weight setting is set to 100.0. This setting can be changed to increase or decrease the effect the controller has on an object.

When you assign a controller using the Animation menu, a list controller is automatically assigned as a default, with the chosen controller placed first in the list. This behavior differs from when you assign a controller in the Motion Panel or Track View, where only the specified controller is assigned.

You can animate List controller weights to achieve the equivalent of a non-linear animation system. Each list controller track can hold different values from frame to frame that you can turn on or off, or blend between by animating the weights.

Wired and Expression-based Animation

The List controller is particularly useful when employing parameter wiring or expressions to animate members of a hierarchy. If an object has only one controller, animating it (or the first controller in a list) via wiring or an expression always uses the parent object’s coordinate system, which, if the object has no parent, is the World coordinate system. However, most such situations call for animation in the object’s Local coordinate system. The latter requires wiring to (or using an Expression controller as) the second controller in a controller list.

Tip: You can use the Freeze Transform command to apply a List controller to multiple objects simultaneously, which is not possible with the standard Assign Controller feature. “Freezing” an object’s transform creates a two-controller list of which the second controller is the default for its transform, so it then becomes easy to wire to the second controller.

Procedures

Example: To use the List controller to combine two controllers:

  1. Create a box, and then turn on . (See Auto Key Animation Mode.)
  2. Create a simple animation containing three position keys.
  3. On the Motion panel Parameters Assign Controller rollout, click the position track to highlight it.
  4. Click (Assign Controller).
  5. Click Position List on the Assign Position Controller dialog. Click OK.
  6. Click the plus sign in the Position track to expand the track.

    A Position XYZ track and a track labeled Available are now visible.

  7. Click the track named Available and then click the Assign Controller button.
  8. Choose Noise Position in the Assign Controller dialog, and then click OK.

    The Noise Controller dialog opens.

  9. Play the animation.
    The box follows the original animated path while vibrating randomly.

    Experiment with different Weight settings for each controller and see the results.

Interface

Note: The Position List, Rotation List, and Transform List rollouts have almost identical interface options. This topic describes the Position List rollout in full, followed by sections that contain only the additional Rotation List and Transform List rollout options.

Motion panel > Parameters > Position List rollout

List Window
Displays all the controllers in a list, with evaluation order from top to bottom. The controller at the top of the list is evaluated first; lower controllers are layered onto the result of higher controllers.
  • Double-click the List name in the table to set active or rename. To add to list, assign a controller to 'Available' sub animatable.
  • Double-click the Weight value next to the controller to change the entry strength. Feeds into the chosen weighting method.

    Exaggerate or minimize the effects of a controller by increasing or decreasing its weight value. Default = 100.0.

Append
Adds a new default controller to the end of the list. (You can set a new default controller by selecting a controller in the Assign Controller list and clicking the Make Default button.)
Assign
Replaces the selected controller with a new controller.
Clicking Assign opens the Assign Controller list. Double-click a controller to replace the selected Position List controller with it.
Note: The replacement controller still uses the original controller's Weigh values.
Set Active

Determines which controller is affected by interactive changes in the viewport. The current active controller is marked with an arrow in the list.

For example, you have an object using a Position List, with Noise Position and Bezier Position in the list. The Bezier Position controller handles the general motion path of the object, while the Noise Position controller adds a random shake to the motion.
  • If Bezier Position is the active controller, you can freely move the object in the scene.
  • If Noise Position is the active controller, you cannot move the object because Noise is not an interactive controller.
Delete

Deletes the selected controller.

Cut

Removes the selected controller and stores it in a temporary clipboard. The clipboard contents are only held within the controller itself until you paste the controller.

Paste

Puts the contents of the clipboard in the position above the selected controller. The clipboard is empty after pasting.

Weight: Normalize Weights
Select the Weight option to activate the Weight setting:

When on, the weight values of all the controllers in the list are averaged. Available only for the Transform List, Position List, and Scale List controllers. Default=off.

Index
Select the Index option to activate the Index settings:
Setting Function
Index Choose which sub controller to use.
By Name Choose sub controller index by name search. Matches incomplete names. Double click in table to rename.
Editable Name Field

Select one of the controllers in the list window of the Controller list, and then enter a descriptive name in this field. This field lets you rename the controller so it's easier to identify.

Motion panel > Parameters > Rotation List rollout

Note: The Rotation List rollout interface is the same as the Position List rollout except for the Pose to Pose Weight settings. For all other settings, refer to the Position List rollout examples listed at the start of this topic.
Pose to Pose

Enables blending among controllers in the list. Available only for the Rotation List controller. Default=off.

When off, the List controller weights each rotation individually and adds up the weighted rotations for the final effect. You animate by stacking layers on top of layers, and then weighting in and out their effect. This is the default behavior.

When on, each pose is blended with the results from the previous controllers in the list. This method is not additive, but is instead true pose-to-pose blending. Adjusting the weight of a controller in the list will blend to and from that pose (controller in list). If the last weight is 100.0, then adjusting the weights of the previous poses in the list won't have any effect because the last pose has full effect. This is a stack-based approach that is best used for nonlinear animation (NLA) effects. You can paste motion clips or even single-frame poses onto new layers and use the weights to blend the poses together.

Motion panel > Parameters > Transform List rollout

Note: The Transform List rollout interface is the same as the Position List rollout except for the List Dependency and Weighting Weight settings. For all other settings, refer to the Position List rollout examples listed at the start of this topic.
List Dependency

Use the List Dependency options to treat the list like a fan or a chain: is it order dependent, is an accurate parent transform needed?

Dependency Behavior
Fan Passes the parent transform to list entries then blends together using the weighting method. This setting is useful when entries are independent and order doesn't matter.
Chain Passes the previous result into the next as the parent transform, and then blends using the weighting method. This setting is useful when list is order dependent or when an accurate parent transform is needed, for example, with constraints
Weighting
Choose how to apply weighting:
Weight type Behavior
Weight Independently Weights list entries independently then combine. Rotation component weighting clamped between [-100%,100%].
Note: Avoid non-uniform scaling
Interpolate Previous Interpolates the previous list entry with the current entry. Rotation is pose-to-pose interpolation like rotation_list (clamped [-100%,100%]). Scale weights the multiplied difference from previous.
Note: Avoid non-uniform scaling

List Controller Context Menu

Right-clicking in the List controller List window opens a context menu with basic functions for managing and assigning controllers.
Assign Controller
Opens the Assign Controller list.
Copy Controller
Copies the selected controller and stores it on the clipboard.
Paste Controller (Copy/Instance/Wire)
Inserts the controller on the clipboard into the List window. Choose between the following actions for pasting:
Copy

Assigns a copy of animation controller in the buffer to the right-clicked field.

Instance

Assigns an instance of the copied animation controller to the right-clicked field.

Wire

Opens a Parameter Wiring dialog with the copied parameter and the paste destination parameter selected. This is equivalent to creating a wire parameter in the viewport between two parameters.

Reset to Default Controller
Restores the selected controller to the controller set as default.
Show in Track View

Opens a Track View - Curve Editor window, titled “Selected,” expanded and positioned to show the selected parameter. This is very useful for fast access to a particular curve or track.

Show in Parameter Wire dialog

Opens a Parameter Wiring Dialog with a focus on the selected parameter.

Show Wire in Parameter Wire Dialog
Opens the with a focus on the selected controller.