Version:

# Animation Editor Concepts and Terms

The following concepts and terms are used in the Animation Editor:

Actor A character with at least one bone is called an actor. An actor consists of a set of nodes in a hierarchy. Each node is a transformation (position, rotation, and scale) and can contain a mesh. Instances of actors are called actor instances. For example, one soldier that is instanced 100 times can create an army of the same character. You can animate actor instances separately, so that each instance behaves differently. Each actor instance has unique transformations, but shares the same hierarchy as the actor from which it was instanced. Actor files have the .actor extension (for example, hero.actor).

Motions Motions are individual animation clips, such as walk loop, an idle motion, and so on. Motions contain transformation animation and/or morph target weight animation. A motion can contain animation data for the skeletal structure and the morph targets. Motion files have the .motion extension (for example, Walk.motion).

Animation graphs Animation networks are called animation graphs. Animation graphs contain the state machines, transitions, conditions, blend trees, and other nodes. Animation graphs are hierarchical. Animation graph files have the .animgraph extension (for example, Main.animgraph).

Motion sets A motion set contains a list of motions, where each motion has a unique string ID (for example, walk, idle, and so on). Nodes inside an animation graph can reference motions based on their string ID. Motion sets can be hierarchical. A child set can override specific motions for a character, while sharing the rest of the motions with the parent set. Motion set files have the .motionset extension (for example, MainSet.motionset).

Motion events Markings at specific time values inside the motion files are called motion events (also called notifiers or notifications). A motion event has a type string (for example, “SOUND”) and parameter string (for example, “Footstep”). Motion events can have a fixed time value or range. Events with a single time value are called tick events. Events with specified start and end times are called ranged events. You can specify event presets, which are pre-setup types of events that you drag and drop into the event tracks. An event track is a group of events that you enable or disable. For example, you can add all sound effects to an event track specifically for sounds. Motion event data is stored in the motion FBX’s .assetinfo file.

Synchronization You can use full clip-base sync or *sync tracks * to synchronize motion clips to keep a character’s motions in sync while blending. For example, if your character is running, synchronization helps keep the right and left feet in sync. Full clip-based sync warps the motions so that there is a constant change in playback time of the child motion. Sync tracks use motion events, where the events mark specific moments (for example, where the right and left feet are on the floor). This system is also known as phase matching and dynamically controls the playback speed.

Floats Floats are numbers with decimals (for example 1.35 or 1.0.) Booleans and integers are also floats, so they can be passed as weight float inputs to blending nodes. If floats are rounded, the Animation Editor always rounds them down. For example, 2.99 becomes 2.

Time All time values and durations are in seconds. For example, you can set the transition time for 0.3 or 300 ms.

Animation graphs define the animation behavior for your game characters. Animation graphs contain the states that the character can have and define the transitions between these states. Each transition can have a set of conditions that define the logic behind the transitions.

Animation graphs contain nodes and the connections between them. These connections define how data is passed between the nodes or how transitions occur between nodes.

Animation graphs have two main node types:

• State machines
• Blend trees

Because animation graphs are hierarchical, the nodes can be nested. For example, you can have a state machine inside a state machine inside a blend tree, which contains another blend tree and state machine, and so on. The number of hierarchy levels is limitless, but as a best practice limit your hierarchy to 20 levels or fewer.

Each animation graph has one root node, which is a state machine. This root node is the default and cannot be deleted. A simple animation graph can contain one state inside this root state machine. For example, the single state can be a motion node, which outputs a pose that is applied to the character, such as an idle motion.

Before you can add nodes to an animation graph, you must create a motion set. After you create a motion set, you can create an animation graph and then assign the motion sets to the animation graph using the Resource Management pane in the Anim Graph window.

### Animation Graph Nodes

In a state machine, you can add the following nodes from the Sources category:

• Blend Tree
• Entry
• Exit Node
• Hub
• Motion
• State Machine
• Bind Pose

In a blend tree, you can add other nodes from the following six categories

1. Sources

• Float Constant
• Parameters
• Blend Tree
• Entry
• Motion Frame
• Exit Node
• Motion
• State Machine
• Bind Pose
2. Blending

• Pose Subtract
• Morph Target
• Blend N
• Blend Two (Legacy)
• Blend Space 2D
• Blend Space 1D
• Blend Two
3. Controllers

• Transform
• LookAt
• AccumTransform
4. Logic

• Pose Switch
• Float Condition
• Float Switch
• Bool Logic
5. Math

• Direction to Weight
• Range Remapper
• Vector3 Compose
• Vector2 Compose
• Vector4 Decompose
• Vector4 Compose
• Vector3 Math1
• Vector3 Decompose
• Smoothing
• Float Math2
• Vector2 Decompose
• Vector3 Math2
• Float Math1
6. Misc

• Mirror Pose

When you create your animation graph, you can use parameters to control how your animations transition between different states.

Each transition can have a set of conditions applied to it. These conditions define the logical rules for the transition and how animations blend together.

Each transition condition is controlled by a set of parameters. Your O3DE game setup sends parameter values to the animation graph. The actor reacts to the incoming parameters. The game sends the parameter values to the animation graph, which then responds to the changes automatically. For example, you can specify parameter values such as speed, direction, weapon type, and so on.

You can set this up in a game level by adding an Actor and an Animation component to an entity with the Entity Inspector.

### Adding Parameters to an Animation Graph

You can add parameters to an animation graph in the Parameters pane.

To add a parameter to an animation graph

1. In O3DE Editor, choose Tools, Animation Editor.

2. In the Parameters pane, click the green + icon.

3. In the Create Parameter dialog box, specify the parameter name, description, and the value type.

You can specify the following value types to provide input into animation graph nodes:

• Float (slider)
• Float (spin box)
• Boolean (checkbox)
• Tag (checkbox)
• Integer (slider)
• Integer (spin box)
• Vector2
• Vector3
• Vector3 gizmo
• Vector4
• String
• Color
• Rotation
• Group

You can name parameter types to identify the purpose of the control. For example, you can name parameters such as movement_speed, movement_direction, jumping and attacking. As an artist and game designer, you can specify the parameters that best control your animation graph.

### Adding a Parameter Node to a Blend Tree

After you create your parameters in the Parameter pane, you can add a parameter node to your blend tree.

1. In the Animation Editor, right-click the animation graph grid and choose Create Node, Sources, Parameters.

2. In the Attributes pane, click select parameter and specify the parameter that you want.

You can rename parameter nodes and specify them to provide input to other nodes. In the following example, the speed_parameter node provides input to the blend tree.