Animation System Overview

The animation system in Unreal Engine 4 (UE4) is comprised of several Animation Tools and Editors which mixes skeletal-based deformation of meshes with morph-based vertex deformation to allow for complex animation. This system can be used to make basic player movement appear much more realistic by playing and blending between canned Animation Sequences, create customized special moves such as scaling ledges and walls using Anim Montages, apply damage effects or facial expressions through Morph Targets, directly control the transformations of bones using Skeletal Controls, or create logic based State Machines that determine which animation a character should use in a given situation.

The purpose of this document is to offer a high-level overview of UE4's animation system, geared primarily toward users who are new to animating in UE4. However, this should not be considered the comprehensive manual for how to animate skeletal assets in the UE4. Rather, think of this as a primer to familiarize you with the various pieces of the animation system, providing an illustration of how they all fit together and showing how animation in UE4 is more powerful flexible than ever before.

Terms and Concepts

We will start by identifying the primary terms and concepts of UE4's animation system (click each header to view more documentation):

AnimationToolsTopic.png

Creating animated characters in Unreal Engine 4 involves using several different Animation Tools (or Editors), each of which focus on different aspects of animation.

For instance, the Skeleton Editor is where everything starts as it is used to manage the bone (or joint hierarchy) that drives the Skeletal Mesh and the animation. The Skeletal Mesh Editor is used to modify the Skeletal Mesh that is linked to a Skeleton and is the outward appearance of a character. The Animation Editor allows you to create and modify your animation assets and is where the tuning/tweaking of animation assets are done. Finally, the Animation Blueprint Editor can be used to create logic that drives what animations a character uses and when as well as how animations are blended together.

SkeletonTopic.png

A Skeleton is a hierarchy of bone locations and rotations used to deform a Skeletal Mesh. In UE4, Skeletons are abstracted from Skeletal Meshes in their own asset. This means that animations are applied to the Skeleton, rather than the Skeletal Mesh. By using the same Skeleton, multiple Skeletal Meshes can share animations.

AnimationSeqTopic.png

An Animation Sequence is a single animation asset that can be played on a Skeletal Mesh. These contain keyframes that specify the position, rotation, and scale of a bone at a specific point in time. By playing these keyframes back in sequence, with blending between them, the bones of a Skeletal Mesh can be smoothly animated.

AnimNotifiesTopic.png

Animation Notifications (AnimNotifies or just Notifies) provide a way for animation programmers to setup events to occur at specific points during an Animation Sequence. Notifies are commonly used to add effects like footstep sounds during a walk or run animation or spawning a particle system during animation. However, they can have any number of different uses, as the system can be extended with custom notification types to cater to the needs of any type of game.

AnimationBlueprintTopic.png

An Animation Blueprint is a specialized Blueprint that controls the animation of a Skeletal Mesh. Graphs are edited inside of the Animation Blueprint Editor, where you can perform animation blending, directly control the bones of a Skeleton, or setup logic that will ultimately define the final animation pose for a Skeletal Mesh to use per frame.

BlendSpaceTopic.png

Blend Spaces are special assets which can be sampled in AnimGraphs that allow for blending of animations based on the values of two inputs. Simple blending between two animations based on a single input can be performed using one of the standard blend nodes available in Animation Blueprints. Blend Spaces provide a means of doing more complex blending between multiple animations based on multiple values (currently limited to two).

The goal of Blend Spaces is to reduce the need for creating individual, hard-coded nodes to perform blending based on specific properties or conditions. By allowing the animator or programmer to specify the inputs, the animations, and how the inputs are used to blend between animations, virtually any type of blending can be performed using the generic Blend Space.

MontageTopic.png

Animation Montages (or just Montages for short) are a multipurpose tool that allows for a wide variety of animation effects, primarily related to exposing animation controls within code or Blueprint Visual Scripting . It can also be used to create a wide variety of animation effects including intelligent loops of animation, logic-based animation switching and much more.

SkeletonControlTopic.png

SkeletalControls (also called SkelControls) allow direct control of bones within a Skeleton. These can be used within Animation Blueprints to control an individual bone, create IK chains, and more. This direct control of the underlying Skeleton provides the ability to create procedural, dynamically-driven animation. The Transform of one bone can be used to drive another or can be used to conform the feet of a character to the ground while playing a generic walk animation. Any sort of modification can be used to tweak or completely override the bone Transforms applied by AnimationSequences.

StateMachineTopic.png

State Machines provide a graphical way to break the animation of a Skeletal Mesh into a series of States. These states are then governed by Transition Rules that control how to blend from one state to another. As a tool, they greatly simplify the design process for Skeletal Mesh animation, in that you can create a graph that easily controls how your characters can flow between types of animation without having to create a complex Blueprint network.

Examples of some of the animation features can also be found in the Content Examples project available for free from the Learn Tab of the Epic Games Launcher.

System Breakdown

The following is a breakdown of where certain parts of the animation system are created and edited.

CreationDiagram.png

This diagram illustrates the flow and ownership of data for a typical animated character in Unreal.

AnimationDiagram.png

Animation Debug Features

Debug features can be accessed by pressing the ` key to bring up the console while in play mode.

Rendering Skeletal Mesh Bones

AnimationShowDebugBones.jpg

To display the Skeletal Mesh Bones, enter the ShowDebug Bones command inside the console. As seen in the image above the bones are represented by individual white lines.

The ShowDebug Bones command will display the information for the playable character during a play session. To view the debug animation for another character (other than the player character), you can use the viewactor ExampleCharacterID command, where ExampleCharacterID refers to the Character ID assigned to the character you wish to view. You can find this ID by hovering over a character in the World Outliner which will display its ID name.

At this time when using the viewactor command, the camera will be moved to and locked on the Actor you are currently viewing. If you need to manipulate the camera while debugging still, a work around for this is to create a Play in Editor session with more than one player from the dropdown menu using one window for debugging and the other for controlling a player character.

Instead of displaying white lines for bones, you can enable 3D bones with the ShowDebugToggleSubCategory 3DBones command inside the console.

Animation Debug Output

AnimationShowDebugToggle.jpg

The Animation Debug Output information can be enabled by using the ShowDebug Animation command inside the console.

The information displayed is split up into 5 sections, each of which can be toggled on and off using the ShowDebugToggleSubCategory command followed by the category name listed below (e.g. ShowDebugToggleSubCategory SyncGroups).

Button Description
SyncGroups Displays the animation assets currently contributing to the final pose, organized by their sync group (or Ungrouped if they do not belong to a group). By default Blendspaces listed in this section show all their contributing animations/weights. To reduce screen space used by the output this can be toggled off with ShowDebugToggleSubCategory FullBlendspaceDisplay.
Montages Lists the montages currently being used by the character. The active montage is highlighted in green.
Curves Lists the curve values (in Name: Value pairs) that have been activated by the playing animation(s).
Notifies Display any notify states that are currently in effect.
Graph Displays the active pose graph. The display starts with the last node (the root node) which represents the final pose and goes on to list all the nodes that go into making that final pose. Nodes are represented in such a way as to keep their hierarchy, allowing the user to see which nodes are connected to what without having to refer to the original Blueprint asset. Active nodes are colored green and (if they have been toggled to display using ShowDebugToggleSubCategory FullGraph) inactive nodes are colored gray.
Tags