By default, the motion matching algorithm will search linearly through every single pose in the animation database. While this is ok for testing, performance will suffer at runtime due to the sheer number of poses that need to be compared. Therefore, an optimization is required.
Note: Optimization is not turned on by default as it increases pre-process times and shouldn’t be used for initially for fast iteration.
Like most things with Motion Symphony, motion matching optimization is modular and it even allows advanced users to create their own search optimizations for motion matching.
To enable optimization, check the ‘Optimize’ checkbox in the Motion Data editor details panel.
Note: If there is no optimization module specified, this will automatically be un-checked at runtime.
Types of Optimization Modules
There are two different types of optimization modules available with Motion Symphony:
Trait Bins - Poses are structured into ‘bins’ based on their ‘Traits’. When using traits, only ‘required’ traits will be searched (see Traits). This is still effectively a linear search but it does cull a significant proportion of poses provided you are using traits in your setup.
Multi-Clustering - Poses are stored in an optimized lookup table which is constructed via an algorithm that uses multiple passes of trajectory and pose clustering to rationalize the data. Depending on the size of the database, this method culls 90 - 98% of poses from the search giving significant performance improvements.
For more details on each optimization method see further down the page.
Create an Optimization Module
To create an optimization module in the ‘Motion Data’ editor, click the drop down menu for the ‘Optimization Module’ property and choose one of the available modules under the ‘Create New Asset’ heading. You will be prompted to save the asset in your content browser. Save it wherever it is suitable.
To create an optimization module in your content browser directly, right click in the content browser, choose ‘Animation’ and then pick one of the available optimization modules.
Slot this optimization into the desired ‘Motion Data’ asset.
Note: Each optimization module asset can only be used with one Motion Data asset. You cannot share optimization modules between Motion Data assets.
Optimized data structured are generated during pre-processing. You must pre-process your motion data after setting up an optimization module or else optimization will automatically be disabled at runtime.
Note: Pre-Processing will take longer to perform when optimization is enabled. The length of time depends on the optimization being used.
‘Trait bins’ is a very simple optimization structure for motion matching and is used as a base case for performance measurement. It separates poses into ‘bins’ based on their traits so that only poses with the same traits are in any given bin. At runtime, only the poses in one trait bin will be searched and this bin is chosen by the input traits on the motion matching node.
Trait Bins can be used when your animation database utilizes a lot of traits and where there aren’t that many poses in your database. When using cut clips, not many poses are generated compared to motion capture data and the multi-clustering method does not necessarily provide significant benefit.
Multi-clustering is ‘Motion Symphony’s bespoke optimization data structure which uses multiple passes of clustering trajectories and poses to generate a lookup table. By searching only a single column of the lookup table, 90 - 98%* of poses are culled reducing the pose search to a very small number of poses. This provides a significant boost to performance.
Node: * The exact % of poses culled is dependent on the motion database size, animation coverage and settings on your motion-clustering. Animation databases with more poses have more potential for culling. Cut clip sets in general don’t generate many poses and so often less poses are culled. Multi-Clustering is most effective with dense motion capture data.
This optimization should be used with motion capture data or very dense animation data sets.
The way that the lookup table is generated is dependent on the settings of the multi-clustering optimization asset. For most users, the default settings are adequate but they can be modified based on your own animation database to get different results. See the multi-clustering details panel below:
K-Means Cluster Count - The number of clusters in the first clustering phase (i.e. clustering pose trajectories). This will directly impact the initial size of columns in the lookup table before the lookup table is combined and optimized. It should always be less than the ‘Lookup Column Size’. Set this value based on your pose count. Enough clusters so that every trajectory in a given cluster could be considered ‘Similar’
K-Means Max Iterations - The maximum number of iterations for the first clustering phase. The more iterations the more accurate the clustering. However, more iterations also means the pre-processing will be slower. The default is probably adequate for most cases.
Desired Lookup Table Size - The desired number of columns in the lookup table. If every single pose has it’s own lookup column then there will be too much data to store and memory will be severely impacted. Therefore the table columns need to be significantly combined. Table columns will be combined by similarity until the desired lookup table size is reached.
Note: It is not recommended to change these settings unless you know what you are doing.