Animation Notifications (Notifies)
Animation Notifications (AnimNotifies or just Notifies) provide a way for animation programmers to setup events to occur at specific points during an Animation Sequence. Notifies are commonly used to add effects like footstep sounds during a walk or run animation or spawning a particle system during animation. However, they can have any number of different uses, as the system can be extended with custom notification types to cater to the needs of any type of game.
Creating and editing Notifies is performed within the Notify Editor in Persona. For more information, refer to the Editing Animation Sequences documentation.
Animation Notify Types
Different types of Notifies cause different events to be triggered. Camera effects, particle effects, sounds, etc. can all be triggered at any point during an animation.
Below you will find the currently available Notifies and how they are used.
Play Particle Effect
The PlayParticleEffect notify spawns and plays a particle system at a given socket location and at a specific point along an animation's timeline. This is useful for such effects as causing a cloud of dust to appear around a player's feet when they move, fire to spew from an exhaust pipe when the player uses a Nitro-Boost power-up, or other such effects.
A PlayParticleEffect notify does not use the Animation Blueprint to control behavior. Instead, it uses a few simple properties defined in the Details panel to determine what Particle System is used and from what Socket the particles will originate.
| Property | Description |
|---|---|
| Socket Name | This contains the Skeletal Mesh socket that will be used as the spawn point for the particle system. |
| PSTemplate | This holds the particle system that will be spawned at the notify's set point in time. |
| Attached | Determines if the effect should attach to the bone/socket. |
| Location Offset | Location offset from the socket. |
| Rotation Offset | Rotation offset from the socket. |
| Notify Color | Changes the color of the notify on the notify bar. |
Once set up, the associated Particle System will play, using the Socket location as the spawn point.
Play Sound
The PlaySound notify provides a simple means to get your sound effects synced with animation. Much like Play Particle Effect, this notify has a few simple properties that can be set in the Details panel, which allow for fast and easy sound effect setup. This is useful for such things as mechanical whirrs when a robot moves, the rustle of cloth during character motion, and similar types of effects.
The Play Sound notify uses a few simple properties defined in the Details panel to determine what sound effect is used and from what Socket or Bone the sound will originate.
| Property | Description |
|---|---|
| Attach Name | This contains the Skeletal Mesh socket or bone that will be used as the spawn point for the sound effect. |
| Volume Multiplier | This scaling multiplier is applied to the volume of the sound effect. |
| Pitch Multiplier | This scaling multiplier is applied to the pitch of the sound effect. |
| Follow | If checked, the sound effect source will follow the Static Mesh as it moves. If unchecked, the sound remains behind at the location it was spawned. |
| Notify Color | Changes the color of the notify on the notify bar. |
Custom
The Custom notify serves as a catch-all for anything an artist may want to do within a Animation Blueprint at a certain point in an animation. Custom notifies are created by Right-clicking on a notify track and choosing New Notify from the context menu.
As soon as you do this, you will be required to supply a name for the new notify.
After the name is typed in, you will see the new notify appear in the timeline.
Custom notifies will not have any properties to edit in the Details panel. Instead, they simply allow you to create a notify event of the same name in the Event Graph or any of the Transitions in a state machine of the Skeletal Mesh's Animation Blueprint.
Switch to the Graph edit mode
Right-click anywhere in the Event Graph and there is a section for adding Animation Notifies events.
Animation Notify States
AnimNotifyStates (Notify States) work much like the standard notifies above. They have 3 distinct events: a start, the tick, and an end. They start straightforward, firing at the moments the notify begins and ends, and the Event Graphs in them fire off when their time comes up in the animation. The tick fires off every animation update until the end event is hit. The major difference between the standard Notifies is that AnimNotifyStates are self-contained Blueprints.
To use an AnimNotifyState:
Create a new AnimNotifyState asset in the Content Browser by creating a new Blueprint that inherits from
AnimNotifyState:
On the Animation Sequence or Animation Montage, you can Right-click in the notify area and now add your new AnimNoitfyState.
You can set the length of the AnimNotifyState by Right-clicking on it and choosing Set AnimNotifyState Duration.
Finally from the Content Browser, Double Left-click your AnimNotifyState to bring up its Blueprint so you can start defining what if does.
At this point you can start implementing the 3 functions of the AnimNotifyState. It is not necessary to implement every function, but at the bare minimum you should implement Recieved_NotifyTick or both Recieved_NotifyStart and Recieved_NotifyEnd. If implementing just Recieved_NotifyStart or Recieved_NotifyEnd, you could simply use a standard Animation Notify.
| Pin | Description |
|---|---|
| Mesh Comp | This is the Skeletal Mesh Component of the Animation Sequence or Montage that is triggering this AnimNotifyState. |
| Anim Seq | This is the specific Animation Sequence that is triggering this AnimNotifyState. |
| Frame Delta Time | Only in the Received Notify Tick function, this will give you the time since the last animation update. |
There is currently no way to retrieve the length of the AnimNotifyState within a Blueprint.
Rules
You are guaranteed to start with a NotifyBegin Event.
You are guaranteed to end with a NotifyEnd Event.
You are guaranteed to have NotifyTick wrapped between a NotifyBegin and a NotifyEnd event.
Order between different AnimNotifies (normal or state) is not guaranteed! If you put two AnimNotifyStates next to each other, the first one is not guaranteed to end before the next one starts. Only use this for individual actions which do not rely on other Notifies.
Negative play rates are supported. NotifyBegin is still called first regardless, and NotifyEnd called last.
Order and Logic
When the AnimNotifyState is triggered, first the Start Blueprint will be called, and then the Tick Blueprint is called on the same frame update. Every subsequent tick, only the Tick Blueprint will be called. On the final tick update, the Tick Blueprint will be called followed by the End Blueprint.
If you are modifying something every frame, it should go in the Tick Blueprint. If you need to set variables, flags, or properties, to some value before the ticks hit, it should go in the Start Blueprint. And finally, the End Blueprint can be used to change variables, flags, or properties after the final tick hits.
Native Notify States
When choosing to add a Notify State, you can also assign one of two Native Notify States in the form of a Timed Particle Effect or an Animation Trail.
Timed Particle Effects
The Timed Particle Effect is very similar to the Play Particle Effect notify in that they both allow you to play a Particle Effect at any given point in an animation, the difference however is that with a Timed Particle Effect, you are given the ability to define the length of the effect inside the notify itself.
In the image above, both a Play Particle Effect and Timed Particle Effect are assigned to an animation. Inside the yellow box is the Timed Particle Effect and you will notice that this notify has two handle bars; one at the start and one at the end of the event. By Left-Clicking on the handle bar at the end (denoted by the green arrow), you can drag to increase or decrease the length of the effect.
Animation Trails
Animation Trails (or AnimTrail for short) are emitters that allow you to leave trails behind moving objects in a scene. They do this by sampling the positions of two sockets on a Skeletal Mesh each tick and stitching triangles between the sockets, down the length of the trail.
To use an AnimTrail emitter you must do the following;
Create a Particle System that contains an emitter with AnimTrail type data.
In the Animation Editor, add an AnimNotifyState of type Trail.
Setting Up the Particle System
Create a Particle System as usual and add a new emitter with type data AnimTrail to it. Several properties of the type data module will affect how the trail behaves. Below is what you should see in Cascade when setting up the system. Note, you will see nothing in the preview window as trails must be used in conjunction with a Skeletal Mesh component as explained later.
click to view fullsize
Below are the properties inside the AnimTrail type data section of the particle system.
| Property | Description |
|---|---|
| Dead Trails On Deactivate | If true, all trails are marked as dead when the system is deactivated as opposed to allowing the particles to expire naturally. This should generally be left as true. |
| Enable Previous Tangent Recalculation | If true, recalculates the previous tangent when a new particle is spawned. Makes the system more expensive but better looking as tangents more accurately match the trails curve. |
| Tangent Recalculation Every Frame | If true, recalculates tangents every frame. Slower but allows the trail particles to use velocity and acceleration etc. |
| Tiling Distance | The estimated distance in world units the trail has to travel before the 2nd UV set tiles. If 0.0, the 2nd UV set will not tile. |
Tessellation Parameters
Tessellation is the process of subdividing geometry into smaller segments. The trails are approximating a curved surface with triangles so we tessellate the trails based on following options so that they fit the curve more accurately and thus are smoother and more aesthetically pleasing. However, the more tessellated a trail is, the more expensive it is.
| Property | Description |
|---|---|
| Distance Tessellation Step Size | The (approx.) distance in world units that the trail must be to warrant another tessellation point. |
| Tangent Tessellation Step Size | The (approx.) angle difference in degrees that the tangent must change from one particle to another to warrant another tessellation point. This allows you to ensure that any sharp turns in the trail are nice and smooth. |
| Width Tessellation Step Size | The (approx.) world unit change in the width of the trail that warrants an additional tessellation point. |
Setting Up the AnimNotify
Now that we have a particle system, we must use it with an AnimNotify. Open the Animation Editor, add or use an existing Timeline under the Notifies section and Right-Click on it to bring up the menu. The Trails notify can be found under the Add Notify State section.
Below is the Details panel and Properties for the Trail notify.
| Property | Description |
|---|---|
| First Socket Name | This is the name of the first Bone/Socket defining the trail. |
| Second Socket Name | This is the name of the second Bone/Socket defining the trail. |
| PSTemplate | This is the particle system containing the anim trail that was described above. |
The above properties are required but the below are optional. They allow you to alter the width of the trail during the animation. You could also attach the trail to sockets that move as you need but this may not be ideal. This method is based on providing a width scale value. A width scale of 1.0 will keep the trail the same width, 0.0 will cause a trail of zero width.
| Property | Description |
|---|---|
| Width Scale Curve | The width value comes from a curve sampled each tick. This property is the name of that Curve. See below for details on creating that curve. |
| Width Scale Mode | This alters the way width is applied. The pictures below show how this works. The example shows a Sine like curve going from 0 to 1 in the middle and back to 0 again. |
The left image depicts From Centre which scales outwards from center, the middle image shows From First Socket which scales away from the first socket and the right image demonstrates From Second Socket which scales away from the second socket.
There are also some debug rendering options available:
| Property | Description |
|---|---|
| Render Geometry | This toggles the rendering of the main trail geometry. |
| Render Spawn Points | This toggles the debug rendering of the primary spawn points for the trail. i.e. the positions sampled from the sockets at each tick. |
| Render Tangents | This toggles the debug rendering of the curve tangents. |
| Render Tessellation | This toggles debug rendering of all vertices on the curve. This shows how the curve is tessellated between the spawn points. |
Controlling Animation Trails in Blueprint
While the above method is the standard approach to controlling AnimTrails, you can also control them from inside a Blueprint without the need of an Anim Notify. The only restriction with this is that the Particle System Component must be a child of the Skeletal Mesh Component from which you are sampling socket locations.
Create an Emitter component (or use an existing one).
Call the BeginTrails function on the component. This will start all trail emitters in the component. You also need to provide the trail's other properties here.
Call the EndTrails function on the component.
You can also alter the trail's properties while it is running (the example below alters width each tick using the game time).

