Cached Poses and Layered Blend Per Bone¶
Save Cached Pose lets one expensive pose graph be reused. Layered Blend Per Bone lets one pose replace only part of another pose. Together they are the standard way to play upper-body actions over locomotion without duplicating the locomotion graph.
At a glance
Use this for: upper-body attacks over running, aim layers, reloads over locomotion, additive overlays, pose reuse - Main nodes: Save Cached Pose, Use Cached Pose, Layered Blend Per Bone - Main inputs: Base Pose, Blend Poses, blend weights, branch filters or blend masks - Can fail by: wrong branch bone/depth, slot order, stale cached graph, curve/root-motion settings, or a pose path that never reaches Output Pose - Official docs: Using Layered Animations, Animation Blueprint Blend Nodes, and FAnimNode_LayeredBoneBlend
The one-minute version¶
- Save Cached Pose evaluates a pose branch once for the current animation update/evaluation and gives it a name.
- Use Cached Pose reads that saved pose somewhere else in the AnimGraph. It is reuse inside the animation graph, not saved-game storage.
- Layered Blend Per Bone takes a base pose and one or more blend poses, then applies each blend pose only to selected bones and their children.
- The classic pattern is: cache locomotion, feed it as the base pose, play an upper-body montage/aim pose as the blend pose, and start the branch at a spine bone.
- Branch filters decide which bone chain a layer affects. Blend depth decides how far and how smoothly influence spreads down that chain.
- Slot order matters. If the Slot node is not in the pose branch that reaches the layer/output, the montage can play but not visibly affect the character.
What Save Cached Pose stores¶
A cached pose is the result of an AnimGraph pose branch for this animation update/evaluation.
Locomotion State Machine
-> Save Cached Pose "LocomotionPose"
Use Cached Pose "LocomotionPose"
-> output the same evaluated locomotion pose elsewhere
It is not:
- a screenshot of the character;
- a persistent pose saved across level travel;
- a gameplay save;
- a guarantee that the pose never updates again.
It is a graph reuse tool. If three later nodes need the locomotion result, you do not copy the whole state machine three times.
Why reuse cached locomotion¶
Without a cached pose, beginners often duplicate the same state machine branch:
Locomotion State Machine -> Output Pose
Locomotion State Machine -> Aim Offset -> Output Pose
Locomotion State Machine -> UpperBodyBlend -> Output Pose
That is hard to debug because there are now several "same" locomotion graphs that can drift. Cache it once:
Locomotion State Machine
-> Save Cached Pose "Locomotion"
Use Cached Pose "Locomotion" -> lower-body/base path
Use Cached Pose "Locomotion" -> aim/layer path
Use Cached Pose "Locomotion" -> montage slot source
The best overall path is to keep one locomotion owner. The quick path is to copy the state machine beside each new action layer; the concrete cost is that one transition fix or Blend Space change must be repeated in every duplicate branch, and one missed copy creates inconsistent animation.
What Layered Blend Per Bone does¶
The node blends one or more poses onto only part of the skeleton.
Base Pose:
cached locomotion - full body running
Blend Pose 0:
upper-body attack montage pose
Branch Filter:
Bone = spine_01
Blend Depth = 4
Result:
legs keep running from base pose
spine/arms/head receive attack pose
The exact bone name depends on your skeleton. spine_01 is a common example,
not a universal truth. Use the Skeleton Tree and preview pose debugging to pick
the first bone that should be controlled by the layer.
Branch filters and blend depth¶
A branch filter says where the layer starts.
Branch Filter:
Bone Name = spine_01
Blend Depth = 3
Beginner meaning:
| Setting | Meaning |
|---|---|
| Bone Name | The skeleton bone where this layer begins. |
| Blend Depth | How influence spreads through child bones. Small depths can create a sharper boundary; larger depths include more of the chain. |
| Blend Weight | How strongly this blend pose contributes. 0 means base pose; 1 means full layer for affected bones. |
If your attack moves the legs, the branch starts too low or includes too much. If your arms do not move, the branch starts too high, the wrong skeleton bone name is used, or the layer pose/slot is not connected.
Mesh-space rotation blend and curves¶
Layering is not only bone transforms. A few settings change how the blended result feels:
| Setting | Beginner use |
|---|---|
| Mesh Space Rotation Blend | Can make upper-body rotations blend in a steadier world/mesh-facing way, often useful for aiming/turning layers. |
| Curve Blend Option | Decides how animation curves from different poses combine. Important when curves drive facial, gameplay, material, or additive behavior. |
| Blend Root Motion Based on Root Bone | Controls how root motion contribution is considered for a per-bone layer. Be deliberate around root-motion montages. |
| LOD Threshold | Lets expensive layers stop evaluating at distant levels of detail. |
Do not turn every checkbox on to "fix" a pose. Change one setting, preview the effect, and write down why the project needs it.
Upper-body montage over locomotion¶
A common graph shape:
Locomotion State Machine
-> Save Cached Pose "Locomotion"
Use Cached Pose "Locomotion"
-> Slot "UpperBody"
-> Layered Blend Per Bone
Base Pose = Use Cached Pose "Locomotion"
Blend Pose 0 = Slot output
Branch Filter = spine_01, depth 4
-> Output Pose
Another readable layout is:
Base = Use Cached Pose "Locomotion"
Upper = Use Cached Pose "Locomotion" -> Slot "UpperBody"
Layered Blend Per Bone(Base, Upper, spine_01)
The important part is not the exact node layout. The important part is that the slot pose and base pose both reach the layered blend that reaches Output Pose.
When it fails, and what failure looks like¶
| Symptom | Likely cause |
|---|---|
| Montage plays but pose does not change | Slot is not in the final pose path, or the montage uses a different slot name. |
| Attack moves the legs | Branch filter starts too low, includes root/pelvis, or root motion is driving the body. |
| Arms stay in locomotion | Wrong branch bone, blend weight is zero, slot not active, or layer pose never reaches the blend. |
| Upper body twists badly | Skeleton bone choice, mesh-space rotation setting, additive/base pose mismatch, or bad animation asset. |
| Footsteps/notifies duplicate | Locomotion graph was copied instead of cached, or multiple pose branches evaluate notify-bearing samples. |
| Curve-driven effects disappear | Curve blend option ignores or overrides the curve you expected. |
| Works in preview, not in play | Live AnimBP variables, montage slot, or active mesh Anim Class differs from preview. |
Debug by temporarily setting the layer weight to 1, using an obvious test
animation, and checking the named slot/branch bone in the live AnimBP instance.
What cached poses and layered blends do not do¶
- Cached poses do not store gameplay state.
- Cached poses do not make an animation graph free; they avoid repeated pose branch work and duplication.
- Layered Blend Per Bone does not create a montage slot.
- Layered Blend Per Bone does not know which skeleton bone should be "upper body" for your character.
- Layering does not fix incompatible animations or additive/base-pose mismatch.
- Layering does not replicate animation requests.
- A cached locomotion pose does not replace the state machine that produced it.
Lookalikes - which one do I want?¶
| Tool | Use when | Watch out |
|---|---|---|
| Save/Use Cached Pose | One pose branch should be reused in the AnimGraph. | Reuse only; not persistent storage. |
| Layered Blend Per Bone | One pose should affect selected bone chains over another pose. | Branch bone/depth and slot order are the common traps. |
| Slot node | Montages need an insertion point in the AnimGraph. | Slot alone is full source/override unless you layer it deliberately. |
| Blend by Bool/Enum | Whole-pose choice depends on a small state value. | Not bone-specific. |
| Aim Offset | Additive aim poses should layer over a base pose. | Needs additive-compatible samples and yaw/pitch inputs. |
| State Machine | Long-running animation modes need transitions. | Not for reusing the same pose branch in several places. |
Rule of thumb: cache locomotion once, layer action/aim poses on top of the cached base, and debug slot names plus branch bones before rewriting the graph.
Going deeper¶
- Animation State Machines and transition rules - the locomotion source most pages cache.
- Animation Montages / Play Montage - the action asset often feeding the slot/layer.
- Montage slots layered over locomotion - slot groups and montage slot placement.
- Aim Offsets and look/aim variables - additive aiming as another layered pose.
- Animation Notifies and Notify States - notifies that may fire from the poses you layer.
- Official docs: Using Layered Animations, Animation Blueprint Blend Nodes, FAnimNode_LayeredBoneBlend, and FAnimNode_SaveCachedPose.
- Engine source (requires engine access - we do not reproduce it here):
cached pose runtime nodes are declared in
Engine/Source/Runtime/Engine/Classes/Animation/AnimNode_SaveCachedPose.handAnimNode_UseCachedPose.h, with implementations inEngine/Source/Runtime/Engine/Private/Animation/AnimNode_SaveCachedPose.cppandAnimNode_UseCachedPose.cpp; layered bone blend is declared inEngine/Source/Runtime/AnimGraphRuntime/Public/AnimNodes/AnimNode_LayeredBoneBlend.hand implemented in the matchingAnimGraphRuntimeprivate source.