Many things break when using Sub Anim Instances, like anim montages and notifies

So I’d expect that when you use Sub Anim Instances you should be able to just plug them together and have everything work. However most of Unreal Engine 4 and games using it are written with the assumption that there are no Sub Anim Instances and everything happens on the root AnimInstance. The GameplayAbility system is one. Most of the API’s that work with a skeletal mesh. Etc…

If you were to take any Anim Instance today, and refactor it into sub instances, chances are many things would stop working completely. If a child sub instance is now responsible for playing montages, they simply won’t play. Anim notify events will no longer be received if you move the logic to a sub anim instance. Pose snapshots will no longer be found.

Here’s a shameless plug for my Pull request that I’ve had out for a while that fixes all of this, along with a few other issues. Hopefully it can get some attention.

https://github.com/EpicGames/UnrealEngine/pull/4866

My pull request makes it so SubAnimInstances just plain work as you’d expect. The game logic can all still operate on the SkeletalMesh->AnimInstace reference directly, and the children will do all the expected behavior.

It’s a somewhat simple solution where the sub instance parents and children recursively talk to each other.

I did have an idea for an even bigger overhaul where there’s a global datastructure in the skel mesh component that tracks the play state of things like anim montages and all sub instances reference it, but I had a feeling there are some edge cases I may miss and it’s better to keep it simpler so it’s more likely to go in.

Sub Anim Instances were not fixed?
I made a Bug Submission a few months ago regarding that exact same topic

It is marked as fixed

It’s possible those exact things you listed might be fixed.

I have used FindSubInstanceByName to fix some of the problems I describe above, but the gameplay ability system montage playing code isn’t written to take sub instances into account, and probably many other systems in the engine aren’t either.

Hi @illYay
Thanks so much for your post! I just ran into this exact issue of Montages not playing when used through Anim SubInstances.
I’ve tried following your gitHub link but it is now dead.

I’m new to the pulling and contribution system.
Is pulling a submit you’ve made to Epic so that they integrate your fix directly in the engine?

Or do you have a plugin one can download and install into their own version?

Many thanks again,