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
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.
Related video
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.
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.
Animation Editor - Tools and controls
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 - 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.
For example, an expression can reference another channel that has been keyframe animated:
An expression can reference the frame and create an ongoing motion that continues indefinitely:
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:
|
|
|
|
|
|
|
|
|
|
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:
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 |
Valid parameters
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 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_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” |
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
andend
: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
andy
.Base 10 log of
value
:log10 (value)
value
raised topower
: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 assphere:X_Translate
, but rather the action curve that might be animated such a parameter, for example,sphere.X_Translate
ormy_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))