06 - Sequences

 


An Animation Sequence is a single animation asset that can be played on a Skeletal Mesh. These contain keyframes that specify the position, rotation, and scale of a bone at a specific point in time. By playing these keyframes back in sequence, with blending between them, the bones of a Skeletal Mesh can be smoothly animated.

Each Animation Sequence asset targets a specific Skeleton and can only be played on that Skeleton. This means, in order to share animations between multiple Skeletal Meshes, each of the meshes must use the same Skeleton asset.

An example of a Skeleton using an Animation Sequence can also be found on the Animation Content Examples page under section 1.1.

Editing

The Animation Editor provides functionality for previewing and editing individual Animation Sequence assets. The properties, including compression scheme, of the Animation Sequence can be set, and animation notification events - also called Notifies - can be added to allow camera effects, particle effects, sounds, and more to be triggered based on the animation.

See Animation Sequence Editor for more details.

Playback

Playback of Animation Sequences can be performed through code, but is generally handled within an instance of an Animation Blueprint applied to a Skeletal Mesh Component. All of the Animation Sequences for the Skeleton the Animation Blueprint was created from are available to be sampled within the AnimGraph. These can be placed as sequence player nodes whose output is a pose generated by sampling the Animation Sequences.

See the Animation Sequence User Guide for instructions on using Animation Sequences within Animation Blueprints.

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.

See Animation Notifications (Notifies) for descriptions and usage information for the various types of notifications available.

Curves

Animation Curves provide a way to change the value of a Material parameter or a Morph Target while an animation is playing back. Their workflow requires that you designate the asset you want to modify (either a Material or a Morph Target), name the curve accordingly, and then adjust keyframe values across the duration of an animation.

See Animation Curves for descriptions and usage information on how to set up and apply curves in the Animation Editor.

Compression

Animation Sequence assets when opened up in the Animation Editor can have compression applied to them.

To do this, from the Menu Bar select Asset then select Apply Compression (as seen below).



When choosing to apply compression, the Animation Compression window will open.



Each option provides a different compression method as outlined in the table below:

Compression Type

Description

Automatic

Animation compression algorithm that is just a shell for trying the range of other compression schemes and picking the smallest result within a configurable error threshold.

Bitwise Compress Only

Bitwise animation compression only; performs no key reduction.

Least Destructive

Reverts any animation compression, restoring the animation to the raw data.

Remove Every Second Key

Keyframe reduction algorithm that simply removes every second key.

Remove Linear Keys

Keyframe reduction algorithm that simply removes keys which are linear interpolations of surrounding keys.

Compress each track independently

Keyframe reduction algorithm that removes keys which are linear interpolations of surrounding keys, as well as choosing the best bitwise compression for each track independently.

Remove Trivial Keys

Removes trivial frames of tracks when position or orientation is constant over the entire animation from the raw animation data.

AnimCompression uses a whitelist of optimal codecs to avoid trying permutations that are unlikely to be selected. This significantly reduces the number of codecs we attempt to compress with and as a result it is much faster. On multicore systems, most of the codecs now evaluate in parallel during automatic compression, further reducing the time it takes to compress an animation sequence.

Asset Details

When an Animation Sequence asset is opened in the Animation Editor, there are several properties that can be adjusted inside the Asset Details panel which can determine how the asset is handled. These properties include things such as tweaking playback speed, enabling/disabling Root Motion, assigning any Meta Data to the asset and others which are outlined in the tables below.



Animation

Retarget Source

When retargeting, this pose will be used as a base of animation.

Preview Pose Asset

The default Skeletal Mesh to use when previewing this asset - this only applies when you open the Animation Editor using this asset.

Interpolation

This defines how values between keys are calculated.

Rate Scale

Number for tweaking playback rate of this animation globally.

Skeleton

Contains the skeleton associated with this Montage. Cannot be changed in the editor.

Parent Asset

During cooking, this data will be used to bake out to Normal Asset. Cannot be changed in the editor.

Asset Mapping Table

This is used when Parent Asset is set and works with Asset User Data mapping table. Cannot be changed in the editor.

Asset User Data

Array of user defined data stored with the asset.

Additive Settings

Additive Anim Type

The type of additive animation type to use: No Additive, Local Space or Mesh Space. Local space is additive and delta is calculated by local space. Mesh Space is additive and delta will be applied in component space.

Base Pose Type

Decides how the additive delta is to be calculated: None (No Base Pose), Reference Pose (The mesh's default reference pose), Selected Animation Scaled (choose another animation and scale the animation), Selected Animation Frame (choose another animation and only based on the frame number). Base Pose Type is only available if Additive Anim Type is set to Local or Mesh Space.

Compression

Compression Scheme

Name of Compression Scheme used for this asset.

Do Not Override Compression

Do not attempt to override compression scheme when running Compress Animations commandlet. Some high frequency animations are too sensitive and shouldn't be changed.

Edit Compression Settings

Click this button to view and edit the current Compression Settings for this animation. Same as clicking Asset from the Menu Bar and selecting Apply Compression.

Root Motion

Enable Root Motion

If this is on, it will allow extracting of Root Motion.

Root Motion Root Lock

Root Bone will be locked to that position specified when extracting root motion.

Force Root Lock

This will force Root Bone lock even if Root Motion is not enabled.

With regards to Root Motion, there are some considerations you may need to make such as whether or not you need to replicate Root Motion in networked games. If you need to replicate Root Motion, you will need to use an Animation Montage. See Enabling Root Motion for more information.

Import Settings

Animation Length

Which animation range to import. The one defined at Exported Time, at Aniamted Time or using a range set manually.

Source File

Browse to the asset's source file used during import.

Import Meshes in Bone Hierarchy

If checked, meshes nested in bone hierarchies will be imported instead of being converted to bones.

Frame Import Range

Frame range used when Set Range is used in Animation Length.

Use Default Sample Rate

Samples all animation curves to 30 fps.

Import Custom Attribute

Import custom attribute as a curve within the animation.

Set Material Curve Type

Set Material Curve type for all custom attributes that exist.

Material Curve Suffixes

Set Material Curve Type for the custom attribute with the following suffixes. This doesn't matter if Set Material Curve Type is true.

Remove Redundant Keys

When importing custom attributes as curves, remove redundant keys.

Delete Existing Morph Target Curves

This will delete any existing morph target curves from the FBX during import.

Do not import curves with only 0 values

When importing custom attribute or morph target as curves, do not import if the value is 0. This is to avoid adding extra curves to evaluate.

Preserve Local Transform

This will import a curve within the animation.

Transform

Import Translation

Imports the tranlsation data from the FBX.

Import Rotation

Imports the rotation data from the FBX.

Import Uniform Scale

Imports Uniform Scale data from the FBX.

Meta Data

Meta Data

This is Meta Data that can be saved with the asset. The meta data is a Blueprintable class derived from the Anim Meta Data class. This allows you to add custom meta data to animation assets (Anim Sequence, Anim Montage, Anim Composite, and Blendspace are all supported). You can query the data from an animation asset in C++ by calling the GetMetaData() method, or by using GetSectionMetaData() on Anim Montages.

Thumbnail

Orbit Pitch

The pitch of the orbit camera around the asset.

Orbit Yaw

The yaw of the orbit camera around the asset.

Orbit Zoom

The offset from the bounds sphere distance from the asset.

Animation Curves

Animation Curves provide a way to change the value of a Material parameter or a Morph Target while an animation is playing back. Their workflow requires that you designate the asset you want to modify (either a Material or a Morph Target), name the curve accordingly, and then adjust keyframe values across the duration of an animation.

When you import Morph Target animations into UE4 via FBX, Morph Target Curves are automatically generated for that AnimSequence. However, they are hidden by default. This is by design; hiding away what could be many different Morph Target Curves will prevent the editor from slowing down.

It should be noted that the ability to adjust curves for Morph Targets, while useful, is more of a convenience feature than anything else. If you are handling a very complex Morph Target animation, you will probably have a much easier time if you perform the animation in the 3D animation package from which you exported out the original Morph Target.

Inside the Animation Editor for our melee attack, we start by clicking the  ADD button located in the Curves area, then select Add Variable Curve... and Create Curve.



When prompted to enter a name for the curve, we enter Eye Glow Intensity to match the name of the parameter inside our Material.



This creates the Curve we need, but we must also make sure to identify it as a Material Curve. This is done using through the Anim Curves menu under Window.



In the Anim Curves window, we click the option under Type to make it a Material Curve.



Anim Curves


The Anim Curves panel displays curve values for Morph TargetAttribute, and Material curves for the selected skeleton. You can delete and rename curves here, as well as preview curve data. You can filter the visible curves to show only active curves by clicking on All Curves to deselect it, which also enables you to filter by Morph TargetAttribute, and Material curves with checkboxes. In addition, you can define Material Curves which enable you to drive Material Parameters or Morph Curves.

To open the Anim Curves panel in either the Skeleton Editor or Animation Editor:

  • Click on the Window menu, then select Anim Curves from the dropdown menu.



By default, as you play an animation back, the curve values will update along with the playback. In the image below, curves for L_smile_pose and R_smile_pose are being used to create a smile on the face mesh. The values of these curves are shown in the Anim Curves panel at the current point in the animation (where the full smile is achieved by being weighted at 1.0 when reaching the end of the animation).



If you uncheck the Auto checkbox for a particular curve, it will no longer pull data from the curve. This allows you to selectively turn off the influence of a curve and preview the result. You can also enter a value manually or by clicking and dragging on the Weight field. In the below image, the L_brow_up_pose curve value has been manually set to 1.0. You can see the effect in the viewport, as the left eyebrow of the face is raised all the way.



Managing Curves

To rename a curve:

  1. Right-click on the curve and select Rename from the dropdown menu.



  2. Enter your new name.



  3. Press Enter to save your new name.

To add a curve:

  1. Right-click on any curve and select Add from the dropdown menu.



  2. Enter your new curve's name.



  3. Press Enter to save your new name.

This adds a curve to the current skeleton, but you will need to then add the curve and set its information in the Animation Editor to determine what the curve affects.

To delete a curve:

  1. Right-click on the curve and select Delete from the dropdown menu.



    If the curve is currently being used by any assets in your project, a confirmation window will appear warning you that the curves will be removed from those assets.

  2. Click Yes to continue with the deletion, or No to cancel.

Linking Curves to Bones

You can link your Animation Curves to a specific bone in the Skeleton so that they can be culled out with the bone when changing Levels of Detail (LOD) for the Skeletal Mesh, which is useful when setting up facial animations that aren't needed for lower LODs. This feature can also be used in conjunction with layer blending to prevent overriding curve values from the incorrect layer.

  1. In the Anim Curves viewer window, select the curve that you want to link to a particular bone in your Skeleton.



  2. With the curve selected, in the Details panel, click the add (+) button to add Connected Bone(s) elements.



    Then use the dropdown next to the added bone, to select the bone you want to link to the curve. The list here will be populated based on the Skeleton's bone heirarchy.



  3. Now that your curve is assigned to the bone(s) you've added to the Connected Bones, you can move the camera towards or away from the mesh to see the linked curves cull from view when the LOD of the mesh changes.

Animation Modifiers

Animation Modifiers (Anim Modifier) are a type of native or Blueprint Class that enable users to apply a sequence of actions to an Animation Sequence or Skeleton asset. An example of this includes (but is not limited to) creating automatic foot sync markers by pin-pointing on which frames the right or left foot is place on the ground. Using this information, Animation Sync Markers can be added to frames where a foot bone is at its lowest point (or touching the floor).

Anim Modifier is used to generate auto foot sync markers.

Accessing and applying Anim Modifiers is performed in either the Animation Editor or Skeleton Editor under the Animation Data tab. When applying an Anim Modifier to a Skeleton, the modifier is applied to all Animation Sequences that are based on the Skeleton. When applying the modifier to an Animation Sequence, it is only applied to the sequence itself and no other sequences.

Creating an Anim Modifier

To get started, you will need to create an Anim Modifier Blueprint class:

  1. In your project's Content Browser, click the Add New button and select Blueprint Class.

  2. In the Pick Parent Class window, expand All Classes and search for and select Animation Modifier, click Select then give it a name.

  3. Double-click the new Animation Modifier Blueprint to open it up in the Blueprint Editor.

With your Anim Modifier created, you can now use Blueprint Script and functions contained with the Animation Blueprint Library to access and manipulate animation data.

Animation Blueprint Library

Right-click in the graph of the Anim Modifier Blueprint to see the context menu and list of functions available, particularly under the Animation Blueprint Library.

In the image above, functions related to Marker Syncing are expanded which enable you to synchronize animations using marker data.

Before working with the various functions available for accessing data, you will want to implement the OnApply and OnRevert events. The OnApply Event enables the user to change, add or remove data from the animation while the OnRevert enables the user to remove previously applied user changes (or return the sequence to its original state). Each event returns the Animation Sequence in which to feed the Animation Blueprint Library operations.



In the image above, when the Anim Modifier is applied, a new Notify track is created with the defined name while reverting the Anim Modifier, the track is removed.

Implementing an Anim Modifier

Implementing an Anim Modifier can be done inside a Skeleton asset (to add to the Anim Modifier to all animations associated with the Skeleton) or in a single Animation Sequence.

  1. Inside the Skeleton Editor or Animation Editor, go to Window menu option and select Animation Data Modifiers.

  2. In the Animation Data Modifiers tab, select Add Modifier and select your desired Anim Modifier Blueprint.

  3. Right-click on your Anim Modifier Blueprint then click Apply Modifier to apply the Anim Modifier and any changes (or Revert Modifier to remove changes).

    Your Anim Modifier will be listed as Out of Date until you apply it.

    Below is an example of an Anim Modifier that has been applied to a Skeleton asset, indicated by the Skeleton icon.

Any properties that you have set as Instance Editable will be available to edit in the Animation Data Modifiers tab.

In the image above, we define properties that can be used to drive automatic foot syncing.

Exposing Properties

Inside your Anim Modifier Blueprint, you will want to expose parameters using Instance Editable that you can manipulate within the Animation Tab in the Animation Tools

In the image above, we use a structure variable containing information that we can set for the name of a bone as well as provide an offset.

Inside our Animation Sequence when we implement our Anim Modifier and apply it, we can see our exposed parameters.

In the image above, we enter the names of the bones that we want to include in our Anim Modifier in which to gather animation data (such as Bone Transform) from.

Animation Blueprint Library Reference

While there are several different nodes available within the Animation Blueprint Library, this section lists some of the more commonly used types within Anim Modifiers.

Add/Remove Notify and Curve Tracks



These nodes enable you to dynamically add Notify or Curve Tracks to the specified Animation Sequence. Once Notify or Curve Tracks have been added, you can add various types of keys or events to those tracks. For example, you may want to Add Float Curve Keys to a Curve Track, Add Animation Notify Events or Add Animation Sync Markers to a Notify Track.

Get Bone Pose



To get Bone Transform data you can use the Get Bone Pose for Frame or Get Bone Pose for Time nodes which will return the Bone Transform for the provided Animation Sequence with the specified Bone Name. Alternatively, you can use the Get Bone Poses for Frame or Get Bone Poses for Time to collect Bone Transforms for a specified array of Bone Names.

When getting Bone Transforms the transform data will be in local space. If you need it to be in component space, you will need to manually convert the transforms.

Helper Nodes



The Animation Blueprint Library nodes include several helper nodes including nodes for converting frame and time information (Get Time at Frame or Get Frame at Time). Another node that is useful for getting information is the Find Bone Path to Root which will take an Animation Sequence and a Bone Name (typically the Root Bone) and output a list of Bone Names in a chain.


Curves inside Animation Blueprints

Inside the AnimGraph of an Animation Blueprint, there are some Blueprint functions you can call to access information about or retrieve the names of your curves.



Function

Description

Get All Curve Names

This targets an Anim Instance and returns all curve names.

Get Active Curve Names

This targets an Anim Instance and returns the last up-to-date list of active curve names for the specified Curve Type.

Get Curve Value

This targets an Anim Instance and returns the value of a specified Curve Name.

AnimNotifies

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.

Add Notify...



Different types of Notifies cause different events to be triggered. Camera effects, particle effects, sounds, for example can all be triggered at any point during an animation through the use of a Notify. Adding a Notify can be done by right-clicking on a Notify Track at the point in the animation you want the Notify to occur, and then choosing the type of Notify to add.

For more information on adding/editing Notifies, see the Animation Sequence Editor page.

Skeleton Notifies

Skeleton Notifies serve as a catch-all for anything an artist may want to do within a Animation Blueprint at a certain point in an animation. They are created by right-clicking on a Notify track, choosing Add Notify... then selecting New Notify... from the context menu.



You will be prompted to enter a name for the newly created Notify. 



All of your created Skeleton Notifies will be displayed under the Skeleton Notifies menu.



Selecting a Skeleton Notify will added it to the Notifies Track.



Skeleton Notifies enable you to create a Notify Event of the same name in the Event Graph or Transition Graphs in the State Machine for a Skeletal Mesh's Animation Blueprint. To add your Skeleton Notify, right-click anywhere in your Event or Transition Graphs and select your Notify from the Add Anim Notify Event menu.



An Event node will be added to the Graph which will be executed when the Notify is called from the animation it resides in.

Clothing Simulation Notifies

There are several native Notifies that can be added to control Clothing Simulation at a given point in an animation.


  • Pause Clothing Simulation will pause the simulation of clothing.

  • Resume Clothing Simulation is used to continue simulation of clothing after having been paused.

  • Reset Clothing Simulation will initialize clothing simulation back to its default state.

Video thumbnail

Play Particle Effect

The Play Particle Effect 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 Play Particle Effect Notify does not use the Animation Blueprint to control behavior. Instead, it uses a few properties defined in the Details panel to determine what Particle System is used and from what Socket the particles will originate.



Property

Description

PSTemplate

This holds the particle system that will be spawned at the Notifies set point in time.

Socket Name

This contains the Skeletal Mesh socket that will be used as the spawn point for the particle system.

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 Play Sound Notify provides a simple means to get your sound effects synced with animation. Much like Play Particle Effect, this Notify has 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 sounds when a robot moves, the rustle of cloth during character motion, and similar types of effects.



The Play Sound Notify uses the following 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

Sound

This is the sound asset to play.

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.

Attach Name

This contains the Skeletal Mesh socket or bone that will be used as the spawn point for the sound effect.

Notify Color

Changes the color of the Notify on the Notify bar.

Reset Dynamics

The Reset Dynamics Notify can be used to restore any AnimDynamics that are applied to the Skeletal Mesh, back to their original state when called upon from the animation.



You can also change the color of this Notify in the Notifies Track window through the Details panel. 



Add Notify State...

NotifyStates_01.png

Anim Notify States (Notify States) work much like the standard Notifies above. They have 3 distinct events: a begin, a tick, and an end. They start straightforward, firing at the moment 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 normal Notifies and Notify States is that Notify States are self-contained Blueprints.

Additional things to considered with Notify States: 

  • You are guaranteed to start with a Notify Begin Event.

  • You are guaranteed to end with a Notify End Event.

  • You are guaranteed to have Notify Tick wrapped between a Notify Begin and a Notify End event.

  • The order between different Anim Notifies (normal or state) is not guaranteed. If you put two Anim Notify States 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. Notify Begin is still called first regardless, and Notify End called last.

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 Begin Blueprint. And finally, the End Blueprint can be used to change variables, flags, or properties after the final tick hits.

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 below, a Timed Particle Effect is assigned to an animation. By left-clicking on the handle bar at the end (or at the start), you can drag to increase or decrease the length of the effect.



The properties of a Timed Particle Effect are the same as the Play Particle Effect Notify and can be adjusted inside the Details panel.

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.


Animation Trails 

Video thumbnail

To use an AnimTrail emitter you must:

  1. Create a Particle System that contains an emitter with AnimTrail type data.

  2. Create and add a Notify State of the Trail type to an animation.

Once you have added an AnimTrail, you can adjust its properties from the Details panel:



Property

Description

PSTemplate

This is the particle system containing the anim trail that was described above.

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.

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 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.

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.



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.

You can also change the Notify Color to change the color used in the Notify Track window. 

Custom Notify States

Creating Custom Notify States (which are the same as the native Notify States but are custom Blueprints that you can provide any logic you need to occur during an animation) is done the same as adding a regular Notify.Before you can use a custom Notify State, you must first  create a Blueprint Class of the Anim Notify State class. Once created, right-click in the Notify Track of an animation and select Add Notify State... then select your custom Notify.



An AnimNotifyState Blueprint Class called MyCustomNotifyState (above) was created so that we may select it as the Notify State to use in our animation. Once you have created your Anim Notify State Blueprint, you can open it and begin implementing the functions that determine how your Notify is used (below).



It is not necessary to implement every function, but at the bare minimum you should implement Received Notify Tick or both Received Notify Begin and Received Notify End. If implementing just Received Notify Begin or Received Notify End, you could simply use a standard Animation Notify.

Below is the Notify Begin override:



Below is the Notify End override:



Below is the Notify Tick override: 



Below is a description of how each pin type is used in the override functions:

Pin

Description

Mesh Comp

This is the Skeletal Mesh Component of the Animation Sequence or Montage that is triggering this Anim Notify State.

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 Anim Notify State within a Blueprint.

Add Sync Marker...

If you are looking for a way to keep related animations synchronized with one another, you can use Sync Groups. Animations can also be synchronized using Sync Markers within the related animations. To add a Sync Marker, right-click in the Notifies Track window and select Add Sync Marker...


You will be prompted to enter a name for your Sync Marker:



After entering a Sync Marker Name, you will find it under the Existing Sync Markers sub-menu.



You can then add your created Sync Markers to other animations.

Some elements to consider when working with Sync Markers:

  • Only animations within the same Sync Group are synced, and the Leader drives the positions of followers within the same Sync Group.

  • The play rate is always that of the master animation (play rate adjustment is currently not available).

  • Only markers common to all animations within a group are synced.

    • For example, if one animation is missing the "Right Foot Down" markers, those markers will be ignored for all animations when determining that frame's position.

  • Position is synced based on the relative position of the Leader with respect to its common markers.

    • For example, if the Leader is 25% of the way between its left and right foot markers, the followers will be synced to 25% of the way of their respective left and right markers.

  • Marker based sync is used automatically when animations in a Sync Group have enough matching markers. Otherwise, the original scaled length syncing behavior is used.

  • AnimMontages also support marker-based sync while blending out, so you can transition back to other animations seamlessly.

    • You can find the Sync Group setting Asset Details panel in the AnimMontage.

Sync Markers can also be added automatically by setting up and applying Animation Modifiers within your animation.

Manage Notifies...

If you want to add new, rename or remove existing Skeleton Notifies you can do so from the Manage Notifies option when right-clicking on the Notifies track.



The Animation Notifies window will appear and display any Notifies you have created.



Right-click to create new Notifies, or right-click on a Notify to rename or delete it.

Through the Manage Notifies window you can also see what animations are currently using the selected Notify from the Details panel by clicking the Scan button.



Any animations that use the selected Notify will be displayed in the Details panel.



Additional Notify Properties

In addition to the properties that can be modified in the Anim Notify section of the Details panel for each type of Notify (when applicable), the properties below can also be used to define how your Notify is used.



Trigger Settings

Notify Trigger Chance

Defines the chance of triggering the Notify (0=No Chance, 1=Always Triggers).

Trigger on Dedicated Server

If disabled, this Notify will be skipped on Dedicated Servers.

Trigger on Follower

If enabled this Notify will trigger when the animation is a follower in a Sync Group (by default, only the Sync Group leaders notifies the trigger).

Notify Filter Type

Defines a method for filtering notifies (stopping them from triggering). Can be set to filter by the meshes current LOD.

Event

Trigger Weight Threshold

Determines how much much weight the animation sequence needs to have to trigger the Notify.

Montage Tick Type

The method to determine how the Notify is handled, Queued or Branching Point (See Montage Tick Type section below).

Montage Tick Type

The key difference between Queued and Branching Point settings for the Montage Tick Type is that Queued Notifies is asynchronous, while Branching Points are synchronous. What this means to the end user is that Branching Points come with a much higher degree of precision for where they will take place along the animation timeline.

High precision is important when you need to jump to a specific animation at a very precise moment in time. While you could use a Queued Notify to do the same job, the asynchronous nature of Queued Notifies means that the event could be fired at the incorrect animation frame, which can lead to hitches and jumps in your motion.

Sync Groups

Sync Groups keep related animations synchronized with each other, even if they have different lengths. For example, you may have a walk cycle and a run cycle that you would like to blend together so that the character can smoothly accelerate or decelerate. However, the walk cycle for a given character is usually significantly longer than the run cycle? In such a case, directly blending from one to the other would have unnatural results, like an unsightly "beat" as the foot animation switches.

Sync Groups solve this problem by designating one primary animation node as the Leader, and scaling the lengths of all related animations to match the Leader's length. Typically, the Leader is the node with the greatest blend weight. As the weight blends and the follower's weight exceeds the Leader's, the follower becomes the Leader. In this way, the two animations can work smoothly together, offering a seamless transition from one motion to the next.

It should be noted, however, that since the time of the animations is shifting, there are certain animation considerations to take into account. For instance, in the example of blending between walk and run cycles, both animations should begin and end on the same foot. Establishing these standards early will help everything blend much more smoothly!

Group Roles: Leaders and Followers

Sync Groups work with the concept of group roles, in which one animation is the "Leader" while all other animations are "followers".

Leader

  • Provides the master animation length that is used by all followers.

  • Executes all of its Notifies.

Follower

  • Scales its animation length to match the Leader.

  • Has its Notifies suppressed, deferring instead to Leader's Notifies.

Leaders and followers are designated simply by which animation has the greater blend weight, as in the following example:

Image

Description



Run animation, original size, set to a Sync Group named WalkRun.



Walk animation, original size, also set to a Sync Group named WalkRun.



In this instance, the blend weight for the run animation would be greater than the walk animation. Since they are in the same Sync Group, the walk scales down to match the length of the run animation.



Here, the weighting has switched such that the walking animation is receiving a greater blend weight. This causes the run animation to scale up to match the length of the walk.

Setting a Sync Group

To set the Sync Group, select the animation node in the AnimGraph and look in the Details panel. You will see the Sync Group property.



Property

Description

Group Name

This is where the Sync Group can be set. Generally, you will want all related animations that are meant to blend together (such as body motions for sneak, walk, run, sprint) to be in the same Sync Group.

Group Role

This is where you set the type of membership in the group. The available values are "Can Be Leader" (the default), "Always Leader", and "Never Leader".

Sync Groups can be set on AnimSequence and BlendSpace nodes within the AnimGraph, as well as inside State Machines.

Marker-Based Animation Syncing

In addition to Sync Groups, animations can be synchronized using markers within the animations.



To add a Sync Marker, inside the Animation Notifications (Notifies) track of your Animation Sequence, right-click and select Add Sync Marker.

Some elements to consider when working with Sync Markers:

  • Only animations within the same Sync Group are synced, and the Leader drives the positions of followers within the same Sync Group.

  • The play rate is always that of the master animation (play rate adjustment is currently not available).

  • Only makers common to all animations within a group are synced.

    • For example, if one animation is missing the "Right Foot Down" makers, those markers will be ignored for all animations when determining that frame's position.

  • Position is synced based on the relative position of the Leader with respect to its common markers.

    • For example, if the Leader is 25% of the way between its left and right foot markers, the followers will be synced to 25% of the way of their respective left and right markers.

  • Marker based sync is used automatically when animations in a Sync Group have enough matching markers. Otherwise, the original scaled length syncing behavior is used.

  • AnimMontages also support marker-based sync while blending out, so you can transition back to other animations seamlessly.

    • You can find the Sync Group setting Asset Details panel in the AnimMontage.



Animation Editor

The Animation Editor provides functionality for previewing and editing individual Animation Sequence assets. The properties, including compression scheme, of the Animation Sequence can be set, and animation notification events - also called Notifies - can be added to allow camera effects, particle effects, sounds, and more to be triggered based on the animation.

Interface

The Animation Editor consists of the following sections:



  1. Name - Displays the name of the AnimationSequence currently being edited.

  2. Notifies - Editable list of tracks for creating/editing notifies. See below for instructions on creating and removing tracks as well as creating and working with notifies.

  3. Curves - A graph-like area for adding and editing animation curves

  4. Tracks - A field used for editing Animation Layers.

  5. Timeline - Displays information about, and provides controls for, playback of the preview in the viewport of the Animation Editor.

Notifies

An Animation Notify is an event along a particular animation at which you can cause something to happen. For instance, the moment a character's foot hits the floor, you can create a Notify along the timeline to play a footstep sound. Other notifies are available as well, allowing for particle, camera, and sound effects. You may also create custom notifies that trigger your own events.

For more information on Animation Notifies, please see the Animation Notifications (Notifies) page.

Notify Tracks

Notifies are stored in Tracks within Animation Sequences. A track is essentially a container that can hold any number of Notifies, and Animation Sequences can have any number of tracks. Using multiple tracks makes it easier to organize and visualize Notifies, especially in cases where an Animation Sequences requires large numbers or several different types of Notifies.

Every Animation Sequence has a single notify track by default. Tracks can be added to the sequence or existing tracks can be removed using the controls to the right of the tracks.

To add a new Track:

  • In the Track List, click the track "+" button next to an existing track:



    A new track is added above the existing track in the list:



To remove an existing Track:

  • In the Track List, click the "-" button next to the track you want to remove:



    The track is removed from the list:



Working with Notifies

Notifies can be added to tracks, moved around inside a track, and moved back and forth between different tracks within the Track List. This allows you to quickly tweak the position of a Notify or quickly arrange them logically.

Creating a Notify

Notifies of any existing type or custom Notifies can be added through the context menu.

To create a new Notify:

  • Right-click on a track to display the context menu then select the type of notify to add.



    The new Notify is added to the track at the location where you Right-clicked:



Positioning a Notify

The position of a Notify within the track is extremely important as it determines when the event that corresponds to the Notify is triggered.

To move a Notify around:

  • Left-click and hold the Left Mouse Button on the Notify and drag to the desired location.



  • Release the Left Mouse Button to drop the Notify at that location:



Switching Tracks

Moving notifies between tracks is essentially the same as the process for positioning Notifies described above.

To switch Notify Tracks:

  • Left-click and hold the Left Mouse Button on the Notify to move to a new track.



  • The Notify will turn yellow at which point you can drag and drop it on a different track.



    The Notify will turn red when you release the Left Mouse Button at the new location.



Copy/Pasting Notifies

You can copy a Notify to the clipboard for pasting elsewhere along the animation, or inside different Animation Sequences.

To copy a Notify:

  • Right-click on the Notify and select Copy.



  • Right-click and select the desired Paste option:



  • Paste - Paste the notify at the current location of the time slider.

  • Paste at Original Time - Pastes the notify at the same time as when it was copied.

You can also perform actions for multiple notifies by Shift + Left-clicking on a notify to add it to a selection or Ctrl + Left-clicking to toggle a notify from a selection.

You can drag the selection around and it will remain within the notify panel while keeping snapping intact.



When multiple notifies are copied, by Right-clicking in the timeline to bring up the context menu, you will notice additional paste options.



Paste Multiple Relative: Paste at the mouse cursor retaining relative spacing between notifies regardless of animation length. This means that the notify group should look like it is spaced the same as before the copy; even if the animation is shorter or longer.

Paste Multiple Absolute: Paste at the mouse cursor retaining absolute spacing. The notifies will retain their exact time spacing meaning that they will fire at exactly the same intervals but the group is not scaled to shorter or longer animations.

Paste at Original Time: Puts all of the nodes exactly where they were when they were copied.

Additional Notes:

  • Any paste operation that would put any of the notifies off the right edge of the track will still succeed but the notifies will be clamped into the track.

  • Pasting at the mouse cursor uses the most top-left point in the selection as a reference point for placing the nodes.

  • Pasting a group that would pass below the bottom of the notify panel will add as many tracks as necessary to contain the group automatically.

Timeline



The information bar in the Timeline displays the following playback information:

Info

Description

Animation

The name of the AnimationSequence currently being edited.

Percentage

The current playback position expressed as a percentage of the whole animation.

Current Time

The current playback position expressed in seconds.

Current Frame

The current playback position expressed in frames.

The playback controls perform the following actions:

Option

Description



The timeline. This shows and allows scrubbing through the frames of the AnimationSequence or AnimationMontage. A red bar is displayed at the current position. Drag the red bar to scrub.



Skips to the first frame in the AnimationSequence or AnimationMontage.



Skips to the previous frame in the AnimationSequence or AnimationMontage.

 



Begins playback of the AnimationSequence or AnimationMontage in reverse. When playing, the pause button is displayed.



Creates a new animation object in the specified location. Click to start recording, click again to stop the recording.


Begins playback of the AnimationSequence or AnimationMontage. When playing, the pause button is displayed.



Skips to the next frame in the AnimationSequence or AnimationMontage.



Skips to the last frame in the AnimationSequence or AnimationMontage.



Toggles playback between play once and looping. When looping is enabled, the button turns red.

Comments