Is Motion Symphony a character locomotion system?
No, motion symphony is a set of individual tools for animation synthesis which are not intended to be used in a predetermined rigid structure. While Root Motion is supported (like most default UE4 nodes) it does not handle movement or any other locomotion logic.
Do I have to use Root Motion for Motion Matching to Work?
No, you don't have to use root motion at runtime for motion matching to work. However, your source animations MUST contain root motion data otherwise a future and past trajectory cannot be automatically calculated during the pre-process phase. In-place animations (without root motion data) cannot be used with the motion matching node.
What about foot sliding?
Motion Symphony is intended as a generic set of tools providing animation synthesis using the motion matching and pose matching techniques. Foot sliding mitigation such as foot locking, IK and animation warping are out of scope for this plugin. Developers are expected to seek their own solutions for these aspects of animation.
Does it work with Quadrupeds?
Motion Symphony is designed to be a generic tool, meaning it isn't geared towards any particular character setup. It matches bones and trajectories and doesn't care much whether your character is a humanoid, spider or a dog. The only difference is the bones that are to be matched and the animations that you have available for your character. On a technical level, there is nothing stopping Motion Symphony being used on Quadrupeds but it has never been tested due to availability of animations.
Is Motion Matching a 1-Click Solution for Animation?
No! The intention of Motion Symphony is to improve animation fidelity, not to make the animation workflow easier or faster. While this may be the case for experienced users, it is a side effect of the tool and not the primary goal. Motion Matching has a big learning curve to fully appreciate and a fast workflow might not be achieved until users are more experienced. Do not expect Motion Symphony to automatically make your game have AAA animation without any effort.
Can I use any animations with Motion Matching?
No. While Motion Symphony goes beyond other motion matching tools to support cut clips and non-mocap workflows, there are some animation requirements that need to be followed in order for motion matching to work sufficiently. The final result is always dependent on the source input animations and good coverage and continuity of motions is necessary. For more information please read this guide. The guide was originally written for ‘Motion Matching for Unity’ but all the concepts are the same for Motion Symphony.
Note: All animations used with Motion Matching must have root motion data in them for the pre-processing stage. However, this does not mean you have to use root motion at runtime. Runtime root motion is optional.
Can I get the same results as mocap* using only cut clips?
No. Cut clip animation sets don't contain the same level of diversity and variation of motion and character movement as full mocap sets takes. Therefore, it is impossible to get the same level of fidelity with cut clips. For cut clip workflows it is recommended to use the pose
nodes to get the best results possible.
Is motion matching for beginners or hobbyists?
I do not recommend motion matching for beginners or hobbyists. There is a steep learning curve for using motion matching because it behaves very differently to traditional animation and the animation requirements can be quiet high. It is recommended that users have a solid understanding of the UE4 animation environment and also a good grasp of traditional methods of animation. Motion Symphony is designed a set of tools and not a hand holding animation system.
Does Motion Symphony use Machine Learning?
Motion symphony does not use machine learning to achieve it's results, instead it uses the reliable traditional method of motion matching except with a highly optimized search data structure instead of a linear search. Machine learning animation systems tend to run too slow for realtime application and the results are not always ideal. While machine learning is the cutting edge of animation in academia it is not yet in a production ready state to use reliably in games.
What about Learned Motion Matching?
Learned motion matching is a very promising technology which uses motion matching to train a series of neural networks to reduce the memory footprint of motion matching. The visual results are near identical but the performance, while far better than other ML methods, is not quite as fast as a well optimized motion matching data structure. Motion Symphony does not currently utilize learned 'motion matching'.
Does Motion Symphony Use Every Thread?
No, and it’s not necessary. If you have a lot of characters all using Motion Symphony nodes, they may all update on different threads, however, a single character will only update on one thread (even for motion matching). The thread that it runs on is managed by UE4’s animation task system which runs animation updates on different threads according to current CPU load. It may update on the main thread one frame and then on a worker thread the next. The multi-clustering optimization makes the motion matching fast enough that the overhead of spreading the load of one motion matching node over several threads does not necessarily result in a net benefit.
Additionally, having multiple character’s that use Motion Matching will naturally spread the load over several threads. But it will be one character per thread rather than all character’s on all threads.
Does it Replicate?
In UE4 animations don’t actually replicate themselves. However, the animation graph inputs do replicate and this causes the animation graphs to remain in sync. Motion Matching is no different in this sense that if you want to replicate it you need to replicate your inputs into the system. In the simplest case this means replicating the input vector for your trajectory generator.
Unfortunately, due to the nature of motion matching, it is likely that even if the node input is replicated, the pose may be slightly different due to different frame rates on different PC’s causing the pose search to take place at different times. For this reason, when making networked games, animation should be cosmetic only and root motion should not be relied upon for movement. This is normal for most networked games.
Can Motion Symphony be used with Strider or are they independent workflows?
Both plugins are designed to be a set of tools or animation nodes that simply do what they say on the tin. Because of this they can be used together to get enhanced results. However, the way you use Strider with Motion Symphony is different to the way you would use it on its own. It also depends what animation nodes from Motion Symphony you are using so for the rest of this answer I will be referring to motion matching specifically.
First lets talk about the Bank and Acceleration nodes in Strider. There isn’t much use for these as motion matching will most definitely do a better job by default.
Secondly there is the slope warping node where the use case is identical with or without motion matching.
The stride warping node can be used to get in-between speeds that your motion matching source animations don’t cover.
Finally the orientation warping node may be used in the future to make error corrections for the character’s movement while motion matching. This is not directly supported in Motion Symphony in version 1.0 but it is a planned feature for the future.
What platforms are supported?
Only Win32 and Win64 are supported. It is possible to use Motion Symphony on other platforms provided you have source access. However, there is no guarantee that it will work as intended on platforms other than windows.
Why does my character still run into the wall with motion matching?
Motion Symphony is an animation synthesis tool, not a character movement, environment detection or character logic system. The motion matching simply matches the trajectory provided to it. If you want the character to stop before hitting a wall you need to detect the wall your self and modify the trajectory input itself. Advanced users can consider writing custom trajectory generators in C++.
Do I need to use C++ to use Motion Symphony?
No, all the functionality that 99% of developers will use is accessible and controllable through blueprint. Only the most advanced users may desire to use C++ with motion symphony to create custom optimization modules or custom trajectory generators.
Why is Distance Matching Experimental?
Motion matching is the flagship technology of Motion Symphony and therefore, the majority of time and resource has been spent on creating a solid ground work for motion matching. The pose matching nodes and distance matching nodes are designed to support this and therefore don’t receive as much priority during development.. However, distance matching won’t remain experimental as it is a vital part of the final vision for Motion Symphony.
* Mocap - In this case mocap refer to full takes (dance cards) recorded specifically for the purposes of motion matching. Even if the cut clips where originally captured with mocap they are not considered cut clips for the purposes of this manual.