Using Animation Curves

Any property that can be animated can have an Animation Curve to allow it to be controlled from an animation clip. In the property list, the Animation View properties with Animation Curves have colored curve indicators. For information on how to add curves to an animation property, see the page about Using the Animation View.

By default, the Animation Window will show the Dopesheet view instead of the Curves. Click the Curves button at the bottom left of the window to change to the Curve view.

Only selected properties with animation curves will be shown in the right side of the view.

Understanding Curves, Keys and Keyframes

An Animation Curve has multiple keys which act as control points that the curve passes through. These are visualized in the Curve Editor as small diamond shapes on the curves. A frame in which one or more of the shown curves have a key is called a keyframe. If a property has a key in the currently previewed frame, the curve indicator will have a diamond shape.

A keyframe can be added at the currently previewed frame by clicking the Keyframe button. This will add a key to all the selected properties at once. It is also possible to add a keyframe by right-clicking the Keyframe Line and select Add Keyframe from the context menu. Once placed, keyframes can be dragged around with the mouse. It is also possible to select multiple keyframes to drag at once. Keyframes can be deleted by selecting them and pressing Delete, or by right-clicking on them and selecting Delete Keyframe from the context menu.

Property Types that Support Animation

The Animation View can be used to animate much more than just the position, rotation and scale of a Game Object. The properties of any Component and Material can be animated, including the public variables of your own script components. Making animations with complex visual effects and behaviors is a simple matter of adding Animation Curves for the relevant properties.

The following types of properties are supported in the animation system:

Arrays are not supported and neither are structs or objects other than the ones listed above.

Here are a few examples of the many things the Animation View can be used for:-

When using Animation Curves to control game logic, please be aware of the way animations are played back and sampled in Unity.

Rotation Interpolation Types

In Unity rotations are internally represented as Quaternions. Quaternions consist of .x, .y, .z, and .w values that should generally not be modified manually except by people who know exactly what they're doing. Instead, rotations are typically manipulated using Euler Angles which have .x, .y, and .z values representing the rotations around those three respective axes.

When interpolating between two rotations, the interpolation can either be performed on the Quaternion values or on the Euler Angles values. The Animation View lets you choose which form of interpolation to use when animating Transform rotations. However, the rotations are always shown in the form of Euler Angle values regardless of which interpolation form is selected.

Quaternion Interpolation

Quaternion interpolation always generates nice interpolations along the shortest path between two rotations. This avoids rotation interpolation artifacts such as Gimbal Lock. However, Quaternion interpolation cannot represent rotations larger than 180 degrees, because it is then shorter to go the other way around. If you use Quaternion interpolation and place two keys further apart than 180 degrees, the curve will look discontinuous, even though the actual rotation is still smooth - it simply goes the other way around, because it is shorter. If rotations larger than 180 degrees are desired, additional keys must be placed in between. When using Quaternion interpolation, changing the keys or tangents of one curve may also change the shapes of the other two curves, since all three curves are created from the internal Quaternion representation. When using Quaternion interpolation, keys are always linked, so that creating a key at a specific time for one of the three curves will also create a key at that time for the other two curves.

Placing two keys 270 degrees apart when using Quaternion interpolation will cause the interpolated value to go the other way around, which is only 90 degrees.

Euler Angles Interpolation

Euler Angles interpolation is what most people are used to working with. Euler Angles can represent arbitrary large rotations and the .x, .y, and .z curves are independent from each other. Euler Angles interpolation can be subject to artifacts such as Gimbal Lock when rotating around multiple axes at the same time, but are intuitive to work with for simple rotations around one axis at a time. When Euler Angles interpolation is used, Unity internally bakes the curves into the Quaternion representation used internally. This is similar to what happens when importing animation into Unity from external programs. Note that this curve baking may add extra keys in the process and that tangents with the Constant tangent type may not be completely precise at a sub-frame level.

Page last updated: 2013-11-04