Is it possible to randomly put matinee animation at different locations when animation has finished playing?

I am curious if matinees can be grouped together and be placed anywhere when the animation has finished.

From a technical view, static meshes moving in an animation are basically models lerping through different vertices positioned at certain locations the matinee has defined. Just adding an offset to all of the vertices seems simple, from an abstract point of view.

Is it possible to do this after the animation has finished playing?

Do you simply play animation in matinee or do you play animation AND move your actors ?

If your movement are in the animation, then you could play them in Matinee, when the animation is done dispatch an event that you catch in your level BP, and move your Actor there.

If you control the position of your actor with matinee, then you could make a matinee for each movement and call a different one at the end with an event again, but I’m not sure how effective this would be

Some questions:

  • How do you find out a matinee has finished playing the animation? And what event should I search for in the level blueprint?
  • Do I also need to do something with the Matinee actor?

That one I’m not sure, but I think you can’t know when an animation is done playing in Matinee. (you can know when matinee is done, but not an animation inside it). You would have to look at the time and create and event accordingly.

For the event I’ll have to look into it a little bit later tonight, last time I used it (4.5.1) I’m pretty sure any event I added to matinee was automatically added in the BP in the Matinee controller but I did a quick test (4.7.3) and it’s not the case.

I’ll let you know when I find out.

I added an event in the Event track of the empty group. In the level blueprint, I connected the matinee controller with the label, “Finished”, to a Print String node. This is so that I can tell the event has actually fired.

After I added the matinee controller, do I need to do something so that it can trigger the event?

I don’t see an obvious way to trigger the event. Even if I added in selected actors after the matinee controller is placed in the level blueprint, and the selected actors finished their animations, the event doesn’t trigger at all.

ok event are automatically added, but you need to create an empty group without any Actor selected in the viewport.

So create an empty group without any actor selected, add an event track. Add an event. Go in your level BP with your matinee actor selected. Right click and add a matinee controller, your events should be there.

Finished will always be called at the end of the matinee timeline.

Here’s an example where I added two custom event at a timing I decided. Those two events are automatically added in the controller node in my level BP

The finished event will when the matinee timeline will be done. This means when you reached the white line at the end. In matinee you can see in the bottom right how long in seconds this would be. In my case it’s 0.000 / 5.000, so the Finished triggers after 5 seconds.

As for the other 2 customs events, they are automatically triggered when the timeline passes over them when playing.

The result in my case is

After 0.5 sec : Event1 is fired, catch in BP and “MyCustomEvent1” is printed

After 1.0 sec : Event2 is fired, catch in BP and “MyCustomEvent2” is printed

After 5.0 sec : Finished is fired, catch in BP and “Finished” is printed

35430-matineeevent.png

Ok, I now understand how the events are triggering.

Also note that when the matinee animation is looping, the “Finished” node event will always not fire, because it is always active until something tells it to stop looping.

So all I have to do is to use the “Event” I set in the Event track of a group/groups, and trigger from there for looping matinee animations.

Thanks again for your help.

Edit:

You cannot move the entire animation in a matinee, move it to another place, and then play the matinee animation at that location. It is just not possible.

Instead, I have to use this automation blueprint method so that I can randomly place animations around the map as it finishes.