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:
- Find the actor ID you’re interested in by hovering over its name in the World Outliner. E.g. “BP_MyPawn_C_3”
- Run “GetAll MyAnimBP AimYaw”.
- 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”
- 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”