Motion Symphony - Motion Matching & Pose Matching Tools Plugin

Hey

Any updates ?

Plenty of progress but not a whole lot to show at the moment. A lot of it is internal / performance / utility related.

  • Very effective implementation of pose culling for optimization (Only searchs 2.5% - 10% of the poses in the database now) no longer only brute force.
  • Runtime & pre-process mirroring for extra animation coverage
  • Working on motion matched blend spaces
  • Numerous bug fixes and stability improvements.

At this point, I’m pretty much on a war path to get all the release features done. There’s always a lot of work involved in the last 20%.

A bit busy at the moment with various things but I might put out a video relatively soon on the status.

What’s the performance impact of something like this used on lots of characters at once?

It’s difficult to say because I’m not quite done on the optimization side and I plan to continually optimise following the release. However, It’s worth noting that motion matching isn’t necessarily bad for performance in of itself despite popular belief. The below video is a test I did for my current motion matching plugin in Unity and it’s running 900 characters above 30fps… at which point the underlying engine animation system is becoming the bottleneck rather than Motion Matching. I believe with the power of C++ I can do even better in UE4… Keep in mind that is just a test and not a realistic game scenario where there are other things fighting for time.

For the UE4 one, things are slightly different but I already have some unique optimizations. Not only is the pose search multi-threaded, I’ve also managed to develop an algorithm that culls 92% - 98% of poses from the search which has a massive positive impact on performance. You can see an example of this in a tweetI did a while back.

On top of that, there are things you can do to improve performance as the user. Obviously the more animation data, the more performance impact. However, you can split the data into separate states and significantly reduce the amount of data being used at any one time. While you’ll still have a state machine it will be vastly simplified and very easy to follow / setup. The idea of using motion matching as just 1 single monolithic animation node is cool and interesting but I’ve found it’s not very practical and It’s not the ideal way to use it.

It’s also worth noting that Motion Symphony is not an ‘All In’ tool. It is an animation toolbox that should be used when and where it is appropriate. You can use it alongside any other animation nodes in the animation graph or even turn it off or reduce it’s quality based on LOD. You can set it up to not run while the character is idle or only use it for certain situations. It will also come with several other pose matching and distance matching nodes which are very fast and a good alternative to pure motion matching for some tasks.

Anyway, there’s a lot to it really and I’m only going to be able to give a solid answer closer to release. I will be doing performance stress tests for MoSymph before release and I’ll probably release that as standalone so people can test on their own machines. I’m pretty confident that it will be as fast if not faster than a very complex state machine, provided it is done right.

Using general animation techniques for crowd simulation rendering is very heavy even if it is not motion matching.

Skinning isn’t a light task at all, and DC isn’t easy to render over 1000 in Unreal.

That’s why in Unreal, such tasks are usually handled by Niagara.

Skinning or animation can also be processed with Compute Shader. Because it is so small that it is almost invisible.

It seems there is no need to worry so much about motion matching for just a few characters.

https://forums.unrealengine.com/core/image/png;base64

https://forums.unrealengine.com/core/image/png;base64

Will this plugin support non root motion movement ?

Ie. Matching cpasule kinematic movement and trying to select best animation for capsule trajectory, instead of moving capsule by animation root motion ?

is there a limit to the number of threads it can utilize?

Fabulous work.
I am waiting for your plugin. Will it be released this year?

On Twitter, Kenneth has announced 17th of May as a probable deadline for the first iteration, thought I’d let you know…

https://twitter.com/KennethClaasse2

1 Like