Share

Animation Editor

The Animation Editor displays animation parameters, channels, actions and keyframes for the purposes of editing and playback.

The Animation Editor is populated when the following tools have been used:

  • Animation > Set Keyframe, Set Keyframe At or Auto Keyframe
  • Animation > Set Motion Path

missing Gif

Objects are listed as nodes and groups in the same way as in the Object Lister with an extra level of hierarchy displayed for NURBS geometry showing the CVs. Shader and Light Parameters are also shown. The filter icon affects which objects are displayed.

Parameters are the attributes of the node that can be animated. These are displayed in neutral color when no animation has been applied.

Channels are Parameters that have been animated and are shown highlighted in XYZ color. Channel data describes the value of its parameter at different frame times during the animation playback. The relationship between an animation parameter and its channel is made implicitly by using the same name for both.

Actions show the duration of the animation. These are displayed as a summary bar at the node level and as individual keyframes at the parameter level.

Keyframes set the time, value and Tangent Type settings for the node. These settings can be accessed and changed using the RMB context menu on the keyframe diamond icon.

Expressions add animation to node without the need to set keyframes. An expression can be added by double-clicking in the action section of a parameter and entering the syntax as described in the Expressions Syntax reference.

Animation Editor - Mouse interactions

Keyframes can be moved left and right to change the timing of the animation. Moving Keyframes on the Action Summary Bar also moves and adjusts the channel keyframes below. Individual parameter keyframes below can be moved independently.

missing Gif

The mouse scroll wheel can be used to navigate the regions of the editor as shown below.

Shift + Alt with MMB and RMB can also be used to move around the Actions and Channels main window.

missing Gif

Animation Editor - Tools and controls

missing Gif

Playback Controls

  • - Play Forward/Reverse.

  • – Next/Previous Keyframe.

  • – Next/Previous Frame.

  • - Skip to Start/End.

  • - Stop playback.

    • Note: Clicking anywhere in the Alias window also halts the animation playback.

Timeline and Playhead - Click and drag to move the playhead. This is the current frame of the animation. Use the scroll button to move the timeline left and right.

Playback Settings

  • Current – Displays the frame that the playhead is at. Enter a value to move the playhead.
  • By – Playback shows every frame when set to 1.00. For example, set to 2 to view every second frame only.
  • FPS - Frames per second. If this is set to zero, then the animation plays back as quickly as the graphics allow. To achieve a controlled playback, enter a frame rate (for example 25 fps).
  • Range – If Range is On, then enter Start and End values to set the time period for the playback. If Range is Off, the animation plays from the first to the last keyframes and continue in a loop. Sometimes this does not correctly update to a change in timing. In this case, use Range to set the required playback period.

Expanders

  • Expose or hide the node hierarchy.
  • Expose or hide the parameters for each node. This icon also indicates when a parameter has animation channels with a highlighted color and emphasis.

Pin - Select the pin icon to fix a node in the node list, regardless of the filter settings. Pinned nodes move to the top of the list so you may see some reorganization of the list.

Shortcuts - Shortcuts for Set Keyframes and Delete Channels for the selected item in the node list. Click on the node or parameter name in the list. Use Shift to select multiple items.

Animation Editor - Context Menus

Use the RMB to access context menus.

Context Menu for the Object List

missing image

To select multiple nodes, use the Ctrl key with LMB first. The context menu tools will then apply to all the selected nodes.

The context Set Keyframe tool uses the following settings:

  • Parameters: Global - Refers to the Param Control Settings.
  • Hierarchy : None - Only sets keyframes for the selected node or parameter.
  • Tangent Type: As set in the Animation > Set Keyframe tool options.
  • Overwrite Tangents: On

The context Clear Animation tool uses the following settings:

  • Channel Types : Both - Deletes animation channels and expressions.
  • Objects : Active - Deletes channels only for the selected node or parameter.
  • Parameters : All - When used at the node level, it deletes all channels for all parameters. This doesn’t refer to Param Control settings.
  • Hierarchy : None - Only deletes channels for the selected node.

Setting keyframes for shader, light or texture parameters

The only way to set a keyframe for shader and light parameters is to use the context menu. Shader parameters appear under the shader node. Make the adjustment in the Shader Editor or Light Editor, and then use the context menu to set the keyframe on the selected parameter.

missing Gif

Context menu for Keyframes

missing Gif

The Keyframe context menu works on individual parameter keyframes and not on the keyframes embedded in the action summary bar for the nodes.

Click outside the settings window within the Animation Editor to close.

Multiple keyframes can be selected using the Shift key, but the context menu only applies to the keyframe selected with RMB.

Translation values are displayed in centimeters.

Animation Editor - Expressions

Expressions add animation to node without the need to set keyframes.

An expression can be added by double-clicking in the action section of a parameter and entering the syntax as described in the Expression syntax section below.

Press the Enter key to confirm the typed expression.

missing Gif

For example, an expression can reference another channel that has been keyframe animated:

missing Gif

An expression can reference the frame and create an ongoing motion that continues indefinitely:

missing Gif

Expressions syntax

Expressions can refer only to DAG nodes and their CVs. References to shader and light parameters, for example, are not supported.

To see the expressions update while you move the mouse, turn on During Transform in the Expression Updates section of the Preferences > Performance Options.

Referring to other parameters

Parameter references are defined as follows:

ObjectName[.CVreference]:Parameter
  • ObjectName is the name of the object (DAG node) that you want to refer to.
  • CVreference is an optional qualifier which lets you specify a CV.
  • Parameter is the specific parameter you want to reference.

DAG node references

In a DAG hierarchy, you can refer to DAG nodes higher up in the hierarchy by 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.

CV references

The parameter of any CV within a surface may be referenced as shown in this table:

ObjectReference (where # represents a number)Example
surfaceu#v#plane.u3v0
curveu#curve.u1
curve within a facec#u#curve#3.c2u3

Valid parameters

For DAG node references, you can use these parameters:

X_Translate or txLocal X Translate of the DAG node
Y_Translate or tyLocal Y Translate of the DAG node
Z_Translate or tzLocal Z Translate of the DAG node
X_Rotate or rxLocal X Rotation of the DAG node, in degrees
Y_Rotate or ryLocal Y Rotation of the DAG node, in degrees
Z_Rotate or rzLocal Z Rotation of the DAG node, in degrees
X_Scale or sxLocal X Scale factor of the DAG node
Y_Scale or syLocal Y Scale factor of the DAG node
Z_Scale or szLocal Z Scale factor of the DAG node
VisibilityA Boolean specifying whether or not this DAG is visible

For CV references, you can use these parameters:

X_Position or pxLocal X Position of the CV
Y_Position or pyLocal Y Position of the CV
Z_Position or zpLocal Z Position of the CV
WeightThe weighting factor for this CV

Short expression names

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.

Examples of valid parameters

sphere:X_TranslateX Translate of the object sphere
sphere.u2v3:X_PositionX position of the u2v3 CV within the object sphere
..\..:X_TranslateX Translate of the DAG node two levels “up”

Mathematical functions

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.

  • The standard trigonometric functions:

    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) 
  • Bessel functions Jn(x) :

    besselj0(value)besselj1(value)
    besseljn(order,value)besselyn(order, value)
  • The smallest whole number greater than value:

    ceil (value)
  • Constrain value such that it is an integer multiple of by between start and end:

    constrain (start, end, by, value)
  • Error functions :

    erf (value)        erfc (value)
  • Absolute value of value:

    fabs (value)
  • The greatest whole number less than value:

    floor (value)
  • Floating point remainder of value / divisor:

    fmod (value, divisor)
  • Gamma function :

    gamma (value)
  • Return a random number using a standard Gaussian distribution:

    gauss ()
  • Length of the diagonal of a rectangle with sides of lengths x and y.

  • Base 10 log of value:

    log10 (value)
  • value raised to power:

    pow (value, power)
  • Return a random number in the range -1.0 to 1.0 with a pseudo-random distribution:

    rand ()
  • Use the argument seed as a seed for a new sequence of pseudo-random numbers:

    srand (seed)
  • Return 0.0 if value is 0.0, 1.0 if value is positive and -1.0 if value is negative:

    sign (value)
  • Square root of value:

    sqrt (value)   
  • Evaluating action curves:

    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. You can see the name of any action in the Animation Editor.

    • The animate function takes an action curves, not a channel, as its first argument. Thus, it does not reference a parameter such as sphere:X_Translate, but rather the action curve that might be animated such a parameter, for example, sphere.X_Translate or my_curve.

    • 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:

    • You can refer to the position of an object at a time other than the current frame.
    • It can be used as a mechanism for defining your own functions within expressions.

Logical operations

Logical operations include:

  • Comparisons (==, !=, >, <, >=, <=)
  • Boolean operators (&&, || !) )

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:

  • If the distance along the X axis between a cube and a cone is less than 3 units
  • Then return the pyramid’s X Translate value less 4 units
  • Otherwise return the cube’s X Translate value less 5 units

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)) 

Was this information helpful?