Graph Editor
- Home
- Tools
- Animation Tools
- Graph Editor
This tool lets you edit animation curves, which determine how properties change over time.
A foreword about Cascadeur’s control rig
If you’ve previously animated in other 3D animation software (Blender, Maya, 3ds Max etc.), you may have used the Graph Editor to adjust and polish your animation. While being a reliable tool used in the 3D animation industry, at the moment, Cascadeur’s control rig cannot fully utilize the Graph Editor like the control rigs from other software.
It’s important to note that Cascadeur’s control rigs function noticeably differently from those you may have used in other software:
1. Other software use Euler angles as the default method of rotation interpolation, while Cascadeur uses Quaternions.
2. In other software, each bone is usually controlled by a single animation controller. In Cascadeur, each bone is controlled by three point controllers: main, directional, and additional.
3. In other software, the animation controller holds position, rotation, and scale transforms. In Cascadeur, each point controller stores only its global position; the rotation is calculated from the positions of 3 point controllers that control the bone, and the scale is not stored at all.
Cascadeur is a viewport-centric 3D animation software designed to make the animation process easier and more approachable for an average 3D animator. Because of this design philosophy, Quaternions were chosen to eliminate Euler angles’ main problem: gimbal lock.
Clarification about the use of the Graph Editor in Cascadeur
Although the Graph Editor is present in Cascadeur, its functionality is very limited compared to the Graph Editors in other software. Moreover, Cascadeur rigs weren’t designed to be controlled via a Graph Editor, since their internal logic doesn’t rely on the exposed vector values.
If you really want to try using the Graph Editor to edit your animation, you can look into the following values of the specific controllers in the Graph Editor:
Main Point - Vector Length, Swing, Spherical Vector Normalized (XYZ).
Directional Point - IK Direction (XYZ).
Additional Point - Twist.
Limb Directional Point (LimbDir) - Position (XYZ).
However, compared to the standard Graph Editor usage, you will probably find such an approach cumbersome and unappealing.
Instead, Cascadeur users are encouraged to refine their animation using the tools for tracking and editing the animation directly in the Viewport.
In the future, we plan to add support for controlling trajectory tangents that can be edited in the scene’s 3D space, similar to those found in the Graph Editor window.
Enabling Graph Editor
You can access Graph Editor from the Window menu:
You can also access it through the dedicated 'Graph Editor' workspace:
Upon selecting either of these options, a Graph Editor window will appear.
Graph Editor Interface
(1) Main working area
The animation curves represent the changes happening to the selected values over time, between the keyframed values.
The numbers at the top represent the timeline frames, while the numbers to the left represent the general value scale of the displayed curves. The timeline cursor’s position is represented as a vertical red line.
(2) Channels
The list of all available channels with editable values. The channels appear when:
- One or more objects are selected in the scene.
- Selected objects have values that are exposed in the Graph Editor’s channels
Some values are exposed by default (values of the Transform behavior, 'Visibility' enum of the Basic behavior, etc.), while others are exposed if they are present in some specific behaviors inside the object (values of the Dynamic behavior, values of the Graph Channels Data behavior, etc.).
(3) Tangent tools
A set of tools for working with the animation curves by controlling the key Tangents.
Break Tangents
Separates the selected key point’s tangent handle into left and right handles. The separate handles can define the curve segment before and after the key.
Unify Tangents
Set the selected key point’s broken tangents into a single unified key tangent. When applied, the right handle’s tangent angle matches the left handle’s tangent angle.
Reset tangents for selected points
Resets the selected key point’s tangent angle to its default angle.
Auto smooth values for selected points
Sets the selected key point’s value to an interpolated value between the two nearest key points.
Using Graph Editor
Navigating the Graph Editor’s main working area
Note
The navigation tips below will work only if the mouse cursor is within the Graph Editor window and/or inside the main working area. Interactions outside of their bounds will not be successful.
The sliders at the bottom and to the right are used to scroll through the working area. To move around the working area with your mouse, hold Alt and Middle Mouse Button.
To zoom in and out, hold Alt and Right Mouse Button while moving the mouse, or use the Scroll wheel.
To center the view, press the T key on your keyboard. The view can be centered on the selected keys or the visible animation curves, when no keys are selected.
Working with Channels
To select an animation channel, click its name in the channel list that appears:
You can add individual channels to the current selection by clicking the channel name while holding the Ctrl key, or you can select an array of channels by clicking the channel name while holding the Shift key.
Individual values are stored inside the channel sections. When a section is selected, the animation curves of all channels belonging to the selected section are displayed in the working area. To select individual channels, click on the arrow to the left of the channel name, then select the channel.
The search bar above the channel list can search for specific sections and channel names.
Individual channels can be pinned by clicking on the circle to the left of the channel’s name, turning it blue. The pinned channels will display their curves even if they’re not selected.
Working with Key Points
By default, the key points become visible in the Graph Editor only if there are two or more keyframes inserted on the selected object’s animation track.
Note
A key point can be represented by a keyframe or a Fixed interpolation.
Two keyframes with any interpolation other than Fixed will produce two key points connected by an interpolated curve. Two keyframes with a Fixed interpolation between them will produce a curve filled with key points.
Essentially, the Fixed interpolation “soft-bakes” the interpolated values between the regular keyframes.
To select the key points, hold down Left Mouse Button and drag the selection square over the keys. You can also select a key point with a single Left Mouse Button click.
To quickly select all points on a curve, double click a key point with Left Mouse Button.
To deselect the selected key points, click the empty space in the working area.
The key points can be added or removed from an active selection by dragging the selection square over them with the held down Shift key.
The selected key points can be moved up or down to change their value. To move the selected keys, hold down Middle mouse button and drag your mouse in the working area.You can also move the selected key points by hovering the mouse cursor over the selected key point and dragging it with the Left Mouse Button.
Some important notes about the key points:
1. The key points can’t be moved left or right to change their timing.
To change the timing of a key point, you must interact with its connected keyframe on the timeline, in the animation track the object belongs to. To somewhat improve the user experience, you can decouple the timeline from the bottom of the main screen and connect it to the Graph Editor window.
2. The key points can’t be inserted or removed independently.
To add or remove a key point on a specific frame, you have to add or remove a keyframe on the animation track the object belongs to.
3. The key points can’t be freely removed or added in the separate channels.
All of the animation channels belonging to an object are directly connected to the animation track the object belongs to. Subsequently, when a keyframe is set or removed on a frame, a key point is set/removed on that frame in all of the channels belonging to that object.
This also applies to the vector values - you can’t remove key points from the X-axis channel and leave key points on the Y-axis and Z-axis channels.
4. Some key points can’t be moved to edit their value.
Some objects have channels with key points that can’t be moved at all. In such channels, the values can’t be changed because:
- They’re being influenced by other data
- Activation of this value’s node doesn’t change the dependency graph.
5. Cascadeur’s Graph Editor lacks curve editing tools (smoothing, scaling, filtering, etc.).
The only way to edit the curve is by moving the key points and their tangents. Transform values (Position, Rotation, Scale) can also be changed by editing their vector values in the Object properties or interacting with the object in the Viewport.
Working with Tangents
By default, the flow of the animation curves is controlled by the type of interpolation set up between the keyframes. The tangents on the key points can be edited to change the shape of the animation curves.
The tangents can be changed on some channels and can’t on others. The ability to change the tangents is signaled by:
- The curve’s brightness (interpolated data has a bright color, while calculated data has a dim color).
- The distance between the key points (keys standing next to each other have Step interpolation applied, which isn’t tangent-editable).
- The interpolation type between the key points (tangent handle won’t appear if the interpolation is set to Linear, Step, or Fixed).
Select one or more key points on a curve to make the tangent handle appear by dragging a selection border (held down Left mouse button) over them.
The tangent handle can be moved by hovering the mouse cursor over it and dragging the handle with the Left mouse button.
The Tangent tools can be used to unify, break, and reset the tangent handles - they are described in the Interface section above.
The tangent handle can be unified or broken. You can differentiate the handle type by the square at its tip - a unified handle has a filled-in square, while a broken handle has an empty space inside.
The image above shows the Graph Editor view of the selected global (upper) and local (lower) Y-axis position curves.
Notice:
- The brightness difference between the curves (the global position curve is calculated, so it’s not tangent-editable; the local position curve is interpolated, thus it’s tangent-editable)
- The editable tangents appear only on the selected key points up to frame 15 (Linear, Step, and Fixed interpolations after frame 15 don’t allow tangent editing)
- Key points appearing on frames 23-30 (values on the frames with the Fixed interpolation can be edited like keyframes)
- The unified tangent handle appears only on the key point on frame 5, while other key points have broken tangent handles (key points with the Step, Linear and Bezier Clamped interpolations have broken tangents).
Scene Update’s connection to Graph Editor
The ability to change the tangent on a specific channel depends on the node’s (whose values are represented as a channel in the Graph Editor) position in the acyclic graph - a series of interconnected nodes.If the node is the first one in the acyclic graph, it doesn’t get updated from changing the values of other nodes. Thus, its data and custom tangents won’t be overwritten by the graph's earlier nodes.
Let’s look at a practical example - an animated Locator object.
If you select the Locator object and look at its available channels in the Graph Editor, you’ll notice that its Transform channel consists of multiple sub-channels. We’ll take a look at the following two: 'Position' and 'Local position'.
Node graph composition of the Local Position <--> Position nodes in the Locator object. The gray connections to the TransformPointMatrix node that connects to the Local Position vector node signal that the latter is the first in the acyclic graph.
The 'Position' and 'Local Position' vector nodes are a part of one node chain. The 'Position' vector is calculated from the 'Local Position' vector and the parent object’s 'Parent Matrix' - when the parent object is moved, the child object’s global Position vector changes too, while the Local Position vector may remain unchanged.
If you were to turn on the IK bool in Locator’s Node3D behavior, the calculation order in the acyclic graph changes - the 'Local Position' now gets calculated from the 'Position' vector and the parent object’s 'Parent Inverse Matrix'. So even if you were to move the parent object, the Locator will stay in the same place since its global 'Position' vector remains unchanged.
Not all node chains have the ability to change the acyclic graph order. Among the node chains that have this functionality built into them, some can have the order changed by dedicated nodes (e.g. the IK bool in the Transform objects, like Locator, Joint, Mesh, etc.) or changed by activation of the specific nodes (e.g. the activated 'Position' node momentarily changes the acyclic graph order when a Transform object is moved, similar to the effect of the turned on IK bool).