Is there a way to create child Animation Blueprint with another skeleton?

I have an asset pack with three characters, each with unique Skeleton.
Is there a way to create base ABP to share Event and Anim graphs and just override a couple of animations in child ABPs?
Documentations says it’s not possible, but maybe I don’t understand something and there’s the way to do it?
Or copy-pasting same variables, BP logic and animation graph is the way to go?

What you can do is create another ABP for each skeleton
and add Retarget pose from mesh to the anim graph.

And you’ll have a character with an invisible base mesh
with always refresh bones turned on under Optimization.

Add a 2nd skeletal mesh, set to use its retarget ABP.
It will now follow the movement of the invisible base mesh.

This is how Lyra does it (and I believe Fortnite).

You can then also create children of the base ABP with variations. All your animations are going to be for the base skeleton. Each skeleton needs a retargeter as well, since you’re retargeting. (This would be step 1.)

The alternative is regular retargeting with animations and blueprints for each skeleton.

In other words, different skeletons don’t know how to communicate without retargeting. A child ABP can’t have a different skeleton. Therefore your options are regular retarget (separate ABP, separate animations for each skeleton) or ABP retarget (one ABP, one animation set).

1 Like

Fortnite was just using regular runtime retargeting last I looked into things (years ago now).

Basically the animations are shared, the skeletons use their retarget settings to conform to the animation.

These tutorials explain more

In reality, the solution is not ideal.
It will mess up most of the advanced systems like IK, which is proably why Lyra does it different.

Animation blueprints can contain any animation btw.
When an invalid skeleton is hit, all you get is a T/A pose as a result. Possibly either a warning or a crash.
Same for montages, where a wrong skeleton is the leading cause of T/A pose results.

If you spend some time mucking about within the source code, you could just get the bone data to play on similarly named bones.
Data is data. So long as you have it, you can code up anything to follow the data however you want.
Ofc, that drifts from reusability or adhering to a standard, which is not at all ideal for engines…

1 Like

I read your answer and checked different ways of retargeting. If I understood you and other sources correctly, retargeting is used for applying same animations to different meshes i.e One BP/Anim graph and one animation set applied to different models.

But I have different animations for each character, i.e I need One BP/Anim graph, different models where each model uses its own animations.

BTW, while writing this message I probably found the solution for that and it’s working:

I simply changed skeleton in child ABP and found that I need to use Sequence/BlendSpace created without dragging animation as node, and now… It’s working? I have Human ABP and child Orc ABP, they both share functionality, but have different animations with different skeletons, all without retargeting. And it’s actually working. Was it that simple?
Why docs says it’s not allowed? Or maybe I misunderstood what it was about?


It’s possible to share event graph and functions, but not anim graph. Create blueprint as a child of AnimInstance class - for example, BP_MyAnimInstance. Implement shared events and functions in it. Then in any animation blueprint select BP_MyAnimInstance as a parent class instead of AnimInstance.

Can you show graph pics of these 2 statements/settings? (Im not in 5.2 yet, so I need to know what to look for.) Ty