How to reuse animation blueprint across different characters

So I have several characters pretty much using the same animation blueprint (same logic, state machine etc.) but some of them have slightly different animation sequences. In UE3, you can use the same AnimTree with different AnimSet, which can contain specific animations for specific characters, while sharing the same AnimTree. Is there some similar functionality in UE4?

Also what happens if the characters have a different skeletons? How do I reuse the same animation blueprint without having to make copies of them (I know there’s animation re-targeting, but I would like to use the same animation blueprint), or unless I make changes to the original blueprint and it will auto propagate the changes to the retargetted blueprint.

If you right click on your original Anim Blueprint (ABP) in the content browser, there should be an option that says “Create blueprint based on this”. Select this option to create a new ABP.

Open the new ABP, and go to Window > Asset Override Editor. This will allow you to swap individual animation assets while keeping the functionality of the original ABP. Also, if you add functionality to the original ABP, that new stuff will show up in the child ABP automatically.

1 Like

Cool thanks for pointing that out. Although I couldn’t figure out how to use that with a different . I created a child ABP and retargeted it to a different , then when I try to override it only allows me to select the animations using the original , not the target. Is there any way to use this method across different skeletons. For example, with characters from Maximo pack, each character has a different and bunch of animations. I would like to make one ABP and use it for all of them, is there a way to set that up?

I’m not sure if it is possible to do this with different skeletons. For that you may want to use retargeting.

I would be very interested in the answer to that question. In my game, each character features a unique and a standard set of dedicated animations. The logic triggering these animations is common to all characters, therefore, not being able to share the animation state machine between animation blueprints will result in a lot of frustrating and unnecessary maintenance. Hopefully there is a solution.

Have there been any updates to this post? I am having the same issue. I am not sure how to go about this, but I have multiple characters that all have their own animations but they share the same functionality. Does each character need their own animation blueprint? How does this work?

Bumping this as it’s currently a hot topic at our studio as well. Our enemies all have slightly different skeletons but have the same animation logic and we’d like to be able to re-use the EventGraph in the Anim Blueprint across all enemies instead of duplicating the functionality once per enemy.

I am in the same boat. I am trying to unify a system which had 6 different animation blueprints all with the same functionality and just different skeletons. I didn’t like the code maintenance challenges implicit in this, so I have unified them into one parent animation blueprint and then a set of child blueprints which use the same logic but need their own skeletal meshes and animation overrides.

I see where the anim overrides can be set, but I can’t access the animations for this character, because the override window is only showing animations compatible with the I have inherited. I need to override the , and I can’t see where or how to do that.

This is possible, right? Otherwise what would be the point of inheriting Animation Blueprints?

1 Like

Same here. Different skeletons with their own but otherwise same animations and animation blueprint logic would be the same. It would be useful if any kind of system how to “copy” anim bp to different would be robust enough for cases when everything is same, but maybe the other is missing one or two animations - so that user could afterwards remove or edit the states with “missing” animations.

Sharing animation blueprints or state machines between different skeletons is something I’m very interested in as well. I would love to see this feature added in a future release of UE4.

i dont understand how to reuse animation logic between different characters too…

Ran into this problem too. Found a workaround for this, it’s a gross one, but it works! You basically create a duplicate of your new asset that is mapped to the original rig, add the duplicate to the override, then delete the asset and “replace reference” with your new animation that you want to use. This is basically forcing UE4 to populate your list with the asset used on a different .

  1. Go to the asset you want to use that isn’t showing up in your Override list. Right click > Retarget Anim Assets > Duplicate Anim Assets and Retarget

  2. In the popup window, uncheck “Show Only Compatible Skeletons” and select the original of the parent anim graph.

  3. Go to your overrides list and select the new asset that now shows up in the list and save everything.

  4. Go to the duplicate asset and Delete it.

  5. On the Delete popup, click “Replace References” in the bottom left corner (if it is not showing up there that means you haven’t saved the file yet).

  6. Delete any and all extra files that were created upon retargetting the original asset.

  7. Repeat for every single anim asset until the end of time.

Can this please be fixed guys? It would help a lot.

1 Like
  • I previously posted an answer briefly stating it was possible to use the Parent/Child Blueprints among different skeletons if they had been retargeted. This is not correct. In order to take advantage of the Parent/Child Blueprint feature, both the Parent and Child must use the same .

Williams suggests:

combine skeletons where possible. One can support additional bones for each skeletal mesh for things like accessories (hair, cloth, etc). Combine bipeds and quadrapeds where you can, but anything else is going to require a separate and AnimBP

I may have a way to do this without even needing different ABP. This is done by playing animations via Pins and storing the animations to play on your character.

  1. Create reference variables containing the Animation Sequence (or Blendspace) on your character BP.

  2. In the ABP’s Initialize, grab all of the animation variables from your character and store them in the ABP

  3. On your animation graph, you need to drag an initial animation (can be anything) onto the grid to create the node.

  4. Once you have the node, in the Setting check the box (As pin) Sequence. This will allow you to pass an anim stored in a variable into the node.
    NOTE: The node will still retain the name of the original animation, but that shouldn’t be a problem. I think you can still reference the node by its original name to check the anims ration/duration, and it will use the passed in sequence.

  5. Link the appropriate animation variable into the new Sequence pin.

BP

Doesn’t this only work if they have the same ?

I am curious. This is marked as resolved, but what is the actual solution? Is it possible to elevate this to a feature request then? Also I want to know the architectural design behind it. Why is it easily achieved in UE3 but not possible in UE4?

The actual solution is at the top selected answer: Combine/Consolidate to one and then you can make one ABP and use it for all of them.

For instance, if you are using the Mixamo Pack, you assign all joints in all characters to be controlled by a common humanoid/biped “.” *This “” is simply a list that assigns how each bone is going to be controlled by the AnimBlueprint so that, for instance, if a joint is called “lower arm” in one and “forearm” in another, they both get the same information from the AnimBlueprint regardless of their original names.

Once you have all bones conforming to one (ie. a list of bones with a common naming convention), you can then retarget all animations to this common and apply these animations to different characters regardless of their size.

Since this is too long a process to describe in detail here, please review these two document pages on the subject:

[Animation Retargeting (Same )][1]

[Animation Retargeting (Different Skeletons)][2]

ALSO: Opening the Content Examples: Animation Map in UE4.11 or later should prove useful in understanding how one can be used for multiple/different sized characters:

*Understanding this concept is key to understanding this entire workflow solution.

That’s all well and good, but how do you share Animation Blueprint logic when the skeletons are nothing alike? It’s not just about size of the characters, not everything is a humanoid.

It just seems primitive that I have to copy and paste the entire content of an Animation Blueprint just because the skeletons differ (e.g. one being a jumping mushroom and the other being a six headed winged hydra). Especially when none of the logic in the Blueprint actually directly depends on a specific .

In that case, why not make a copy of the AnimBlueprint from character A and modify the copy with info from Character B?

The OP specifically mentioned that: “How do I reuse the same animation blueprint without having to make copies of them (I know there’s animation re-targeting, but I would like to use the same animation blueprint), or unless I make changes to the original blueprint and it will auto propagate the changes to the retargetted blueprint.”

Making a duplicate is only marginally more elegant than copy and paste of the content. If you want to add functionality, you have to add it to every single one of the blueprints or duplicate and retarget them from scratch.

What if you have 20 different monsters all having a completely unique but otherwise identical animation logic?

It’s not like it can’t be done at all, but certainly it would be nice to have a better way of doing it.