Motion Calibration Asset {{ currentPage ? currentPage.title : "" }}

What is the Motion Calibration Module For?

While the configuration module tells the motion matching system ‘what’ to match, the motion calibration module tells the system ‘how’ to match it. It is basically a set of weightings for each matching property or atom that can be used to tell the system how important or how much influence any given matching property should have on the final outcome of motion matching.

The calibration module refers to the configuration module and creates a list of weights for each of the following:

  • Body Velocity

  • For each matched bone:

    • Bone Position (for each matched bone)

    • Bone Velocity (for each matched bone)

  • For each trajectory point

    • Trajectory Position (for each trajectory point

    • Trajectory Facing

Creating the Module

To create this asset, right click in your content browser and navigate to ‘Animation > Motion Calibration’. After choosing 'Motion Calibration’ a new asset will be created as shown in the below image.

Module Setup

Open up the details editor for the calibration module (see below) by double clicking on it and follow the steps below:

Step 1: Note the default values for joint and trajectory weights in the ‘Defaults’ section of the calibration. Most of the time these defaults will be adequate but if desired, make changes here before going on to step 2. Recommended default values are below:

  • Joint Position Default Weight - 1.0

  • Joint Velocity Default Weight - 1.0

  • Trajectory Position Default Weight - 5.0

  • Trajectory Facing Default Weight - 3.0

Step 2: In the General foldout, set the ‘Motion Match Config’ which was previously created on the previous page. Note that the ‘Pose Joint Weights’ and Trajectory Weights lists (in the advanced tab) will be populated based on the config module and the defaults set in Step 1.

Step 3: Modify the individual weights in these lists if desired. Each weighting refers to bones and trajectory points setup in the config module in order.

Hint: Due to auto normalization performed by Motion Symphony under the hood, the default values will probably suffice at least to start with. It is not recommended to change the default weightings at the start of the process unless you are experienced with motion matching in Motion Symphony.

With this complete, the minimal setup of the calibration module is ready and can be used with the Motion Data Asset which is explained in the next section. Please continue reading this page to better understand calibration.

Understanding Calibration

Calibration can be a black art and to the un-trained eye it may just look like a bunch of random numbers. However, with practice and experience, it can become a very powerful tool for controlling motion matched animation and it is vital to become proficient with it.

Fortunately due to Motion Symphony’s automatic normalization of matching atoms, the calibration is significantly simplified allowing the user to only consider importance of each atom when considering its weight. For most users, the defaults will work the majority of the time.

In this section, the various weightings will be explained and how you should expect them to affect runtime animation

Quality Vs Responsiveness Ratio - This slider is the highest level weighting, meaning that it affects all weightings beneath it. Basically it helps balance between quality (<0.5) and responsiveness (>0.5). This slider can also be called the ‘pose - trajectory’ slider as pose is what controls quality while trajectory is all about responsiveness. The value of 0.5 for this slider means that pose and trajectory are balanced equally. However, moving the slider below 0.5 will increase the weight of all pose atoms while decreasing the weight of trajectory atoms giving the effect of improve animation quality. The opposite occurs when the slider is set above 0.5.

Note: Keep in mind that quality and responsiveness are two opposing concepts in motion matching. Increasing the ‘quality’ too much may cause the animation to be completely unresponsive (e.g. the animation won’t change) while making it too ‘responsive’ will result in poor animation flow. Find the balance that is right for you and your game.

Weight Momentum - This is effectively the weighting for the body velocity atom in a pose. However, it has been named as momentum as this is the effect the weighting as on the animation output. The higher the momentum weight, the more momentum will be preserved in the animation output. Increase this value if you find that the plant type animations aren’t being selected properly (e.g. the system chooses a walking plant animation instead of a running plant animation while running)

Please note that having this weighting too high will result in poor responsiveness on direction changes. Like with all weightings, find the balance that best suites your game.

Weight Angular Momentum - This weighting follows the same concept as ‘Weight Momentum’ above but applies to the rotation yaw velocity of the character instead of the linear velocity. Increase this value if you want to preserve more rotational momentum and decrease it if you want more rotational responsiveness.

Position Joint Weights - The weights for individual matched joints that were set in the Motion Matching Config module.

  • Weight Pos - The weight of the position of the joint

  • Weight Vel - The weight of the velocity of the joint

Trajectory Weights - The weight of individual trajectory points that were set in the Motion Matching Config module.

  • Weight Pos - The weight of the position of the trajectory point

  • Weight Facing - The weight of the yaw facing angle of the trajectory point

Note: Typically the weighting of the trajectory needs to be higher than the pose to achieve adequate responsiveness. For this reason the default trajectory weights are 5.0 and 3.0 for position and facing respectively.

What Next?

Once you are satisfied with your calibration and have completed the module setup. It’s time to move on to the ‘Motion Data Asset’ which holds the motion database.

{{{ content }}}