Edits keyframes, expressions and animation curves.
Choose Animation > Editors > Action Window to open the Action Window. The Action Window has three components:
The Action Lister is always displayed on the left side of the Action Window.
On the right side, you can display either the graph editor or the timeview. Use one of the icons in the Lister title bar to switch between these two views.
The Action Window also has its own set of pull-down menus. See Action Window menus on Action Window menus for information.
There is a prompt line below the menus. It displays error message information and prompts you for input that is required when you select certain menus. When the prompt line is dark pink and the cursor is not in the Action Window, you know that the window is not active. The cursor must be in the Action Window in order for keyboard input to be recognized. The prompt line also contains snap toggles (see Action window snap toggles) that help you constrain movement.
The key toggle is to the right of the prompt line. When toggled on, the time slider bar is snapped to keyframes. When moving keyframes, they are snapped to times or values of other keyframes as follows:
The time toggle is to the right of the key toggle. Use this toggle to constrain the movement when keyframes or the current time slider bar are moved.
When time is toggled on, the time slider bar and the time of keyframes snap to integer values. When toggled off, you can move selected keyframes or the slider time bar to any time.
The graph editor and timeview both have a time slider. This is the vertical bar that crosses the window with a box at the top that contains the current time. The time slider bar slides along a horizontal rail. You can change the current time by clicking anywhere in that rail and dragging left or right. When you drag to a new current time, notice that all animatable objects are updated with their channels evaluated at this new time.
You can also double-click in the time slider box to change the current time. (This is like choosing Animation > Show > View Frame and selecting a new current time at which to view the world.)
When the box turns pink, with the existing time on a grey background, type the new current time. A single click in the time slider box updates the animated world. This is useful if you have changed any keyframe positions, as these changes are not automatically reflected in the animated world.
The Action Lister lists items with their channels and is always displayed on the left hand side of the Action window. The contents of the Lister depends on the settings of the List Mode menu. Objects and channels that have an animation associated with them are displayed in a dark color, while entries without an animation appear in a lighter color.
Parameters that have an expression attached to them also appear in a dark color, with a pair of brackets () next to the parameter name (if Disp Tools > Show curve names is enabled in the Action Window, the expression appears within the brackets).
Channels animated by a single action may also have the name of the action curve displayed next to the parameter name.
Action Lister buttons and icons
To open and close the filter control panel, click the Param Filter button. While the filter control panel is open, you cannot do any other function in Alias.
The filter control panel is for DAG node channels. For other types of objects, you can choose between the local and global settings in the Param Control window (see Animation > Editors > Param Control).
A DAG node has ten animatable parameters, but the most commonly used ones are the X, Y, and Z translate, rotate and scale parameters. The 3X3 grid in the parameter control filter allows you to quickly turn on and off the display of these nine parameters, controlling the amount of data in the Action Lister.
To turn a parameter on or off, click in its box. For example, clicking in the second column of the first row turns off the Y translate parameter; clicking in the box again turns it on. You can toggle all the translate, rotate or scale parameters at once by clicking in the Tra, Rot, or Sca buttons. Similarly, you can toggle all the X, Y, or Z parameters by clicking the X, Y, or Z buttons respectively.
Below the 3 XYZ toggles are five more buttons:
If neither of the fourth and fifth buttons is selected, then all animation parameters for non-DAG node items are listed. If only the local parameter button is selected, then only those animation parameters are listed that correspond to those selected in the item’s local parameter control.
If the global parameter button is selected, then only those animation parameters selected in the global parameter control are used.
See Animation > Editors > Param Control for more details.
When you have finished toggling buttons on and off in the parameter filter panel, click the parameter filter button again to close the panel. The Action Lister updates to display the selected parameters.
For various operations in the Action Lister, you must select elements in the Lister before selecting a function.
If you have selected more than one item in the list, you can use the expand item and expand animation buttons to expand all selected items at once. For example, if you select three out of five animated items, and then click the expand animation button for one of the selected items, all three selected items have their animation parameters added to the list. (For an in-depth explanation of these buttons, see the next section.)
See Animation > Editors > Param Control for a complete list of all animation parameters for all types of animatable items.
You can change the name of most items in the Action Lister by double-clicking the item that you want to change. The field turns light pink, indicating that you can type the new name. Press to clear the field of the current name, then type the new name. If you make a mistake, use the (Windows) or (Mac) key. Any action curve can be renamed, as well as most animatable items, such as DAG nodes and shaders.
If an object has any descendants, this button appears next to it. Select this button to add the object’s descendants to the Lister. The new sub-objects are indented below the first object to show the object’s hierarchy. For example, if a DAG node above a surface is in the Lister, it has an expand item button.
When this button is pressed, all the surface CVs are listed with their names indented below that of the surface DAG node.
When an object is expanded, click the same button to compress its items—that is, to remove its descendants from the Action Lister.
If you hold the key while clicking the expand item button, the item expands to its children, each of the children expand to their children, and this continues until all items below the original item are expanded.
If the item in the Lister is animatable, it has an expand animation button next to its name (between the expand item button and the item type icon). Click this button to display the item’s animation parameters in the Lister. What appears in the Lister depends on the filter control panel settings.
When an item is expanded to show its animation parameters, press the expand animation button again to compress the items and remove the display of the item’s animation parameters from the Lister.
If the animated object is an IK handle, its parameter names may come with special notes. For example, if the object is a single-chain IK handle, its X Rot may be shown as X Rot[PoleX], Y Rot as Y Rot[Plane], and Z Rot as Z Rot[PoleY]. When you change the rotation order for the single-chain handle, the notes are updated accordingly.
If an animation parameter is animated, it has a channel. If the channel has more than one action (for instance, it has at least one timing curve applied to its base action), then it has an expand channel button next to its name. Press this button to display the channel’s action curves in the Lister.
The new actions are indented with respect to the channel. Actions are listed in the order in which they are applied, with the base action first.
When a channel is expanded, press its expand channel button to compress— that is, to remove the display of the actions of the channel from the Action Lister.
Use the graph editor to create and modify actions. There are also a few operations that you can apply to channels.
The curves in the graph editor reflect what is in the Action Lister. For example, if an item has three parameters that are animated each by a single curve channel, then three actions are displayed in the graph editor.
If a channel has two or more actions on it (for example, a base action and timing curves, which were created using Set motion), the channel appears in the Lister with an expand channel button. When you click this button, the channel’s animation curves are added to the Lister and to the graph editor. If the channel is not expanded, only the resulting animation curve on the channel is displayed in the graph editor.
The resulting curve (result curve) is the final evaluation of the channel with all of its actions. Result curves are always displayed as dashed lines because they are not editable. You can toggle their display on or off by choosing Tgl result curves from the Disp Tools menu in the Action Window.
You can pick channels and animation curves in the graph editor by selecting the name of the animation parameter in the Action Lister.
View the timeview with the following icon:
The timeview is an alternate way of viewing actions and channels. You see only the duration of actions without the animation curves that appear in the graph editor. The timeview is useful if you are satisfied with your animation’s motion but want to adjust its timing. You can edit individual actions, single channels of an animatable item, or channels for the whole animatable item. You can also use this view to coordinate the movement of objects in your scene.
Double-clicking in the timeview next to an animation parameter enables you to enter an expression.
You can also choose Edit > Edit Expression to use an external editor to edit or create an expression.
The List Mode menu lets you specify which objects are displayed in the Action Lister.
For items that appear in the SBD window, only the root level DAG nodes are listed. The hierarchical items below the DAG node can then be expanded using the expand item button.
Other types of items that are listed in this mode include the universe and all animatable perspective windows.
The Edit menu lets you do operations on items selected in the Action Lister.
To remove the animation from a parameter, for example, select the parameter in the Action Lister and select Cut to delete its channel. Only the animation is deleted; the parameter itself still remains in the Lister, but is now shown in a dim color to indicate its lack of animation.
You can also delete keyframes or individual actions using Cut. If you cut something by accident, use Undo to restore it.
If you cut only one channel or action curve, the animation is placed on the clipboard (replacing anything that may have been there already) so you can paste it later onto an unanimated parameter (see Paste and Paste Instance below).
Copies one channel or action curve to the clipboard (replacing anything that may have been there already) so that you can paste it later (see Pasteand Paste Instance).
If a tangent is picked, both the tangent angle and tangent type are copied.
Inserts a curve segment from the clipboard into an existing curve.
Paste Segment With Offset offsets the values of the pasted segment that is, raises or lowers the segment) so that its first keyframe sits precisely on the selected curve at the specified time. Paste Segment (without offset) leave all of the values in the pasted segment untouched.
To use Paste segment or Paste segment with Offset
Alternately, you can use the keyboard to specify where the curve segment should be pasted. When you choose PasteSegment or Paste Segment With Offset, the system prompts:
Click or drag on curve to define insert location (time, [repeat], [gap]):
Type the time at which the first keyframe of the segment should be placed. Optionally, type the number of copies of the segment to paste (this is the Repeat option). The repeat is 1 by default. If you enter a repeat of more than 1, you can optionally enter a gap in time to be inserted between the segments. The default is 0.
Deletes selected items without placing them on the clipboard. (If you clear something by accident, use Undo to restore it.)
To remove animation from a parameter, for example, select the parameter in the Action Lister, then choose Clear to delete the channel.
Only the animation is deleted. The parameter itself still remains in the Lister, but is now shown in a dim color to reflect its lack of an animation.
Like a paste operation, except that the newly animated parameter reuses the animation curve on the clipboard instead of making a copy.
The newly animated parameter and the original channel share the same action curve(s). Now if you edit the action, the animation for both channels is affected.
Shows all the channels that are using a particular action curve.
Sometimes an action curve can be used by more than one channel. For example, if you create motion path animation (Choosing Animation > Tools > Set Motion) or a new time warp (Choosing Animation > Create > New Time Warp ), then the animation curve(s) created are shared by more than one channel. To share an existing action with more than one channel, use Paste Instance.
To see all the channels that are using a particular action curve, select the action and choose Show Instance from the Edit menu.
A utility lister appears listing the name of the action. Below the action is listed, the names of the objects and their animation parameter which use the action.
You must close the utility lister by clicking OK before proceeding with any other operation in Alias.
Recreates what was undone by Undo.
You can use Redo to reverse the last operation from Undo. You can redo as many operations as you undid with Undo.
Delete operations outside the Action Window (for example, Delete > Delete Active or Delete > Animation > Delete Channels) delete the undo history in the Action Window.
Viewing and editing keyframe stats
Choose Keyframe Edit to open the Keyframe stats window, which lets you view and edit frame, value and tangent information for one or more keyframes, one keyframe at a time.
Once the Keyframe Stats window is opened, pick a keyframe in the Action window. Each time you pick a keyframe, the Keyframe Stats window shows the information for the picked keyframe.
The parameters in the Keyframe Stats window are described below.
The angles of the in-tangents and out-tangents on the keyframe. The values must be between -90.0 and 90.0. If you change the value of either of these tangents, the tangent type for that tangent becomes fixed. This ensures that the new tangent value that you assigned to the keyframe retains that value.
Next to the tangent values is a tangent lock button. Clicking this button locks in the current angle between the in-tangents and out-tangents, so that if you modify one of them, the other is modified by a compensating amount.
For example, if the in-tangent is 10 degrees and the out-tangent is 30 degrees, then the angle between them is (90 - 30) + (90 - 10) = 140 degrees. It you turn on tangent lock and change the out-tangent value to -20 degrees (a decrease of 30), the in-tangent value changes to 60 degrees (an increase of 30), thereby maintaining the 140 degree angle between them.
The tangent lock button works only for changes in the Keyframe Stats window. To maintain a tangent relationship when changing tangents using Transform > Move, use the .
For more information on tangent types, see the description of the Tangent types.
Shows the current type of the in- and out-tangents. The tangent type controls how tangents are recomputed when a keyframe is moved or when keyframes are added or deleted next to the keyframe. Click down on the currently displayed tangent type to use a menu to select a different tangent type. (The current tangent type is highlighted in the menu.)
Notes on selecting multiple keyframes
When you have the keyframe stats window open, you can also select multiple keyframes. If any of the position or tangent values are the same for all picked keyframes, the corresponding value is shown in black.
If the values are not all the same, the value in the keyframe stats window is gray. If you select this value and enter a new value, and then all picked keyframes assume this same value.
For example, if you pick two keyframes, one with a value of 5 and the other has a value of 10, then the keyframe stats show the value of one of the keyframes in gray, indicating that not all picked keyframes have the same value. If you select this grayed value and type in 7, now both keyframes are given a value of 7 (and it is displayed in black).
If multiple keyframes are picked and they all have the same tangent type, then this tangent type is displayed. If not all keyframes have the same tangent type, then the Tan’ Type parameter says Unknown. You can select an Unknown tangent type and select another tangent type; then all keyframes assume this same tangent type.
(Tangent angles and tangent types can also be copied from one keyframe to another using Edit > Copy and Edit > Paste.)
Use the CurveTools menu to create and modify action curves.
Adds keyframes to an existing action, or creates a new action for a parameter that is not currently animated.
The tangent types of the new keyframe depend on the current tangent type mode. See Tangent types for more details.
Adds keyframes to an existing action.
The keyframe is inserted using the same value as the action originally had at that frame. The tangents of the new keyframe are adjusted to preserve the original shape of the action.
Compresses all actions applied to a channel into one parameter curve that maintains the same shape as the original animation of the channel.
This function is very useful if a channel is animated with several time warps, and you want to edit the channel as a whole, instead of as individual actions.
The channels with the motion path and time warps appear as dashed lines because they can’t be edited. Compressing these non-editable channels makes them editable, since the channel then uses only a single parameter curve action.
(If you do not specify start, end, or by, defaults are used. The default start and end values are the range of the channel being compressed. The default by value is 1.)
For example, if you enter 0, 10, and 2, then keyframes are created at times 0, 2, 4, 6, 8, and 10.
Using a large by value is faster, but may give an inaccurate curve, especially if the animation has many sudden and dramatic changes in value. If this occurs, choose Edit > Undo to restore the original curves and them try again with a smaller by value.
Simplifies a curve by reducing the number of keyframes in it while still preserving the shape of the curve within a tolerance.
When you choose Simplify, the system prompts:
Select actions to simplify. Enter range & tolerance ([start], [end], [by], [0.050]):
If you simply press (Windows) or (Mac), the selected actions are simplified with default tolerances and ranges.
Type the start and end at the keyboard to specify the frame range in which to simplify the actions.
Use the by option to simplify the frame tolerance. The simplified action is equivalent to the original action (within a value tolerance) at this frame tolerance.
The fourth number to enter is the value tolerance. This specifies by how much each frame at the frame tolerance is allowed to differ in the simplified action from the original action.
When you choose Simplify, you can either press (Windows) or (Mac), type just one number or four numbers. If you type one number, this number is used as the value tolerance. If you type four numbers, these numbers are interpreted to be the start, end, by, and value tolerance respectively.
Toggles whether a keyframe is locked or unlocked.
If a keyframe is locked, it cannot change location or value when you Transform > Move. This is useful if you want to ensure that a specific keyframe happens at a specific time, and you want to avoid accidentally moving it. Locked keyframes are displayed as solid squares in both the graph editor and the timeview.
Use the Pick menu to pick items in the action editor. Pick for actions is like the standard AliasPick, but it works on actions, channels, and keyframes. You can pick an item by clicking on it.
To pick multiple items, click and drag. In the Action Lister, this picks several adjacent items. In the graph and time views, it drags out a pick box; everything inside the pick box is made active when you release the mouse button.
You can also pick curves by typing the curve name in the prompt line. You can use wildcard characters (such as *,?) to select curves with similar names. For example,
picks all the sphere’s Translate animation curves. Choose DispTools > Show curve names to display the names of the curves.
Picks whatever is contained inside the pick box. It picks channels or any component of an action: keyframes, tangents and actions.
Since keyframes, tangents, and actions cannot be picked at the same time, a pick priority defines what is picked if all three of these action components are inside the pick box: keyframes, then tangents, then the action itself.
Picks the keyframes of an action.
You can pick keyframes in a certain time range by typing the first and last time of the range at the keyboard. Be sure that your cursor is in the Action Window so that keyboard input goes to the Action Window. Keyframe display can be toggled on or off using DispTools > Show Keyframes.
If the Pick type is set to Keyframes, selecting an action (or a single-action channel) in the lister toggles the pick state of every keyframe on that action, meaning that unpicked keyframes become picked and vice-versa.
Similarly, if the Pick type is set to Any Tangents, In Tangents, or Out Tangents, then the pick states of all the tangents on the curve, or just the in- or out-tangents, are toggled.
Using keyboard input to move between keyframes and tangents
By holding down the (Windows) or (Mac) key and using the arrow keys, you can “pick-walk” through keyframes and tangents.
Pick-walking lets you pick a keyframe or tangent and then, with the use of the keyboard arrows, go on to pick another while unpicking its predecessor.
The Transform menu does operations on items selected in the Action Lister, timeview, or graph editor.
When moving keyframes and curves:
Normally, when you are moving tangents, horizontal motion of the mouse is ignored and the tangents move proportionally to the vertical motion of the mouse. So, if the mouse moves one quarter of the way up the Action Window, all the selected tangents move up by 45 degrees, which is one quarter of their total range of movement.
If you hold down the (Windows) or (Mac) key while moving tangents, instead of proportional movement you get direct movement, where the tangents point directly at the current position of the selection arrow:
If a tangent is on the opposite side of its keyframe from the selection arrow, it cannot point directly at the pointer and instead is pinned to point straight up if the pointer is higher than the keyframe or straight down if the pointer is lower than the keyframe. For this reason it is typically not very useful to use this form of tangent movement when both in-tangents and out-tangents are selected at the same keyframe.
Using keyboard input to move objects
You can use keyboard input to specify where to move curves or keyframes, and to give tangent values. If you precede your keyboard input with A, the values entered are interpreted as the absolute position to move to. If you precede your keyboard input with R, the values entered are interpreted relative to their current values.
For example, typing A 10 5 moves a keyframe to the time 10, and value 5. If you then type R 2 1, the keyframe is placed at time 12 and value 6. You can enter either positive or negative numbers.
If a curve is picked, Move moves the whole curve with respect to the first keyframe on the curve.
If a tangent is picked, only one value needs to be entered at the keyboard. This value is an angle between -90 and 90 degrees. An angle of 0 degrees means the tangent is horizontal. You cannot assign a value of exactly -90 or 90 to a tangent because this would produce a vertical line in the curve; however, you can assign tangent values close to -90 or 90.
Enter (start, end, new start, [new end]):
The specified range of animation between start and end is scaled to the new range. If there was no keyframe at either start or end, a keyframe is inserted before the range is scaled to define the segment to be scaled.
Enter y-axis pivot value, scale factor:
The new keyframe value is computed by subtracting the pivot value from the old keyframe value to determine the current scale, multiplying this scale by the scale factor, and then adding this resulting value to the pivot value to obtain the new keyframe value.
For example, if the keyframe value is currently 80, and you specify a pivot value of 70 and a scale factor of 2, then the current scale is 80 - 70 = 10. This value is multiplied by the scale factor to obtain the new scale value of 20. Thus the resulting keyframe value is the pivot value 70 plus the new scale 20 to equal 90.
As you move the mouse horizontally further away from where you clicked, the keyframes are randomized more in time. As you move the mouse vertically further away from where you clicked, the keyframes are randomized more in value.
Use the to randomize the keyframes in time only. Use the to randomize the keyframes in value only.
Use the Views menu to change the view in the graph editor and timeview.
Zooms in or out of a particular view.
Click in the graph editor or timeview at the point you want as the center of your new view. Drag the dolly box out, then release the mouse.
Tracks the view horizontally and vertically.
Click in the graph editor or timeview, and drag your mouse around to change the view:
If you hold down the and (Windows) or and (Mac) keys while pressing the , you can do direct tracking, where the view follows the motion of the mouse. This is the same as doing a normal, unconstrained track, except that direct tracking is always available: you do not need to select the Track function from the Views menu to use it.
Use the DispTools menu to change the display of various items in the graph editor. All of its choices are toggles.
Puts a curve in a templated mode. The curve appears in gray, and has no keyframes or tangents on it. (This behavior is like the ObjectDisplay > Template function in the main Alias window.)
To template a curve, pick the curve (either in the Action Lister or using Pick > curve), and choose DispTools > Tgl template. If the curve was templated, pick the curve using Pick > Template and choose DispTools > Tgl template to untemplate it. A templated curve cannot be picked in the graph editor, although it may still be picked in the Action Lister.
Turns the display of the curve beyond the action’s defined time range on or off. See Defining actions (Action Tools) for the various out-of-range types.
Turns the display of channels on or off.
If a channel is animated by a single action, the action is still displayed even when you hide the result curves.
If a channel is animated by more than one action, toggling result curves off still shows the channel’s individual actions, but hides the display of the resulting channel animation.
Use the ActionTools menu to change the behavior of curves outside their defined range. You can also add comments to your actions.
Actions are defined over a certain time range:
You can display how an action is evaluated out of range by choosing DispTools > Tgl Infinity.
The ActionTools menu lets you specify how the curve should be evaluated when it is out of range of the first and last defined times. The Before types specify how the curve should be evaluated before the first defined time; the After types specify how the curve should be evaluated after the last defined time.
Constant Before means that the curve retains the same value as the value of the first keyframe (or at time 0 for motion path actions) for all time values before this first keyframe.
Constant After means the value of the last keyframe (or at time 100 for motion path actions) is used for all time values after the last keyframes. This is the default out-of-range type for parameter curve actions.
Cycle Before means that the curve repeats itself before the first keyframe. This is like the curve being copied and pasted repeatedly before the first keyframe.
Cycle After means that the curve repeats itself after the last keyframe. This is like the curve being copied and pasted repeatedly after the last keyframe.
Cycle Before with offset is the same as Cycle Before, except it continues backwards vertically from where the previous cycle left off. (It does not start from the same vertical position each time.)
Cycle After with offset is the same as Cycle After, except it continues vertically from where the previous cycle left off.
Oscillate Before and Oscillate After means that the curve repeats itself backwards, then forwards, then backwards, and so on. This is as if a copy of the curve was taken, and first glued to the curve in the reverse (or mirror) direction, then in the forward direction, then in the mirror direction, and so on.
Linear Before means that the curve continues in a straight line along the in-tangent of the first keyframe.
Linear After means that the curve continues in a straight line along the out-tangent of the last keyframe. Since motion path actions do not have editable tangents, linear means that the curve continues along the actual tangent of the curve.
Lets you add comments to your actions to remind you of information about that action. This is like Object Edit > Edit Comment, which lets you add comments to objects in the modeling world.
Pick one curve in the graph editor, and choose Edit Comment. A shell window running an editor is opened, and you can add new comments or edit previous ones for the action. When you quit the editor, the window closes and you can continue working.
The TangentType menu is both a mode and a function, and it operates on currently picked keyframes.
Tangents control how a curve behaves as it leaves one keyframe and enters the next. The display of tangents can be toggled on or off using DispTools > Tgl Tangents.
Keyframe tangents have tangent types. All of the tangent types except for Fixed cause the tangents to be recomputed whenever the keyframe is moved, so that the characteristics of the tangent type are maintained. For example, if a keyframe’s in-tangent is Linear seg in, then the in-tangent of the keyframe always points to the previous keyframe. If the keyframe is moved, the in-tangent is updated to continue to point at the previous keyframe. If a tangent type is Fixed, this means the tangent does not change angles when you move the keyframe. You must explicitly move a Fixed tangent to change its angle.
For finer control of a keyframe’s tangent, pick the tangents using Pick > Any Tangents, Pick > In Tangents or Pick > Out Tangents, and then choose Transform > Move to adjust the tangent. This causes the modified tangent’s type to become Fixed.
A smooth transition is made between the keyframe before and the keyframe after the selected keyframe. Its tangents are co-linear (that is, they are both at the same angle). This ensures that there is no jerkiness at the keyframe.
The angle of the tangents is a weighted average of the slopes between the two keyframes on either side of the new keyframe. Setting a keyframe to Smooth sets the tangent type of the in- and out-tangent of the keyframe to smooth.
The action is in a straight line between the previous keyframe and the selected keyframe. The out-tangent of the previous keyframe and the in-tangent of the selected keyframe lie along this straight line.
Setting the tangent type of a keyframe to Linear seg in changes the in-tangent type of the picked keyframe to linear and the out-tangent type of the previous keyframe to linear.
The action is in a straight line between the selected keyframe and its next keyframe. The out-tangent of the selected keyframe and the in-tangent of its next keyframe lie along this straight line.
Setting the tangent type of a keyframe to Linear seg out changes the out-tangent type of the picked keyframe to linear and the in-tangent type of the next keyframe to linear.
The out-tangent of the new keyframe is flat. The curve segment is also flat (horizontal) until the next keyframe, at which point it jumps up or down to the value of that keyframe.
The step tangent type is useful for animating Boolean (ON/OFF) values such as DAG node visibility or the presence/absence of a light’s shadows. A value larger than 0.5 means ON, and less than 0.5 means OFF. Setting the tangent type of a keyframe to Step changes the out-tangent type of the keyframe to step.
The tangents of the selected keyframes become fixed at their current angles. A tangent type that is Fixed means the value of the angles does not change unless you explicitly modify the tangent. This can be useful if you set a tangent to a certain angle which you would like to maintain even if the keyframe or the segments around the keyframe are modified.
To display an Action window marking menu
To delete an individual tool, click and drag the tool with the into the trash can. To delete a folder, click the folder tab with the and drag it into the trash can.
Mouse buttons can be assigned to folders. For example, you might want to assign the to the pick tools folder and the to the Transform tools folder. The mouse icon in the folder tab corner indicates which mouse button the items are assigned to.
Select this option for updates to occur during a transformation; de-select it for updates to occur just after the transformation.
Warning! The updates are done by viewframe operations, which may make performance very slow. You can always turn this off and view frames by clicking on the frame indicator in the Action Window.
Lets you toggle between displaying expressions normally and displaying them in short form.
For example, sphere:x_Translate is shortened to sphere:xt, and you can type any of the following:
sphere: xt sphere: t sphere: T sphere: t_ sphere: x_t sphere:x_Translate
Short expressions are not case sensitive. Any combination of characters and the underscore, “_” is recognized.
Using expressions in the action window
This section describes the syntax or rules to be followed when entering an expression and discusses the valid mathematical operations.
Expressions enable you to establish dynamic links between animatable parameters, so that a change in one parameter (as in the rotation of a joint) can update another parameter (as in the deformation of a surface) automatically. The expression system provides simple mathematical operations (+ - * /), provides most of the functions supported by SDL, and allows references to DAG nodes and CV parameters as well as to the current frame value. Any animatable parameter can have an expression defined to calculate its value.
Expressions are created using the Timeview window in the Action Window. Any parameter that is not currently animated can have an expression attached to it. (Choose Edit > Clear to remove existing animation from an animation parameter.) To type an expression, double-click in the list area next to a parameter. Or you can choose the Action Window’s Edit > Edit Expression function to edit or create an expression using an external text editor.
You can define expressions to establish a relationship between one parameter and another. For example, the X translation of one object can be related to the X translation of another object.
Expressions can refer only to DAG nodes (and their CVs). References to shader and light parameters, for example, are not supported.
Parameter references are defined as follows:
ObjectName[.CVreference]:Parameter
Within a DAG hierarchy you can refer to DAG nodes “higher” up in the hierarchy using a relative reference. A single period (.) is used to specify the current DAG node. Two periods (..) represent the DAG node above the current one. A backslash (\) at the start of the reference represents the highest possible DAG node above the current one. A backslash can also be used to separate upward references.
For example, assume that you have the following hierarchy defined (in descending order):
BaseLevel:SubLevel1:SubLevel2:object For example: Fluffy:Shoulder:Paw:mySphere
Then relative references to the object mySphere can be created as follows:
. |
mySphere |
.. |
Paw |
..\.. |
Shoulder |
..\..\.. |
Fluffy |
\ |
Fluffy |
Relative references are re-calculated if intervening levels are added or removed. So if Paw is removed, ".." refers to Shoulder.
Relative reference is useful because an expression copied from one object to another refers to the new object’s DAG hierarchy, whereas an explicit, non-relative reference would continue to refer to the old object’s hierarchy.
The parameter of any CV within a surface may be referenced as shown in this table:
Object | Reference (where # represents a number) | Example |
---|---|---|
surface | u#v# | plane.u3v0 |
curve | u# | curve.u1 |
curve within a face | c#u# | curve#3.c2u3 |
For DAG node references, you can use these parameters:
X_Translate or tx | Local X Translate of the DAG node |
Y_Translate or ty | Local Y Translate of the DAG node |
Z_Translate or tz | Local Z Translate of the DAG node |
X_Rotate or rx | Local X Rotation of the DAG node, in degrees |
Y_Rotate or ry | Local Y Rotation of the DAG node, in degrees |
Z_Rotate or rz | Local Z Rotation of the DAG node, in degrees |
X_Scale or sx | Local X Scale factor of the DAG node |
Y_Scale or sy | Local Y Scale factor of the DAG node |
Z_Scale or sz | Local Z Scale factor of the DAG node |
Visibility | A Boolean specifying whether or not this DAG is visible |
For CV references, you can use these parameters:
X_Position or px | Local X Position of the CV |
Y_Position or py | Local Y Position of the CV |
Z_Position or zp | Local Z Position of the CV |
Weight | The weighting factor for this CV |
Short expression parameter names such as “tx”, “ty”, “sx” and “rX” are expanded to their full names. You can also display names in the form “TX”.
sphere:X_Translate | X Translate of the object sphere |
sphere.u2v3:X_Position | X position of the u2v3 CV within the object sphere |
..\..:X_Translate | X Translate of the DAG node two levels “up” |
In addition to the normal mathematical operators (+, -, *, /), you can use any SDL functions which evaluate to a SCALAR.
The following list provides a brief description of each function, along with the expected parameters.
acos(radians) | acosd(degrees) |
asin(radians) | asind(degrees) |
atan(radians) | atand(degrees) |
atan2(value, value) | atan2d(value, value) |
cos(radians) | cosd(degrees) |
cosh(value) | |
sin(radians) | sind(degrees) |
sinh(value) | |
tan(radians) | tand(degrees) |
tanh(value) |
besselj0(value) | besselj1(value) |
besseljn(order,value) | besselyn(order, value) |
ceil (value)
constrain (start, end, by, value)
erf (value) erfc (value)
fabs (value)
floor (value)
fmod (value, divisor)
gamma (value)
gauss ()
log10 (value)
pow (value, power)
rand ()
srand (seed)
sign (value)
sqrt (value)
animate (action curve, expression)
The value of the animate function is the value of the curve action curve at the frame given by the expression. For example, animate (curve, frame - 2) returns the value of the animation curve at 2 frames less than the current frame.
As a convenience, you can specify a parameter or channel reference when entering an animate function into an expression by enclosing the reference within braces, as in animate ({sphere:X_Translate}, frame). However, note that this is immediately translated into a reference to the action curve currently animating that parameter, so it is still not a true channel reference.
The animate function provides two very useful capabilities:
These can be used wherever a value is allowed. A logical operation which is TRUE evaluates to 1.0, and a logical operation which is FALSE evaluates to 0.0.
An example of a logical operation would be to set the position of an object based upon a decision. The algorithm would be as follows:
This algorithm would be entered as:
((fabs (cube:X_Translate - cone:X_Translate) < 3) * (pyramid.X_Translate - 4)) + ((fabs (cube:X_Translate - cone:X_Translate) >= 3) * (cube:X_Translate - 5))
The following are a few different examples of how expressions can be used. In the examples, expressions are written out in the form:
parameter = some expression
For example, sphere:X_Translate = sin (frame), means that the expression sin (frame) is to be applied to the X_Translate channel of the object sphere.
Also, all of the examples are built in a Y-Up orientation.
To see the expressions update while you move the mouse, turn Expression updates during Transform ON. (See Preferences > Performance Options.)
You can get some realistic finger motion by creating a simple expression relationship between each finger joint. A finger with five joints (named joint, joint#2, joint#3, joint#4 and joint#5, with joint#5 being the finger tip), behaves nicely if the rotation of each joint is set to the rotation of the finger tip. Apply the following expressions to the finger:
joint:Z_Rotate |
= |
joint#5:Z_Rotate / 2 |
joint#2:Z_Rotate |
= |
joint#5:Z_Rotate |
joint#3:Z_Rotate |
= |
joint#5:Z_Rotate |
joint#4:Z_Rotate |
= |
joint#5:Z_Rotate |
This establishes the rotational relationship between the finger joints. Now as the finger tip (joint#5) is rotated about the Z-axis (using Transform > Rotate), the other joints rotate an equal amount, giving a very realistic motion to the finger.
Expressions may be copied and pasted within the Action Window just like any other animation channel (See Edit > Copy and Edit > Paste in the Action Window).
Expressions may also be used to create mechanical devices; for example, gears. A mechanical relationship with four gear objects (gear, smallGear, link#1 and link#2), with gear as the control object, could be established with the following expressions:
smallGear:Y_Rotate |
= |
gear:Y_Rotate * -2 |
link#1:Y_Rotate |
= |
- gear:Y_Rotate |
link#2:Y_Rotate |
= |
- link#1:Y_Rotate |
Notice that the smallGear is half the size of gear, and should then rotate twice as fast as gear. The negative sign in front of each reference causes the gears to rotate in opposite directions.
Establishing relationships between various objects is a very powerful use of expressions. You can also create objects that exist only to control (or influence) the motion of other objects.
The following expressions give an example of a scale and object relationship:
rightTape:X_Scale |
= |
(control:X_Translate / 2) + 4 |
rightTape:Z_Scale |
= |
.:X_Scale |
leftTape:X_Scale |
= |
18.5 - rightTape:X_Scale |
leftTape:Z_Scale |
= |
.:X_Scale |
The next expressions establish a link between the size of the object and the amount of rotation for the object:
rightReel:Z_Rotate |
= |
log10 (1 + ((rightTape:X_Scale - 4) / 1.5)) * 36000 |
leftReel:Z_Rotate |
= |
log10 (1 + leftTape:X_Scale - 4) / 1.5)) * 3600 |
To animate an object, set keyframes on the position of the control object itself. (Choose Animation > Show > Playback to see a sample animation).
While expressions may refer only to DAG node parameters, they can also be applied to any parameter that can be animated. This particular example shows how a small puff of dust (using particles) can be produced when an object bounces on the ground. In general, we will adjust the rate of particle emission for a small stand-in object so that particles are emitted when the object touches the ground. The stand-in object will be at the point of contact between the object and the ground.
The expression which is applied to the dust shader (albeit very simplistic) is:
dust:psys_particles_per_sec |
= |
(ballObject:Y_Translate < 0.25) * 500 |
Notice how this expression uses the logical operation to compare the position of the ballObject, and then set the particle emission accordingly. Expressions may be applied to any shader parameter, particle emission was chosen because it produces an immediately visible result.
You can use the animate function to evaluate an animation curve at any frame. You can make objects follow each other by having them share the evaluation of the same animation curve.
For this example there are three spheres, which follow each other around. The lead sphere (sphere) is animated using keyframe animation. It has two animation curves (yTrans for the Y_Translate channel and yRotate for the Y_Rotate channel). The other two spheres follow 5 and 10 frames behind the lead sphere.
The expressions that define this animation are:
sphere#2:Y_Translate |
= |
animate (yTrans, frame - 5) |
sphere#2:Y_Rotate |
= |
animate (yRotate, frame - 5) |
sphere#3:Y_Translate |
= |
animate (yTrans, frame - 10) |
sphere#3:Y_Rotate |
= |
animate (yRotate, frame - 10) |
sphere#3:X_Translate |
= |
sind (frame * 3.6) - 6 |
The last expression is added just to make the third sphere behave a little differently.
Any scalar value can be used for the second parameter to animate, including another animate function. The second parameter is simply an expression whose value is used as the frame to evaluate the action curve. Evaluation of the action curve outside its defined range follows the settings for the extrapolation type for the curve (see ActionTools in the Action Window).
Modulating an animation over time
You can also use the animate function to modulate the evaluation of an animation curve over time. This example shows a swinging pendulum which slows down over time. The basic pendulum swinging was done as a keyframe animation from frames 0 to 60. The expression on the pendulum then uses the animate function to evaluate the curve at the current frame, and then modulates the results based upon the overall length of the sequence.
The expressions that form the animation include:
pendulum:Z_Rotate |
= |
animate (animNode.Z_Rotate, fmod (frame, 60)) * ((animNode:X_Rotate - frame) / animNode:X_Rotate) |
animNode:X_Rotate |
= |
500 |
The second parameter to the animate function is set to range between 0 and 60 (the original range of the keyframes). A similar result could have been achieved by just using animate(animNode.Z_Rotate, frame) and then changing the extrapolation on the animNode.Z_Rotate curve to cycle after.
Notice how animNode:X_Rotate is being used as a simple variable. That way if the timing of the sequence needs to be changed, only the value of animNode:X_Rotate needs to be changed. All other expressions are then evaluated using the new value.
For this example, the apply Function plug-in was used to create an animation curve that represents the evaluation of a noise function over the range 0 to 100. The animate function is then used to index into the resultant animation curve (in effect “evaluating” the function). The sphere has a normal keyframe animation for its rotation, and the following expression:
sphere:Y_Translate |
= |
animate (Noise, frame) |
The noise “function” could also be used to modulate the evaluation of other animation curves, in effect supplying a follow-type expression with a slightly random but controllable behavior.
In the same example, sphere#2 was animated using keyframe animation, and then sphere#3 has a “follow” type series of expressions, with the Noise “function” being used to add a little randomness to the follow of the X_Translate:
sphere#3:Y_Rotate |
= |
animate (sphere#2.Y_Rotate, frame - 5) |
sphere#3:X_Translate |
= |
animate(sphere#2.X_Translate, frame - 5) - (animate (Noise, 60 + fmod (frame, 15)) * 0.375) |
For the X_Translate, the Noise “function” is evaluated over the range from 60 to 75.