I’m writing this short guide to give people some direction as to how you can use Pose Snapshots to create a smooth transition between two animation blueprints. I’m pretty sure Epic isn’t really intending for people to be switching between animation blueprints like this, but in my case I had to make it work based on how the systems I was working with had been set up.
TLDR; Save a pose snapshot before switching animation blueprints, upon evaluating the new animation blueprint for the first time, perform a blend per bone from the snapshot pose to the default pose of the new animation blueprint.
(Project Zip: https://drive.google.com/file/d/1MuQ…ew?usp=sharing)
For the purposes of displaying the smooth transition I set up a timed event to repeatedly switch between two animation blueprints.
The order of operations here is very important.
(Create a variable of type Pose Snapshot. Call snapshot pose on our skeletal mesh, and then switch our animation blueprint class)
Animation Blueprint, Event Graph:
We’re going to be referencing the pose snapshot on our actor blueprint, so for best practices we store a reference to the actor blueprint for use in the AnimGraph later. We must do this on Initialize Animation rather than Begin Play, because we’re accessing this variable in our AnimGraph, and BeginPlay happens after our AnimGraph evaluates.
(Create a variable to store a reference to our actor blueprint)
In order to trigger a blend when we switch animation blueprints, we need to set a boolean variable on post evaluate animation. The reason for needing to do this on post evaluate animation in order for the blend to be processed correctly, we need it to initialise and process once with the blend by bool in the initial state.
(Create a boolean variable, to be used in a blend)
Animation Blueprint, Anim Graph:
The setup in out animation graph is relatively simple. We’re setting our blueprint up to allow us to perform a blend between our snapshot pose and whatever our default pose of the animation. For this example i’m using the ThirdPersonJump_Start animation as my default pose to showcase the blend.
(Create a blend per bool, set your blend times to the length of time you wish for the blend into this animation blueprint to be. Hook up your boolean variable, and create a PoseSnapshot node and plug your actor blueprint’s Pose Snapshot variable into it. In order to expose the pin that lets you plug your variable in here you need to set the PoseSnapshot node Mode to Snapshot Pin, and check the box to expose the Snapshot information)
Feel free to let me know if there’s anything that needs further clarification. Good luck.