Request: Ability to play additive animation data via Montage

I’ve got a series of reload animations I want to play via Montage, for a number of reasons (an “active reload” style branch, also the ability to resume the reload from any of a number of key positions if it’s interrupted so that interrupting the reload doesn’t completely restart it)

Unfortunately, my reload animation is an additive animation. When I use the additive preview mode in the Montage editor, it works fine, but in-game the slot output functions instead like a normal animation (i.e. if I feed it to a base slot, it plays the animation rather than shrinking the character to a tiny dot, if I feed it to an additive input, rather than playing the additive anim, it explodes my character into some sort of horrific sky demon knot of bones).

The montage seems, at some level, capable of handling additive anims (hence the preview working properly) but inside anim BPs this functionality isn’t implemented, or at least isn’t implemented properly.

It would be awesome if we could either configure montages as additive or just play additive animation data inside of them, rather than trying to rely on Layered-Blend-Per-Bone for all partial-body montage animation (since LBPB doesn’t work as well as additive in many cases).

Hi RhythmScript,

Playing additive animations on Slots works well, and is something we do a lot on Fortnite.
Slots take care of applying additive animations, and mesh space additives as well automatically, so you don’t need to have a ‘Apply Additive’ node hooked up to that. It’s already built in. The input of a Slot is regular local space FK data, and so is the output. If you throw local space additive or mesh space additive animations to it, it will add them to your input and output the transformation.
If you throw at it different types of data, it will also handle the blend out properly between all these types.

Hope this helps.

3 Likes

So the slot node itself acts as an additive pin? It’s amazing I never actually tried that myself.

And of course I just now gave it a go and it works perfectly. I feel like a gargantuan idiot right now.

Kinda bummed that I didn’t figure this out BEFORE I rigged up a proxy system based on playing all active anims with “dead air” keyframes to sync their lengths, and blending between them with anim notifies setting bools. Which actually worked very well, and I was quite proud of it.

But I was also stuck on trying to handle leaping to playback positions within basic anims (so I could resume my reload animations from midway through if they were interrupted), which is something I know how to do easily in montages, so I’m glad that you gave me this solution now before I worked out something even MORE convoluted.

Thanks for the tip Laurent! bit of advice, though: that bit you just told me about additives being played via slots should PROBABLY go in the documentation! The docs only show using montages to blend via Layered-Blend-Per-Bone, and it’s not immediately obvious that a “slot” node does anything but play back animation data (and use its input pose as a fallback when that animation data stops). Especially since it’s the only node that I know of to dynamically handle the difference between additive and ordinary playback.

Exactly how do I do this?

Been trying to follow you, but I can’t really comprehend what’s going on here. How exactly do I apply new additive animation over a montage? Every time I use montage_play over some additive animation, it seems to stop the current animation I’m trying to blend it to. This happens even when I use different slot name.

Really appreciate the help if you would explain more steps on this. And I really agree that this need better/seperate doc.

1 Like

I am on the same page as Killer Penguin.

Any new info on this?

Have you find answer? I’m in the same situation and I’m still looking for a solution.

You guys just need to create a new group and a new slot for the animations you want to be additive, and it should work.

I can’t figure out how to make it work either. I want to be able to play NPC dialogue to mix in with whatever other animation is playing at the time. I have my dialogue animation set to be additive local space. I have created an additive group and a dialogue slot. But I can’t figure either what combination of settings, or how to wire up the anim graph to get montages to be additive to the rest of the anim graph stream.

Did any one discovered how to I apply new additive animation over a montage?

Greetings from the future.

It would seem you can do MSA with a montage by simply setting up the linked Anim Sequence as a mesh space additive. I didn’t even have to declare a unique group or slot; it fired right through a default slot player. Just be aware that this can have some… interesting… visual consequences, so maybe use a special group/slot to catch and handle the additive, and take a look at how the Paragon characters handle jump recovery for caching a base pose.

To fix additive anim montages check that in your additive animation you use itself animation as base pose animation