Download

How can animation blueprints be shared among different skeletons?

Using retargeted animations will copy animation resources and animation blueprints, which is not reliable because when I modify the source animation blueprint, the copied version will not be modified synchronously. It would be nice if the copied animation blueprint could use different skeletons and inherit the source animation blueprint, but I don’t know how to do it.

Now I’ve learned how to do these things. The reply has some questions about what I mean. I mean, animbp parent class uses skeleton A, subclass uses skeleton B, A and B may be completely different skeletons, for example, A is a human, B is a spider. They use the same logic, but the animation resources played vary with the skeleton. In subclass, I just need to replace each animation resource. Editing animation logic in the parent class will be synchronized to the subclass. Now I’ve done it.
Parent AnimBPClass:

AnimBP Subclass:

However, when UE4 started to design, epic did not seem to expect us to do so, so the support for this design was not good.I gave feedback and hope that the official modification function can support us to do as shown in the figure below, so that I can modify the bone name of blend in subclass.

Do you mean the different skeletons have differently-named bones, or are they different instances of the same skeleton (e.g. the default unreal mannequin, like when you have several marketplace packs in your project).

If it is the latter, I delete the skeleton from one pack, and then the engine asks me to assign the animations to a new skeleton, and I assign it the skeleton of the other pack’s animations.

I think OP is asking about how to use different skeletons without having to make new animBPs for each one.

I haven’t gotten too into this myself but I think probably the thing you need to do is actually make sure you are using the same skeleton for every character you animate. But, let’s say you have a male and female version of the character that share the same skeleton that need to use different animations, you would do all your logic in a parent animBP for, say, the male and then create a child animBP of this for your female and use animation blueprint overrides to change the animations you want to use the female set.

In short, as far as I know, you can only use one skeleton per animBP so make all your characters that need to share an animBP with the same skeleton.

The skeleton is assigned per UAnimInstance class. (which your blueprint is derived from) If you want to change the skeleton asset association, you need to create a new class. This means that you have to make a main animation blueprint and create a child blueprint from it. (right click animbp and Create child blueprint class) Then change the skeleton association in the child blueprint Class Settings. (close the blueprint and open it again after doing this)

You will run into a problem after doing this, which is that the animation overrides are bugged and it will not allow you to select animations from your new skeleton. The only way to get around this is to create sequence variables in your main blueprint for every playback node, then update your variable assignments in the child blueprint. The only downside here is that some nodes, like random sequence player, does not support variable inputs.

possibly the lack of fast track, and a few other issues as well.

@OP
Its probably easier to right click the animation bp and choose the re-target option.
It will create a copy of everything tied to the skeleton you choose.
You can also overwrite existing files with this process.

I agree, its not as nice as being able to change skeleton on the fly, but every animation needs to be tracked to the correct skeleton still.

I think there is/has been some work put in to remove this limitation, but the reality is unless you specifically tag things to a skeleton the engine doesn’t know how to operate the tracks.

With identical skeletons, the proper way to create a copy has been explained (even above) there’s a full topic within this section of the forum that details the step by step process.
Not sure if this supports all animation features, fast track, etc. But to make a duplicate in a pinch it has worked well enough for me in the past.
going forward I’d probably refrain from it and make hard copies :stuck_out_tongue:

Fast path have never been affected on our end when using pure variable inputs, which makes sense as it’s just a copy of a value or ref/address. The child class is using the same anim graph as its parent class, so it seems far fetched for it to be affected at all.

I updated my post to explain more specifically. Now I have a general idea of how to implement it, but UE4 still limits our development.

I got a lot of done in child BPs when putting al sequences and blend spaces with pins into their player (expose to pin) and then change class defaults and skeleton in the child. But I do not get it done for Aim Offset. Even if I am able to expose the BlendSpace Pin of AimOffset to a variable and change it in the child, it seems AimOffset Node is hard-bound to skeleton. Someone has a solution for using AimOffset in child Anim BP with different skeletons?
Known solution is not working for me. UE4.26.2

EDIT: Sorry, seems to be simply a problem in the Aim Offset of my child Anim BP. Not sure what it was in detail, but Aim offset in child Anim bp was not ready, other value name, etc. When I changed child AimOffset that it has correct anims, and also same value as aimoffset of parent, all runs fine in child anim bp,