Introduction to AnimMontage

The name AnimMontage came from our cinematics director, Greg Mitchell, when we asked for his help naming an asset that can contain animations that you can stitch or edit with sections you can jump between. Montage is defined as “the technique of selecting, editing, and piecing together separate sections of film to form a continuous whole”, and I think this still works very well for what this asset does.


AnimMontage is an asset that you can plug into AnimGraph in run-time and you can modify any state of it. For example, you can jump to different sections or you can re-link different sections. This is mostly for code driven animations or one-off animations such as melee attacks, allowing you to control triggers, stop when you want, or change state (looping or non-looping) between.

Our focus for UE4 AnimGraph has been to decouple in-game data and animation data. We’d like to make animation data independent from in-game data – i.e. AnimGraph doesn’t have any idea about Pawn. This will guarantee that we can preview everything in-editor if the state of AnimGraph is same. This worked great, but now we had this opposite problem where when code has to control, how do you do that without directly invading AnimGraph? We didn’t want Pawn to modify the AnimGraph node state. That would totally break the plan we had all along. That’s where AnimMontage comes in. This is the asset that the content creator creates, stitching/editing animations and managing sections, and then the coder asks AnimGraph to play this asset.

Here is a picture explaining the relationship between AnimGraph and Montage.

The requestor (coder or blueprinter) asks AnimGraph to play this montage. AnimGraph will plug each track into the slot node that name matches. It will play as set up in the content until the requester changes the state.

What kinds of things can you change? We originally thought of changing position directly, but that can mess up easily as animations can often change a lot during production. So we added sections. This section will be vertical timeline markers and you can jump between sections, re-link, or make it loop.

The easiest example I have is a melee attack with 3 sections [start, loop, and end]. When the player left-clicks, it triggers the start section by default when you ask to play that montage. Now the middle section is set to loop. When the start is done, it will transition to loop, and it will loop there forever. If the player lets the mouse button go, it will stop, but you don’t want to stop right away since the animation will pop in the middle of loop. You’d like to relink loop to the end, where it will then transition out to the end and finish the animation.

That is a basic scenario of montage usage. The idea is for coders or blueprinters to control its flow via sections.

That is it for now! I hope this helps you better understand AnimMontage. If you have any questions, let’s hear about them below. We’re happy to help!

sounds great

a demo project for noobs will help a lot :wink:

AnimMontage is used in the shooter game, specifically in the Shooterweapon and Shootercharacter classes.

If you have ContentExample, open the “Animation” map, and you’ll see there is montage example (Guy punching while you’re pressing button). That is done via montage.

As Agentleo mentioned, it’s used in lots of places, but we also have video tutorial coming up very soon. Zak Parrish worked on it. :slight_smile:

Again this is introduction blog to show what this is, more than showing detail of how to use it. Detail is coming using tutorial and videos, but I wanted people to understand why we needed it.



I am having this problem with the root motion animation inside AnimMontage. Look at what happens to the arms.
My character is at a LedgeGrabbing State when I call the AnimMontage root motion. The variable that calls that state is bLedgeGrabbing ( bool ) as true and it never becomes false. But, for some reason, the state comes out from LedgeGrabbing and it goes to JumpEnd. before going into AnimMontage.

If I understand this correctly, if it leaves the state even if the bool bLedgeGrabbing didn’t change, please check other transition rules or higher state (outside of the state) transition rules.

It would help if you can post the state set up. It is also possible this can be a bug of slot node that is inside of the state. If you leave the state out, do you still see the problem?

You don’t have to use montage if it’s inside of state and you just want to play for a while, but I suppose you use it for root motion.

You can see the states here, and how it gets out from my LedgeGrabbing state:

I have to use montage because of the root motion. :wink:

Another user(order66, thanks) help me with this. Setting Blend In to 0 fixed the problem.

Oh I see. So you were talking about arm is away from ledge when it was coming out? Blend in/out can be tricky when the pose is very different, you can cause odd transition issues. Glad this got resolved.

Is the new montage system thought to replace what was normally called a ‘Special Move’ in UE3? Or would make a special move easier to handle (input issues etc)?