Match Feature | Bone Loction {{ currentPage ? currentPage.title : "" }}

Size: 3

Input Response Feature: No

Quality Feature: Yes


The ‘Bone Location’ match feature is the bread and butter of pose matching. By comparing bone positions relative to the root, it is easy to determine which poses match closely and which do not. Most motion matching setups use at least 2 to 3 bone location matches, typically the feet (or ankles) and a stabilizing bone like the upper spine or the hips. Matching the feet is very important as these are the bones that have the most motion in general humanoid locomotion. Matching a stabilizing bone like the torso or hips can help with things like crouching or overall stance as well as body twisting.

A common misconception of motion matching is that a lot of bones need to be matched but this is simply not true. Most of the time, the two feet are sufficient to achieve a solid starting point. However, some games may have animations where the hands have a lot of motion as well, for example a tennis game. In the case of non-humans, it may be desirable to match all the feet of a creature. Essentially you want to have a ‘Bone Location’ feature (or combined location & velocity) for the extremities that drive the motion.

Note: Bone Location is commonly coupled with Bone Velocity match feature. See the ‘Bone Location & Velocity’ Match feature if you wish to use both features for the same bone.

Note: While it may be tempting to add more bones, the goal should be to minimize the number of bones matched in order to get the desired result. Each bone location match increases the pose search time linearly by 3 float comparisons per pose so take this into consideration.


The settings for the ‘Bone Location’ match feature are as follows:

Default Weight - The weight, or importance of the match feature as a whole when considered for pose matching.

Bone Reference - Which bone to match location.

Data Layout

The ‘Bone Location’ match feature consists of 3 floats representing a position vector of a bone relative to the character root. The data layout is as follows:

|| Vel_X | Vel_Y | Vel_Z ||

{{{ content }}}