Limit Controller

The Limit controller lets you specify upper and lower limits to available controller values, thus restricting the potential value range of the controlled track. For example, in a character rig you could use this to restrict rotation on finger joints so the fingers can't bend backward. Basically, once a track is limited, and the limit is active, you can't set a value for the track beyond the limit.

You can apply a Limit controller to most other controller types; the limited controller (that is, the original controller) then appears as a child of the Limit controller in the Track View hierarchy.

The Limit controller lets you specify upper and lower limits to available controller values, thus restricting the potential value range of the controlled track. For example, in a mechanical assembly you could use this to restrict rotation on a part so that it doesn't rotate beyond its standard range of motion. Basically, once a track is limited, and the limit is active, you can't set a value for the track beyond the limit. You can apply a Limit controller to any other type of controller; the limited controller (that is, the original controller) then appears as a child of the Limit controller in the Track View hierarchy.

Because the Limit controller doesn't change the original controller, you can easily switch back and forth between the original and the limited animation by toggling the limits. But if you collapse the Limit controller, the result is the limited animation, and the original animation is no longer available.

Use of the Limit controller makes it faster to set up and create animation. It eliminates the need for expressions or scripts to do the same thing, this improving the ease with which you can set up automation in hierarchies and rigs, creating effects such as avoiding collision, FK joint limits, etc.

For example, a Technical Director might want to assign limits to float values that animators will adjust to make posing easier, enforce standards, or prevent inconsistencies and mistakes. A TD could use limits for:

Character riggers can use limits to create complex relationships or shortcuts in rigs. Examples include:

Use Cases

Following is a brief list of examples of specific uses for the Limit controller:

Limitations of the Limit Controller

Be aware of the following limitations of Limit controllers:

Procedures

Example: To use the Limit controller:

  1. Start with an animated object, and open the Curve Editor.

    In this example, the teapot position was animated on the X axis between extents of about –45 to 40, and on the Y axis between extents of about –80 and 54.

  2. Assign the Float Limit controller to a track. In this example, we'll assign it to the X Position track.

    This opens the Float Limit Controller dialog, where you can set limits and other values, but you might find it easier to do this interactively, so for now just accept the defaults by closing the dialog.

    The track retains its original name (X Position, in this example), but the icon has changed to indicate that it's now a Limit controller, and is expandable (see illustration in following step).

  3. Expand the track.

    The hierarchy contains a child track, named Limited Controller, and a new, expandable child branch named Limits.

  4. Click the X Position track and then the Limited Controller track to compare them.

    Because the original X-axis movement falls within the default limits, the two tracks are identical.

  5. Scrub the animation until the X-axis position is where you want to set a limit. In this example, the position is about -20, where we'll set a lower limit.
  6. Highlight the X Position track, and then right-click and from the right-click menu choose Limit Controller Set Lower Limit.

    The graph curve is now clipped below the lower limit. When you scrub the animation, the object doesn't move beyond that position.

  7. Again scrub the animation, stop where you want to set the upper limit, right-click the X Position track, and choose Limit Controller Set Upper Limit.

    In this example, we've set it at about 13. The graph curve is now clipped above the upper limit and below the lower limit. The resulting motion is likewise constrained.

  8. Scrub the animation.

    The motion on the X axis is limited at both extremes; wherever the object originally moved beyond the limits, it now behaves as though it's hitting a wall.

  9. Again compare the two tracks.

    The Limit Controller (X Position) track clearly shows the upper and lower clipping, while the Limited Controller track shows the original motion.

    The original motion still exists as the Limited Controller track; you can restore it temporarily by toggling the Limit controller.

  10. Highlight the X Position track, and then right-click and choose Limit Controller Toggle Limit.

    Now, when you scrub the animation, the object moves as before.

  11. Choose Limit Controller Toggle Limit again to restore the limits

    You can copy the Limit controller in two ways: the limits only, or the limits and motion combined. First, you'll copy the limits only.

  12. Highlight the Y Position track and note how its curve differs from that of the X Position track.
  13. Highlight the X Position track, and then right-click and choose Limit Controller Copy Limit Only.
  14. Highlight the Y Position track, and then right-click and choose Limit Controller Paste Limit Only. When the Paste dialog opens, click OK to confirm the paste as a copy.

    Now the Y Position track is also limited, using the same extents as the X Position track, but retaining its original underlying motion. To verify this, compare the Y Position track with its child Limited Controller track.

    Next, you'll copy the entire limited X Position track to the Z Position track, including motion and limits. The Z Position track currently is not animated.

  15. Highlight the X Position track, and then right-click and choose Copy.
  16. Highlight the Z Position track, and then right-click and choose Paste.

    Compare the X and Z Position tracks and both their child Limited Controller tracks. Each corresponding pair of curves is identical. The motion appears as though the object is hitting the inside edge of a box.

    Finally, we'll cover the Smoothing Buffer settings. By default, sharp corners are created wherever a curve is limited, causing abrupt changes in motion. You can smooth off these corners with the Smoothing Buffer parameters, resulting in more natural-looking motion.

  17. Highlight the X Position track, and then right-click it and choose Properties.

    This reopens the Float Limit Controller dialog.

  18. Use the Upper Limit group Smoothing Buffer spinner to increase the Smoothing Buffer value as far as it can go.

    As you increase the value, the corners of the upper limit on the graph become smoother.

    Note that there's an upper limit to this value; in this case, it's 34.973. This limit is determined by the values of the other three settings on the dialog.

  19. Try increasing the Lower Limit group Smoothing Buffer. It's not possible with the upper smoothing value at its maximum.
  20. Decrease the upper smoothing value, and then increase the lower smoothing value.

    Now you get smoothing at both the upper and lower limits.

Interface

The Limit Controller interface comprises the Float Limit Controller dialog and several-right-click menu items.

Float Limit Controller dialog

The Float Limit Controller dialog opens when you first assign the Limit controller, or when you right-click a highlighted Limit-controller track and choose Properties.

Enable

Toggles the Limit controller. When off, the original values of the limited track are in effect. When on, the original values are limited by the Upper Limit and Lower Limit values.

Note: You can enable and disable all Limit controllers in the scene simultaneously with the Toggle Limits command, available from the 3ds Max Animation menu. If some Limit controllers are on and the rest are off, Toggle Limits turns them all on.
Upper Limit Group
Enable
Toggles the upper limit set by the controller. When off, no upper limit is imposed. Default=on.
[Upper Limit value]
The highest value permitted by the Limit controller. Any values above this value in the original controller are clipped; that is, they're set to this value, unless smoothing is in effect. Default=1000.0.

You can animate this value via keyframing and other standard methods, and manipulate this animation in Track View via the Upper Limit track in the controller's Limits branch.

Smoothing Buffer
Specifies a smoothing value, so that clipped values at the beginning and end of a clipped range gradually increase and decrease instead of leveling off abruptly.

The maximum total smoothing is determined by the Upper and Lower Limit values. (Upper Limit Smoothing Buffer value) + (Lower Limit Smoothing Buffer value) cannot exceed this total. For the smoothest possible results at the upper and lower extents of the clipping, set either Smoothing Buffer value to the maximum amount, and then back it off to half that value and set the other Smoothing Buffer to the same amount.

You can animate the Smoothing Buffer value via keyframing and other standard methods, and manipulate this animation in Track View via the Upper Smoothing track in the controller's Limits branch.

Lower Limit Group
Enable
Toggles the lower limit set by the controller. When off, no lower limit is imposed. Default=on.
[Lower Limit value]
The lowest value permitted by the Limit controller. Any values below this value in the original controller are clipped; that is, they're set to this value, unless smoothing is in effect. Default=-1000.0.

You can animate this value via keyframing and other standard methods, and manipulate this animation in Track View via the Lower Limit track in the controller's Limits branch.

Smoothing Buffer
Specifies a smoothing value, so that clipped values at the beginning and end of a clipped range gradually decrease and increase instead of leveling off abruptly.

The maximum total smoothing is determined by the Upper and Lower Limit values. (Upper Limit Smoothing Buffer value) + (Lower Limit Smoothing Buffer value) cannot exceed this total. For the smoothest possible results at the upper and lower extents of the clipping, set either Smoothing Buffer value to the maximum amount, and then back it off to half that value and set the other Smoothing Buffer to the same amount.

You can animate the Smoothing Buffer value via keyframing and other standard methods, and manipulate this animation in Track View via the Lower Smoothing track in the controller's Limits branch.

Limit Controller right-click menu

To access the Limit Controller right-click menu, highlight a Limit Controller track in the Track View hierarchy, and then right-click the track and move the cursor to the Controllers quadrant Limit Controller menu item.

Note: After using Copy Limit Only on a Limit controller track, you can apply a new Limit controller with the same limits to any track by invoking Paste Limit Only.
Toggle Limit
Turns the Limit controller on and off. This is the same as the Enable checkbox on the Float Limit Controller dialog.
Set Upper Limit
Sets a value/key in the Upper Limit track at the current frame equal to the value at the current frame of the limited track. If there is only one key, the value of the limit is constant over time.
Set Lower Limit
Sets a value/key in the Lower Limit track at the current frame equal to the value at the current frame of the limited track. If there is only one key, the value of the limit is constant over time.
Remove Limit
Deletes the Limit controller, restoring the original controller without limits.
Copy Limit Only
Copies only the Limit values and ignores the limited controller of the highlighted track.
Paste Limit Only
Applies only the copied Limit values, or adds a Limit controller with the copied values if one doesn't exist, while retaining the values of the original limited track.

As with pasting copied controller tracks, you can paste the Limit values as a copy or an instance of the copied Limit controller, with the option to replace all instances of the paste target.