Custom Pre-Process Tags {{ currentPage ? currentPage.title : "" }}

While it is probably not necessary for most users, it is possible to create custom tags in blueprint or C++ to use on motion matching animations in the MotionData editor. These tags only run during the pre-processing phase and they can be used to modify the animations they are placed on and the poses that they encompass.

Note: Custom Pre-Process Tags is a very advanced topic and it requires knowledge of the inner workings and data structures of Motion Symphony. It is recommended that this feature is only for advanced users.

Creating a Custom Pre-Process Tag

There are two types of pre-process tags that can be created:

  • Tag Point - a tag that is specified at a specific point in time in the animation

  • Tag Section - a tag that encompasses a time ‘range’ within the animation

The choice of tag is dependent on the use case for your tag. The only difference is that the tag section modifies multiple poses within it’s range while the point is more for setting up interest points within an animation.

Step 1: Right click in your content browser and create a new ‘Blueprint Class’

Step 2: Search for Tag Point or Tag Section and pick one of them as your base class. A new asset will be created, name it as you like.

Tag Points

Tag points are tags that mark a specific time within an animation. They can modify and affect the animation itself based on the time of that tag. This is often used for baking data relative to that point. An example use case within Motion Symphony is the Distance Matching markers which bake data relative to a point in the animation.

A tag point blueprint has only a single function to implement and it is called only once for each tag point:

  • Received_PreProcessTag

Received_PreProcessTag

This function is called once for each TagPoint. In this function you have access to the following data via input parameters:

  • Point Pose - The closest pose to the tag (modifiable)

  • Out Motion Anim - The animation that this tag has been placed in (modifiable)

  • Out Motion Data - A reference to the entire Motion Data asset (modifiable)

  • Time - The time of the Tag Point in the animation

Tag Sections

Tag Sections are tags that cover a time range. They can modify and affect all poses within their time range.

A tag section blueprint has two functions which can be overwritten to run custom logic:

  • Received_PreProcessPose - Called once for each pose within the tag section range.

  • Receieved_PreProcessTag - Called one time for the tag itself.

Received_PreProcessPose

This function is called once for each pose within the tag section range. In this function you have access to the following data via input parameters:

  • Out Pose - the pose that this function was called for (modifiable)

  • Out Motion Anim - The animation that this tag has been placed in (modifiable)

  • Out Motion Data - A reference to the entire Motion Data asset (modifiable)

  • Start Time - The starting time of the tag section range

  • End Time - the ending time of the tag section range

Received_PreProcessTag

This function is called once each tag. In this function you have access to the following data via input parameters:

  • Out Motion Anim - The animation that this tag has been placed in (modifiable)

  • Out Motion Data - A reference to the entire Motion Data asset (modifiable)

  • Start Time - The starting time of the tag section range

  • End Time - the ending time of the tag section range

Example Custom Tag

The below image shows an example custom tag which modifies the ‘cost multiplier’ of a pose based on a curve sampled at the time of the tag. This tag only needs to implement the PreProcessPose function.

Custom Tags in C++

For C++ users, custom tags can be created by inheriting from UTagPoint and UTagSection. Please see the source code for existing tags for an example on how to achieve this.

{{{ content }}}