I Have a project with too many animation cases for a single animation blueprint to be able to hold them all. So I planned to use different animation blueprints entirely for different cases (Such as all the animations that may be associated with riding a mount). But When switching between animation blueprints using the Set AnimInstance Class, there is a single frame where the character is returned to T-pose before the animation blueprint actually takes over.
Notes
I have already tested this using nothing but the Unreal Engine sample content, the Owen Character and the Jumping Jacks Animation (See Graph below)
It seems no matter what I do, there is always a skip back to T-pose for what seems like only a single frame any time I use the Set AnimInstance Class Node.
Questions
Is this expected behavior? Why?
Is there any way around this so that I can set a new animBP and not get the sudden jerk to T-pose?
Is there some setting I’m missing somewhere that would force the AnimBP to be ‘ready’ before actually rendering the frame?
Is it possible to ‘pre-warm’ an anim instance before setting it to a character to avoid the T-pose?
I’m not even sure if this is something I’m doing wrong, a limitation with the way the engine works or an outright bug.
Thanks in advance for any help on this matter!
—Edited for clarity and narrowing down of the actual issue I’m looking for help with
I’m having the exact same issue. This was not happening in 4.11 but when I upgraded to 4.19 I’m now getting this glitch without changing anything. I didn’t notice it until I had upgraded through all version from 4.11 to 4.19 so I’m not sure which version this bug occurs in. It NEVER happened in 4.11, but happens EVERY TIME in 4.19. I’m trying to find a work around but that 1 Tpose frame will not go away when setting the anim instance no matter what I do. This is either a bug or there is some toggle that now needs to be checked or something. It may be an issue with the animation and skeletons themselves caused by updating a project to new versions of UE4 because some of my other animations are acting wonky after upgrading versions. I’m thinking about going back to 4.15 because that is that last version that had a feature I absolutely need…
I personally resolved this problem by making sure the “Set Anim Instance Class” node was being fired by an input event, instead of an animation notify, which is what I was originally doing. However, I feel that was a weak band-aid solution that would break easily.
However
I haven’t revisited this personally as I’ve had other priorities on my projects lately, but I will be looking into the Actor Ticking Documentation because I believe the T-pose for a frame is the result of the SkeletalMeshComponent updating before the AnimInstance has a pose to give it. Someone can correct me if I’m wrong, but maybe it’ll give a direction for people with a similar issue to look.
For anyone looking, DevsWeirdThings I think is right in that the SkeletalMesh is updating before the pose is set.
I got around this by calling USkeletalMeshComponent::TickAnimation inside C++, which will manually evaluate the animation in the future using a delta time that you specify on the skeletal mesh, effectively bypassing the one T-Frame pose.