Animation Blueprint code with different skeletons

Nope, unfortunately still cant get it to work even with a full editor restart. Full editor restart does show the correct preview mesh but still cant select the new skeletons animations. Cant even manually drag them from the content browser onto the override animation.

2 Likes

So, coming back to this, I had time to test it with a new project today. I have to admit that it doesn’t work.

However, we do have one project with a child AnimBP with the steps as I described, and it works there with the existing child AnimBP, but not with new child AnimBPs…? The project was created with 4.24.0 I think and maybe it broke with .1 or later subrevisions.

As a workaround, you can expose the Animations as variables in the parent AnimBP:

ExpostAnimationAsVariable.png
Then create a child AnimBP and change the Skeleton in the Class Settings as described in my first post, but instead of using the (broken?!) Asset Override Editor change the value of the variables.
It is one step more, but at least you don’t have to remake the whole AnimBP.

Let me know if this workaround works for you, please.

2 Likes

Did we file a bug for this yet?

Because this pretty much just seems like an UI Bug, right? That it just doesn’t allow us to insert the correct animations, but if the animations are already there (e.g., because they got there in an old version) it works just fine=

Is there a workaround to deactivate the checking wheter animation data is “correct” in the UI?

Edit: Alright guys, I filed a bug report.

I love you, this just saved me dozens hours of work. Thank you.

I’m still amazed this isn’t a straightforward common feature from UE, having one blueprint with all animation logic as parent and multiple children with different skeletons and respective animations should be a given.

I don’t understand why they don’t let us make animation classes without a skeleton associated to it, and even if the UI worked on newer UE versions, changing mesh in class defaults and then using that override animation window still seems rather obscure to me.

[USER=“159669”]Harth Tuwist[/USER] thanks for filing the bug report. Can you post the ID if you got any? Then we can upvote it.

@Kenedos glad this helps :cool: well, this would be the official way and it’s been around for a while as far as I can remember. Only few people seem to know about this, though. And that it is broken right now is really unfortunate.

Wow, just needed it today and here’s some fresh answers haha. It worked fine!

For those who are new to Unreal like me, here’s some notes about the workaround:

TARGET SKELETON may be hidden in ClassSettings->ClassOptions, just click the arrow, or search it:


https://forums.unrealengine.com/core/image/gif;base64

In the child AnimBP, click CLASS DEFAULTS to change the variables

Thank you guys for keeping up this topic.
Thanks Ben_Cykyria and MostHost LA for the workaround.

I filed it yesterday and haven’t heard back anything yet. In my experience, this stuff takes a couple of days. I will post here again after a ticket is created and give you the ID. I just hope they don’t skip creating a ticket altogether, because there is a “workaround” with the variables as you mentioned it…

Try 3 to 6 weeks. They are still backed up from before, and .25 gave them a lot more.

This thread has been open talking about this bug for 4 years. I just started developing on unreal engine 10 days ago, and this 4 year thread only just resulted in a bug report yesterday. My timing is great :slight_smile:

If only it was 3-6 weeks earlier I would not be posting this right now :slight_smile:

It is only a bug since post 4.24.

There is a feature that did exactly what we want since forever (although it is somewhat hidden, but I think for comprehensible reasons), and it just broke very recently. But yes, it also it’s kinda frustrating to see that it just broke directly after finding out about it.

Oh dear, I’ve hit the same wall. Can replace the target skeleton but it won’t accepted the listed related animations after compile, save, close, open, etc…

1 Like

Wow I may have to try this. I was imagining I’d have to specify animations in the child as variables anyway. If you simply place the animations in the blueprint it’s hardcoded but as variables they should be able to change dynamically.

I found a relatively easy way around overriding animations from within the base animation blueprint.

You’ll need to create a derived UDataAsset class to contain all your animation references. This example code just contains a single reference to an idle animation for example purposes.



UCLASS()

**class** WBSAMPLE_API UAnimationPayloadAsset : **public** UDataAsset
{
GENERATED_BODY()

**public**:

    UPROPERTY(Category = "BaseIdle", EditAnywhere, BlueprintReadWrite)
    UAnimSequence* BaseIdle;
}


Then from inside the AnimGraph extract the referenced animation :


https://forums.unrealengine.com/core/image/gif;base64

From here :

  1. Create one AnimationPayloadAsset per unique Skeleton.
  2. In the base Animation Blueprint Event Graph, set a variable (coming from your pawn) that references an Animation Payload Asset.
  3. Inside the AnimGraph logic, set the Animation Sequence to play from the corresponding animation within the Animation Payload.

My example above has a CharacterPayload (CharacterPayloadAsset) which contains a reference to a specific AnimationPayload (AnimationPayloadAsset) asset.

For those of you who don’t code or have a coder to help create the above class, it might be easier for you to use a Blueprint Structure that contains references to all your animations. Then create a data table from this structure in which each row represents a unique skeleton in your project.

Same for me and I think many will stumble across this. I have really similar characters in a game, but bones differ a bit. The fact that bones differ, is not a problem in general, because we can use references to animations in AnimBP. So different skeletons with their own animations are in general no problem. Of course all most important bones and all bones needed for montages (layered animations/blends) are the same. Just some bones more or less which are used in referenced animations.
But it is a pain in the **** to have the need of manually synchronize all changes in Anim BP of different skeletons because of the fact that a AnimBP need a hard referenced skeleton.
There should be no problem to use such a system ob AnimBP for different skeletons.

I see really noproblem here. That’s no argument. If you need layered animations and use slots which are looking for bones, you can simple make branches for different bones (blend poses by bool) or divide you skeleton to types and use layered animations (blend poses by Enmum). You can do all that already in Anim BP now.
That would be really no problem. And as in my example, most bones are the same and the changes are more related to bones used in animations, not in the anim BP. But even when it would be, it would be no problem.

@Ben_Cykyria:
Nice to read that! Never read about it before. I will give it a try.
Have someone of this thread already tried and do it all work as intended and without bugs?

1 Like

Sorry, I missed to see page 2 and 3 of this thread before posting.
It seems all my questions are answered. I tested and it worked for me. Very interesting how long this topic is around.
It worked fine for my, by using your advises for change the skeleton in the child BP and then used the referenced Animations Sequences (and references blend spaces etc) by variables.
Seems to work fine for now. have to play test more tomorrow.
Thank you!

Just for the next who is stumble across this thread…–> Use the following two explanations and you will face no problems also in actual release (with a bug which is not affected on using it like this):

Yes, there is a feature that does exactly what we want since pretty much forever. Unfortunately it just semi-broke a couple of weeks ago.

I still haven’t heard back from Epic from my bug report. Maybe some of you should try to enter the bug as well?

It’s not fixed in 4.25.1 in case anyone wonders…

Here, I got an answers from the Epic team, andere there is a bug ticket now! You can find it here: Unreal Engine Issues and Bug Tracker (UE-96211)

Please Upvote All such that this gets fixed soon.

Done! Thanks for your effort!

Oh! the fix is targeted for UE5 :(, at least there is a workaround