Animation Productivity Tips & Tricks

Article written by Euan C.

Animation Productivity Tips & Tricks

A series of workflow tips and tricks for animators and animation programmers.

Editor Workflows

Navigating Assets

Opening in Separate Tabs
In UE4, hold SHIFT while opening an animation asset to open it in a new tab.
In UE5, you can make this the default behavior by enabling “Always Open Animation Assets in New Tab” in Editor Preferences.

Animation Asset Filtering
With an animation asset open, you can filter for content in the Asset Browser tab.
Especially useful filters include “Anim Filters → Uses Curve…” and “Anim Filters → Uses Skeleton Notify…”.

Content Browser Filtering
The Content Browser has various filters for animation content, but be sure to also look at the “Other Filters” category. It has helpful options, such as “Checked Out” files.

Reference Viewer
The Reference Viewer is very helpful for tracking down what assets reference animation assets. -hotkey: Alt+Shift+R

Content Browser Advanced Search Syntax

Blueprint Editor tips & tricks

Animation Blueprints

Pose Watch
Right click any anim node in the Animation Graph and choose “Toggle Pose Watch” to see a debug drawing of the pose at that point in the graph.

Anim Sequence/Montage Editor

Visualizing Additives
When viewing an additive animation, click the Character button at the top of the preview viewport and choose “Animation → Additive Base” to draw the base pose.

Editor Preferences

AutoSave
You can disable AutoSave with the “Enable AutoSave” setting in Editor Preferences.

Level Loading
Set the “Load Level at Startup” setting in Editor Preferences to “Last Opened” to always load the last level you had opened when relaunching the editor.

General Tips

Revert Unsaved Changes
If you’ve made unsaved changes to a file and you want to clear them, right click the file in the Content Browser and choose “Asset Actions → Reload”.

Play In Editor (PIE)

Animation Debug Text

Command Info
NextDebugTarget (PGUP) Change debug target
PreviousDebugTarget (PGDOWN) Change debug target
ShowDebug Clears display
ShowDebug ANIMATION Toggles display state of animation debug data
ShowDebugToggleSubCategory Toggles display of a specific category (see autocomplete results)

Miscellaneous Commands

Command Info
a.animnode.* Debug options for various animation nodes
Log Change log verbosity
Log LogAnimMontage Verbose Example of changing log verbosity
p.VisualizeMovement 0 Hide movement component debug
p.VisualizeMovement 1 Show movement component debug
show Bones Show/hide bones
show Collision Show/hide collision
Slomo 0.5 Slow motion
Stat FPS Show framerate
t.MaxFPS 0 Remove framerate limit
t.MaxFPS 20 Limit framerate to 20 (warning: affects editor)

Debugging LODs

Command Info
a.VisualizeLODs 0 Hide LOD info
a.VisualizeLODs 1 Show LOD info
FORCESKELLOD LOD=2 Force all skeletal meshes to LOD 2
FORCESKELLOD LOD=-1 Disable forced LO

Debugging Properties

Command Info
DisplayAll Display value of a property on all objects of a specific class
DisplayAll CharacterMovementComponent Velocity Example of using DisplayAll for component value
DisplayAll MyAnimBP_C AimYaw Example of using DisplayAll for AnimBP value
DisplayClear Clears results of DisplayAll
GetAll Same as DisplayAll, but prints to the Output Log
Display Display property value for a single instance

Note on using “Display”
The GetAll command can be useful for finding what to use for . For example:

  1. Find the actor ID you’re interested in by hovering over its name in the World Outliner. E.g. “BP_MyPawn_C_3”
  2. Run “GetAll MyAnimBP AimYaw”.
  3. Find the path to the object name in the Output Log. E.g. “/Temp/UEDPIE_0_Untitled_1.Untitled_1:PersistentLevel.BP_MyPawn_C_3.CharacterMesh0.MyAnimBP_C_0”
  4. Run “Display /Temp/UEDPIE_0_Untitled_1.Untitled_1:PersistentLevel.BP_MyPawn_C_3.CharacterMesh0.MyAnimBP_C_0 AimYaw”

Memory Tracking

Command Info
obj list class=“AnimSequence” List all animation sequences that are loaded (recommend testing in cooked build)
obj refs name=ASSET_NAME Print reference chain of specific asset
obj refs name=
/Game/Characters/Animations/ThirdPersonJump_End.ThirdPersonJump_End Example of using “obj refs”

Cheat Scripts

You can combine console commands into a single command by adding “Cheat Scripts” to your game’s DefaultGame.ini.

Example:
[CheatScript.ShowAnimVars]
+Cmd=“displayclear”
+Cmd=“DisplayAll CharacterMovementComponent Velocity”
+Cmd=“DisplayAll MyAnimBP_C AimYaw”

Run from the console with: “CheatScript ShowAnimVars”.

Editor Utility Widgets

Editor Utility Widgets allow custom editor widgets to be created entirely in Blueprint. A common use case is to create a set of buttons that trigger common Console Commands.

Visual Studio

Immediate Window

Command (UE4) Info
{,UE4Editor-Core}::PrintScriptCallstack() Blueprint callstack
{,UE4Editor-Core}::GFrameNumber Current frame number (also works as breakpoint condition)
{,UE4Editor-Core}::GPlayInEditorID PIE ID (useful for multiplayer, also works as breakpoint condition)
UE4Editor-Engine!GPlayInEditorContextString PIE window name (useful for multiplayer)

Quick Reference

Disable optimizations
PRAGMA_DISABLE_OPTIMIZATION
PRAGMA_ENABLE_OPTIMIZATION

Debug lines
#include “DrawDebugHelpers.h”
DrawDebugLine(GetWorld(), START, END, FColor::Green);

Debug text
#include “Engine/Engine.h”
FString MyDebugString = FString::Printf(TEXT(“MyVelocity(%s)”), *MyVelocity.ToCompactString());
GEngine->AddOnScreenDebugMessage(INDEX_NONE, 0.f, FColor::Yellow, MyDebugString, false, FVector2D::UnitVector * 1.2f);

Enum to String
EMyEnum::Type MyVariable;
static const UEnum* Enum = StaticEnumEMyEnum::Type();
Enum->GetNameStringByValue(MyVariable);

Fix the Configuration combobox width

The default solution configuration combobox is too small to see the full name of the option currently selected. To fix that, right-click on the toolbar, select Customize, select the tab Commands, select the radio Toolbar > Standard, scroll down to the “Solution Configurations”, click on Modify Selection and put in the width you’d like (200 works fine).

Speeding up Visual Studio 2019

VS 2019 can be slow when working with Unreal projects. The following are a few strategies that may improve performance for you:

Debugging is slow
Try disabling the following settings in Option > Debugging > General
Uncheck Enable Diagnostic Tools while debugging
Uncheck Show elapsed time PerfTip while debugging

P4VS history above every method

Uncheck Tools > Options > Text Editor\All Languages\CodeLens > Enable CodeLens

Visual Studio is slow when opening solutions or debugging
If you are using another plugin for symbol searching, such as Visual Assist, you can disable the Intellisense database to prevent it parsing the solution. This can be done from:
Tools > Options > Text Editor > C/C++ > Advanced > Set “Disable Database = true”

1 Like