Motion Matching: Debug visualization improvements
* Moved reposibility from the instance to the system component to render debug visualizations. Why? To make sure all motion extraction deltas got applied to the character already and avoid any mismatches between last and current frame (resulting in visual jittering).
* Added frame database stats to the ImGui monitor.
* Switched ImGuiMonitor from internal histogram group to the now shared version in LYImGuiUtils.
* Added a new debug draw bus that the motion matching instance hooks to, so that the system component can control when to render debug visualizations.
* Added class description for the motion matching instance.
Motion Matching: Enable test builds in CMakeLists.txt
Motion Matching: Updated camera controller graph for automatic demo
* Simplified the script canvas graph of the camera controller for the automatic demo.
Signed-off-by: Benjamin Jillich <jillich@amazon.com>
//! The instance is where everything comes together. It stores the trajectory history, the trajectory query along with the query vector, knows about the
//! last lowest cost frame frame index and stores the time of the animation that the instance is currently playing. It is responsible for motion extraction,
//! blending towards a new frame in the motion capture database in case the algorithm found a better matching frame and executes the actual search.
/// Buffers used for the broad-phase KD-tree search.
/// Buffers used for the broad-phase KD-tree search.
AZStd::vector<float>m_queryFeatureValues;/** The input query features to be compared to every entry/row in the feature matrix with the motion matching search. */
AZStd::vector<float>m_queryFeatureValues;//< The input query features to be compared to every entry/row in the feature matrix with the motion matching search.
AZStd::vector<size_t>m_nearestFrames;/** Stores the nearest matching frames / search result from the KD-tree. */
AZStd::vector<size_t>m_nearestFrames;//< Stores the nearest matching frames / search result from the KD-tree.
FeatureTrajectory*m_cachedTrajectoryFeature=nullptr;/** Cached pointer to the trajectory feature in the feature schema. */
FeatureTrajectory*m_cachedTrajectoryFeature=nullptr;//< Cached pointer to the trajectory feature in the feature schema.