Decode ALS V4 Animation Layering
Build a reversible lab to inspect ALS V4 animation layers in Unreal Engine.
Introduction
30 Second Summary
A game character can look convincing until one body region moves in a way you cannot explain. The finished motion hides which stage created that detail.
In this project, you will turn a copy of the Advanced Locomotion System V4 Animation Blueprint into an ALS Layer Lab. A reversible diagnostic switch will let you compare the base pose with the complete layered result during play.
What You'll Build
Your moving ALS character becomes a live animation lab where Pose Watches expose two stages while LayeringEnabled reveals the exact motion contributed by one body-part layer.
By the end of this project, you'll have:
- A safe layer lab where the playable character keeps its familiar locomotion while the original animation asset stays untouched.
- A live pose comparison where Pose Watch separates the source pose from the selected blend's completed result as the character moves.
- An annotated runtime map connecting Base Pose, Overlay Input, Per-Bone Blend, and Final Pose. You can follow the active path while the character moves.
- Secret Mission: Add a second diagnostic switch around an additive or Foot IK pass. You can isolate its contribution independently from the body-part layer.
Are there any prerequisites?
You need Unreal Engine 5, an Epic Games account, and an existing ALS project on a Mac. You should already be comfortable with Animation Blueprint state machines and blend spaces.
Before We Start
Your existing Advanced Locomotion System V4 project in Unreal Engine 5 is the reference for this checkpoint. A clear diagnostic target distinguishes the base locomotion that remains animated from the body-region contribution that changes when its layer is bypassed.
Create a Safe ALS Layer Lab
Your chosen overlay behavior already works in the Advanced Locomotion System V4 project inside Unreal Engine. Its logic sits inside a complex, data-driven Animation Blueprint.
The playable character's Skeletal Mesh Component points to that shared asset through Anim Class. A duplicate creates an isolated lab without overwriting the original animation asset.
In this step, get ready to:
- Confirm the selected overlay behavior in Play In Editor.
- Duplicate the playable character's assigned Animation Blueprint.
- Assign ABP_ALS_LayerLab to the playable character.
Confirm the existing animation baseline
Your baseline gives you a visual reference for every later comparison. It shows how the character behaves before the lab copy changes anything.
- Press Play in the main editor toolbar.
- Move the playable ALS character with the project's existing controls.
- Repeat your selected overlay or upper-body behavior.
- Stop Play In Editor.
You should see the same playable character as before. Base locomotion should match your documented starting point.
Your baseline is locked in: the selected body-region behavior still appears in the complete layered result.
Duplicate the assigned Animation Blueprint
The Anim Class property identifies the exact Animation Blueprint driving the character. Following that reference keeps your experiment tied to the asset that actually runs during gameplay.
- Locate the playable ALS character Blueprint in the Content Browser.
- Double-click the playable ALS character Blueprint.
- Select its Skeletal Mesh Component.
- Find the Animation Blueprint shown by Anim Class.
- Record the exact asset name here: your original Anim Class.
Why duplicate the assigned asset?
The asset shown by Anim Class controls the playable character's animation during gameplay. Duplicating that exact asset gives your lab the same starting behavior.
Later experiments stay inside the duplicate. Your original Animation Blueprint remains available as a clean reference.
- Return to the Content Browser.
- Enter your original Anim Class in the search field.
- Right-click the matching Animation Blueprint asset.
- Select Duplicate.
- Name the copied asset ABP_ALS_LayerLab.
You should see ABP_ALS_LayerLab beside the original asset in the Content Browser. Your working copy is now isolated from the original Animation Blueprint.
Cannot find the assigned asset?
- Clear active filters that hide Animation Blueprint assets in the Content Browser.
- Compare the search value with the asset name displayed by Anim Class.
- Return to the playable character Blueprint if you need to read the property again.
Ask for help with locating the assigned asset: Help me trace the playable character's Anim Class to its Animation Blueprint asset.
Assign the lab copy and verify locomotion
The duplicate becomes a useful laboratory when the playable character runs from it. Compiling the copy first confirms that it preserves the original graph before you change the character assignment.
- Double-click ABP_ALS_LayerLab in the Content Browser.
- Click Compile in the Animation Blueprint editor.
The duplicate should compile without reporting a problem. This confirms that the copied graph is ready to drive the character.
- Click Save.
- Return to the playable ALS character Blueprint from earlier.
- Select its Skeletal Mesh Component.
- Set Animation Mode to Use Animation Blueprint.
- Set Anim Class to ABP_ALS_LayerLab.
- Click Compile.
The playable character Blueprint should compile without reporting a problem. Its animation assignment now points to your lab copy.
- Click Save.
Before you press Play, do you expect the duplicate to alter the character's motion or preserve the baseline?
- Press Play in the main editor toolbar.
- Move the playable ALS character with the same controls as before.
- Repeat your selected overlay or upper-body behavior.
You should see the same playable ALS character. Base locomotion should still match your baseline.
The selected body-region behavior should remain visible. Your safe experiment now runs from ABP_ALS_LayerLab.
- Stop Play In Editor after confirming the baseline.
Character does not match the baseline?
- Confirm that Animation Mode still shows Use Animation Blueprint.
- Confirm that Anim Class shows ABP_ALS_LayerLab.
- Compile the playable character Blueprint again after correcting either property.
Get help comparing the assignment with your baseline: Help me diagnose why my duplicated ALS Animation Blueprint does not match the original behavior.
Your lab copy is safe and baseline-accurate. Next, you will watch the live pose pipeline to separate the base source from the layered result.
Watch the Live Pose Pipeline
Your safe Animation Blueprint copy now drives the playable character in Unreal Engine 5. The original animation asset stays untouched.
The character moves correctly. Its final motion is still a black box until you compare individual pose sources during simulation.
Pose Watch renders individual animation data sources during simulation. You will use it to compare the base source with the selected body-part blend's output.
In this step, get ready to:
- Trace the final pose path to the last existing body-part blend.
- Enable two Pose Watches around the selected blend.
- Compare the live base source with the blend output during Play In Editor.
Trace the final body-part blend
A per-bone blend combines a base pose with one or more blend poses across selected bones. Its weights control how strongly each contribution appears.
The final body-part blend in the output path is a strong diagnostic target. Its output carries the completed body-part contribution downstream.
- Double-click ABP_ALS_LayerLab in the Content Browser to open the laboratory Animation Blueprint.
- Select AnimGraph in the Animation Blueprint editor.
- Locate the final output node at the end of the connected pose path.
- Trace the connected pose wire backward from the final output.
- Stop at the last existing body-part blend with a source or base-pose input plus one or more blended-pose inputs.
- Confirm that the same blend has blend weights.
- Confirm that its output is connected to a downstream pose path.
How do the pins reveal the blend?
The source or base-pose input carries the motion underneath the layer. Each blended-pose input supplies a body-part contribution.
Blend weights decide how strongly each contribution appears. The downstream output carries the combined pose toward the final pose.
Enable both Pose Watches
Two Pose Watches create a before-and-after comparison around one blend. The source feeder shows the incoming pose.
The target blend's watch shows the completed contribution leaving that stage. Watching both points makes the layer's influence visible.
- Keep the selected target blend visible in the AnimGraph.
- Right-click the selected target blend.
- Choose the Pose Watch toggle command for the target blend.
- Follow the pose wire connected to the source or base-pose input back to its immediate feeder node.
- Right-click the source or base-pose feeder node.
- Choose the Pose Watch toggle command for the feeder node.
- Resize the graph panel to leave more room for the preview viewport.
Both points in the pose pipeline are now marked for live debugging. The expanded preview area gives both pose renders space.
Can't enable both watches?
- Trace the pose wire entering the source or base-pose input instead of a weight wire.
- Apply Pose Watch to the pose-producing feeder node connected directly to that input.
Help me identify the correct Pose Watch nodes.
Compare the watched poses at runtime
A debug instance connects the editor graph to one live character. Selecting the playable character lets the graph activity reflect the movement you perform.
- Predict which watched pose will show more of the selected body-region behavior.
- Click Play in the main toolbar to start Play In Editor.
- Switch back to the ABP_ALS_LayerLab editor while Play In Editor keeps running.
- Choose the running playable character from the Animation Blueprint's debug-instance selector.
The editor graph is now attached to the live character. Its active pose path updates during simulation.
- Return to the Play In Editor viewport.
- Move the character with the project's existing controls.
- Repeat the selected overlay or upper-body behavior from the previous step.
- Switch back to the AnimGraph.
- Compare the body regions shown by the source feeder's Pose Watch with those shown by the target blend's Pose Watch.
You should see both watched poses updating live. The source feeder preserves the incoming base motion.
The body regions affected by the selected layer differ at the target blend output. This difference reveals the blend's visible contribution.
Are the watched poses frozen or identical?
- Confirm that the running playable character remains selected as the debug instance.
- Repeat the behavior that visibly activates your selected overlay.
- Confirm that the target Pose Watch belongs to the final selected body-part blend.
Help me troubleshoot my live Pose Watches.
That is the black box opened: your live watches now separate the base contribution from the layered result.
Your live comparison now shows where the layer changes the pose. Next up, you will trace the signals that create that change.
Map the Layering Signals
Your two Pose Watches now expose the base source and layered result inside the live ALS character. Their visual difference proves that the selected blend changes part of the final pose.
The live comparison still leaves the Animation Blueprint's control signals hidden. You need to trace the overlay pose before you can explain the layer. You also need to find its controlling weight.
In this step, get ready to:
- Trace a blended-pose input to its source and follow the corresponding blend weight to its control path.
- Inspect the associated animation curves without changing them.
- Build a four-region graph map that remains readable during simulation.
Trace the pose and weight paths
A base pose supplies the movement foundation. The selected body-part blend combines that foundation with contributions from other poses.
How is the selected blend organized?
- The BasePose input supplies the source pose.
- The BlendPoses inputs contain the poses layered over that source.
- The BlendWeights inputs contain the influence of each layer.
- Switch back to the ABP_ALS_LayerLab AnimGraph from earlier.
- Select the target body-part blend you identified earlier.
- Follow one wire entering a blended-pose input backward toward its source.
- Continue through intermediate nodes until you reach its pose-selection or overlay source.
- Return to the selected body-part blend.
- Follow the corresponding blend-weight connection backward through the graph.
- Continue until you reach the variable or animation-curve path that controls the weight.
You have uncovered the layer's control pair. One path supplies the pose while the other sets its influence.
Can't trace the blend weight?
- Follow only the weight input that corresponds to your selected blended-pose input.
- Continue through helper nodes until the path reaches a named variable or animation-curve path.
- Return to the selected blend whenever two nearby wires become difficult to distinguish.
Help me trace this ALS blend-weight signal.
Inspect the associated curves
Animation curves can drive arbitrary Animation Blueprint values such as alpha inputs. The curve panel helps you connect the traced control path to names already present in ALS.
These curves already support the ALS graph. Keep this pass read-only so the existing animation data stays intact.
- Select Window in the Animation Blueprints Editor menu bar.
- Select Anim Curves.
- Compare the existing curve names with the control path you traced.
- Identify the curve names associated with the selected layer.
- Leave every curve name unchanged.
You can now name the existing signals associated with the selected layer. The original curves remain untouched.
Label the runtime pose map
Graph comments turn the discovered wires into a map you can read while debugging. Each label anchors one stage between the source pose and the final output.
- Select the source feeder nodes that belong inside the first comment box.
- Press C to create a comment box.
- Enter Base Pose in the comment header.
You should see the Base Pose comment surrounding the source region.
- Select the pose-selection or overlay-source nodes you traced.
- Press C to create another comment box.
- Enter Overlay Input in the comment header.
You should see the Overlay Input comment identify where the layered pose originates.
- Select the target body-part blend node.
- Press C to create its comment box.
- Enter Per-Bone Blend in the comment header.
You should see the Per-Bone Blend comment identify the node that combines the pose paths.
- Select the downstream nodes that carry the completed pose toward the final output.
- Press C to create the last comment box.
- Enter Final Pose in the comment header.
You should now see four labeled regions arranged along the selected layer's path.
- Click Compile in the Animation Blueprint toolbar.
- Click Save.
Before you test, which watched body region do you expect to differ when the selected overlay becomes active?
- Click Play in the Unreal Engine toolbar.
- Select the running ALS character as the Animation Blueprint debug instance.
- Repeat the movement and overlay behavior you used for the baseline.
You'll see live graph activity pass through all four labeled regions. The two Pose Watches still show distinct contributions to the final pose.
Graph activity missing?
- Confirm that Play In Editor is still running.
- Confirm that the running ALS character is selected as the Animation Blueprint debug instance.
- Check that both Pose Watches remain enabled on the original two nodes.
- Repeat the baseline movement to activate the selected overlay behavior.
Help me restore live AnimGraph debugging.
Your live graph now maps the pose source to its weight control. Next, you'll bypass the selected layer so its contribution becomes impossible to miss.
Bypass the Selected Layer
Your live Pose Watches now expose the selected pose path inside Advanced Locomotion System V4 while the character moves.
A working Animation Blueprint can still hide each stage's responsibility. A temporary bypass creates the visible shortfall you need to isolate the selected per-bone blend.
In this step, get ready to:
- Document the selected body-part blend's original connections.
- Route the source or base pose around the selected blend.
- Run the same character behavior to identify the missing layer contribution.
Capture the original connections
A reversible diagnostic needs a clear path back. The screenshot records the exact wiring before you change either connection.
This edit stays inside ABP_ALS_LayerLab. Your original ALS Animation Blueprint remains untouched.
Dense AnimGraphs can make the connection wires tricky to frame clearly.
- Return to the AnimGraph in ABP_ALS_LayerLab from earlier.
- Center the selected body-part blend in the graph editor.
- Adjust the view to include the wire feeding the blend's source or base-pose input.
- Adjust the view to include the blend's completed-output wire.
- Adjust the view to include the completed output's downstream destination.
- Press Shift-Command-4 to start a selected-area screenshot.
- Drag across the framed graph to capture the selected blend with its connections.
- Review the screenshot to confirm the original input wire is visible.
- Review the screenshot to confirm the original completed-output wire is visible.
- Review the screenshot to confirm the original downstream destination is visible.
You have a reliable restoration map now. The original route is documented before a single wire changes.
Route the base pose around the blend
The source or base pose carries the movement that exists before the selected layer contributes. Sending that pose directly to the original downstream destination creates the diagnostic bypass.
This reroute is fiddly because several pose wires can meet in a small area. Keep your screenshot visible beside Unreal Engine while you work.
- Locate the selected body-part blend shown in your screenshot.
- Select the completed-output wire between the blend and its original downstream destination.
- Disconnect the selected completed-output wire.
- Confirm that the original downstream pose input is visibly unconnected.
- Locate the source or base-pose wire shown in your screenshot.
- Reroute that source or base-pose wire directly to the empty downstream pose input.
- Confirm that the source or base pose now reaches the original downstream destination directly.
What does the bypass isolate?
The selected blend still contains its overlay logic. Its completed output no longer reaches the final pose path.
The base-pose source now feeds the downstream destination directly. Runtime movement can reveal the selected blend's contribution without changing the rest of the ALS asset.
- Confirm that the identified overlay source remains untouched.
- Confirm that the identified blend-weight path remains untouched.
- Confirm that both Pose Watches remain enabled.
- Confirm that the Base Pose, Overlay Input, Per-Bone Blend, and Final Pose comments remain in place.
Pose wire will not connect?
- Check that you are connecting the same source or base-pose output shown in your screenshot.
- Check that the destination is the pose input that originally received the selected blend's completed output.
- Zoom in before reconnecting the wire if nearby pins overlap visually.
Ask for help with the graph connection: Help me diagnose why my AnimGraph pose wire will not connect.
Compile and observe the shortfall
Compiling checks that the new pose route is valid. Running the same baseline behavior reveals what the bypass removes from the moving character.
- Save your changes to ABP_ALS_LayerLab.
- Click Compile in the Animation Blueprint toolbar.
The lab should compile successfully with the direct base-pose route. The bypass is now ready for its runtime test.
Before you press Play, do you expect the whole character to stop moving or only one body region to change?
- Press Play to start Play In Editor.
- Select the running ALS character as the Animation Blueprint's debug instance.
- Repeat the same locomotion movement used for your baseline.
- Trigger the same selected overlay or upper-body behavior.
Base locomotion should continue. The selected body-region contribution should be missing or weakened.
That deliberate gap is the proof you were looking for. You have isolated what the selected blend contributes to the final character pose.
No visible difference?
- Compare the current graph with your screenshot to confirm the selected blend's completed output no longer reaches the downstream destination.
- Confirm that the source or base pose reaches the original downstream destination directly.
- Repeat the exact movement that made your selected overlay behavior visible during the baseline test.
Ask for help isolating the missing visual change: Help me check why bypassing my selected ALS layer produces no visible difference.
The hard bypass now exposes the selected layer's job. Next, you will replace this temporary wiring with a reusable Boolean pose switch.
Add a Layer Switch
Your temporary bypass in ABP_ALS_LayerLab exposed one body-part layer inside Advanced Locomotion System V4. Base locomotion stayed active while the chosen overlay behavior weakened or disappeared.
That hard bypass removes the feature from every run. A Boolean pose switch gives your Animation Blueprint a reusable comparison between the base pose and the complete layered pose.
In this step, get ready to:
- Create the LayeringEnabled diagnostic control.
- Replace the temporary bypass with a two-route pose switch.
- Compare the switch's false state against its true state in Play In Editor.
Create the diagnostic control
The LayeringEnabled variable stores one true-or-false decision. The Blend Poses by Bool node uses that decision to choose which pose continues through the graph.
- In ABP_ALS_LayerLab, switch back to the AnimGraph from earlier.
- Create a Boolean Animation Blueprint variable named LayeringEnabled from the variable list in the left panel.
- Click Compile in the Animation Blueprint toolbar.
The new variable now appears in the variable list without a compile problem.
- Select LayeringEnabled in the variable list.
- Set its default value to true.
- Add a Blend Poses by Bool node beside the temporary bypass using the AnimGraph context menu.
- Click Compile in the Animation Blueprint toolbar.
Good progress. LayeringEnabled now defaults to true, while the new pose node is ready for both routes.
What does the Boolean switch control?
The Boolean chooses between two complete pose inputs each frame. This makes the diagnostic reversible without rebuilding graph connections for every comparison.
A default value of true keeps the complete ALS layer active during normal use.
Restore both pose routes
Your connection screenshot records the graph before the hard bypass. Use it as the wiring map for placing both pose paths behind the new switch.
- Match the selected blend's original completed-output route to the connection recorded in your screenshot.
- Match the original source or base-pose route to the connection recorded in your screenshot.
- Connect the selected blend's original completed output to True Pose on the Blend Poses by Bool node.
- Connect the original source or base-pose wire to False Pose on the Blend Poses by Bool node.
The new node now receives the complete selected layer through True Pose. It also receives the underlying source through False Pose.
- Place a getter for LayeringEnabled beside the Boolean pose node.
- Connect LayeringEnabled to the node's active Boolean input.
The switch value now controls which pose route the node passes downstream.
- Set each direction's blend time to the same short value.
Both directions now use matching transition timing, which keeps the comparison consistent.
- Break the temporary direct bypass wire between the source or base pose and the downstream destination.
- Connect the Blend Poses by Bool output to that original downstream destination.
- Click Compile in the Animation Blueprint toolbar.
The graph compiles with one downstream route controlled by LayeringEnabled.
- Click Save in the Animation Blueprint toolbar.
How does the switch route the pose?
A false value passes the original source or base pose from False Pose. A true value passes the selected blend's completed output from True Pose.
The node output feeds the same downstream destination used before the experiment. Equal blend times keep both diagnostic transitions comparable.
Seeing a compile problem?
- Check that True Pose receives the selected blend's completed output.
- Check that False Pose receives the original source or base-pose wire.
- Check that the Boolean blend output has one connection to the original downstream destination.
Help me diagnose my Blend Poses by Bool wiring in an Unreal Engine Animation Blueprint.
Test both switch states
The two Boolean values create a controlled comparison. Repeating the same baseline test keeps the selected layer route as the only intended difference.
- Select LayeringEnabled in the variable list.
- Set its default value to false.
- Click Compile in the Animation Blueprint toolbar.
Before you press Play, consider which parts of the baseline the false route will preserve.
- Click Play in the main editor toolbar.
- Select the running ALS character as the debug instance inside ABP_ALS_LayerLab.
- Repeat the baseline test from Step 1.
Base locomotion continues through the source pose. The selected body-region contribution remains missing or weakened, which reproduces the bypass shortfall.
Your existing Pose Watch visualizations continue to show the source pose beside the selected blend's completed output.
- Stop Play In Editor.
- Set the default value of LayeringEnabled to true.
- Click Compile in the Animation Blueprint toolbar.
- Click Save in the Animation Blueprint toolbar.
Before you press Play again, consider which missing body-region contribution the true route will restore.
- Click Play in the main editor toolbar.
- Select the running ALS character as the debug instance inside ABP_ALS_LayerLab.
- Repeat the baseline test from Step 1.
You will see the complete selected layer return while base locomotion continues. The watched layered result once again includes the body-region contribution that disappeared with LayeringEnabled set to false.
- Stop Play In Editor.
That is the experiment made reusable. You can now expose the base-pose shortfall or restore the complete selected layer with one Boolean.
Secret mission
Isolate a Second Animation Pass
Your body-part switch explains one layer, but ALS can modify the pose again later. Isolate an additive-leaning or Foot IK pass with its own switch, then prove each contribution can be removed independently.
Clean Up Your Resources
Clean Up Your Resources
Your Advanced Locomotion System V4 layer lab stays inside the existing local project without cloud charges or additional ongoing costs. You can keep it assigned, pause your work, or remove it entirely.
Resources you used:
- The ABP_ALS_LayerLab Animation Blueprint duplicate.
- The LayeringEnabled diagnostic switch.
- The SecondaryPassEnabled diagnostic switch.
- The four pose-pipeline graph comments.
- The Pose Watches saved throughout the lab graph.
- The playable ALS character's temporary Anim Class assignment.
Keep everything running
No action is needed. Choose this option if you want the complete layer lab ready for more diagnostics.
- Leave ABP_ALS_LayerLab assigned as the playable ALS character's Anim Class.
- Keep LayeringEnabled set to true.
- Keep SecondaryPassEnabled set to true.
Pause - I'll come back to this later
Pausing preserves the lab without leaving Unreal Engine open. Your diagnostic switches remain ready for another session.
- Confirm that LayeringEnabled has a default value of true.
- Confirm that SecondaryPassEnabled has a default value of true.
- Save the ALS project.
- Close Unreal Engine.
Delete - I don't want to use this again
Deleting the lab is permanent. The playable character remains safe after you restore its original Animation Blueprint.
Keep Asset Cleanup in Unreal Engine
Unreal Engine tracks asset references through the Content Browser. Moving or deleting .uasset files in Finder can break the project or cause data loss.
- Open the playable ALS character Blueprint from earlier.
- Select its Skeletal Mesh Component.
- Set Anim Class to the original Animation Blueprint you identified before creating ABP_ALS_LayerLab.
- Click Compile.
- Click Save.
- Return to the Content Browser from earlier.
- Find ABP_ALS_LayerLab.
- Right-click ABP_ALS_LayerLab.
- Select Delete.
- Confirm the deletion in the dialog.
- Confirm that ABP_ALS_LayerLab no longer appears in the Content Browser.
Nice Work!
Nice Work!
Excellent work! Your ABP_ALS_LayerLab now turns the Advanced Locomotion System V4 Animation Blueprint into a live layering lab. You can expose each animation contribution with its own switch before restoring the complete ALS result.
You've learned how to:
- Protected the original asset with a safe Animation Blueprint duplicate assigned to the playable ALS character.
- Traced the live pose pipeline with Pose Watches from Base Pose through Overlay Input and Per-Bone Blend to Final Pose.
- Built a reversible layer diagnostic with LayeringEnabled to remove the selected contribution before restoring it.
- Secret Mission: Isolated your chosen additive-leaning or Foot IK stage with SecondaryPassEnabled to diagnose its contribution independently.
Ready to quiz yourself?