It seems that Epic prefers telling developers how to use animation blueprint in Unreal Engine 4. But me, as a programmer, still needs to get to know what the animation system actually works underlying.
This is the where we setup our skeletal mesh in UE4. We use this component to handle
game-play stuff. But it seems that UE4 want to decoupling game-play and animation system, as a result, you cannot write bone transform using this component.
You may not be very familiar with this class. But you must be very familiar with its child classes —
We can choose an
Anim Class for a
USkeletalMeshComponent. As we just mentioned that UE4 want to decoupling game-play and animation system. And since
USkeletalMeshComponent focus on game-play stuff, it needs
UAnimInstance to handle animation stuff.
UAnimInstance* USkeletalMeshComponent::GetAnimInstance() const
AnimBlueprint always inherits from
UAnimInstance. I am pretty sure that you have played with
Blueprint Update Animation event… We always setup our animation data in this event.
This event is called in
UAnimInstance::UpdateAnimation() function, which is called in
USkeletalMeshComponent::TickPose(), which is called in
By going through
UAnimInstance::UpdateAnimation function, it’s easy to know what is happening in an
PreUpdatefunction of its
AnimInstanceProxy. And an
PreUpdateto update its game-play data.
- Then montages would be updated. Montage needs to be updated BEFORE node update or Native Update, so that node knows where montage is.
- Next it is time to gather game-play data for the
AnimInstance. For C++ stuff,
NativeUpdateAnimationis called. For Blueprint,
BlueprintUpdateAnimationis called. And this is exactly
Update Eventin Anim Blueprint.
PostUpdateAnimationis called. At this point, notifies are handled.
Seems simple, isn’t it?
FAnimInstanceProxy is :
the proxy object passed around during animation tree update in lieu of a
This class contains almost everything you need for your
AnimGraph. You can handle bones, notifies, state machines, pose snapshot, etc, in this struct.
FAnimInstanceProxy has the access to the root node of the
AnimGraph. UE4 does a recursive update or evaluation starting from the root node.