Mesh Animator - Highly efficient animated crowds. For support, please use email.

Hey everyone! My new asset is available in the asset store! With Mesh Animator you can animate thousands of meshes uniquely with minimal performance impact! Be sure to check out the performance comparison build and documentation pages, and feel free to reply in this thread or email me with any questions you may have. Happy animating!


Asset Store Link
Documentation
Version 2.0 Release
https://www.youtube.com/watch?v=_SqJw1XXQZM
FPS Zombies Comparison
https://www.youtube.com/watch?v=5S0IzCDd9To
Version 1.5 Release
https://www.youtube.com/watch?v=ddXJ9S20fRE
Basic Conversion Tutorial
https://www.youtube.com/watch?v=N4wsD15kIgo
Mecanim vs. Mesh Animator Performance
__**https://www.youtube.com/watch?v=MZOUz-11EXE**__

Version 2.0
Full GPU instancing and custom shader support
GPU animation texture bake mode
Complete refactor
New documentation!

Version 1.5
Improvements and Changes:
Added support for exposing transforms! Have animated child transforms just like in the original object.
Added support for multiple materials and submeshes!
New support for root motion animations. None, baked, or apply the motion to the transform at runtime.
Added support for the Optimized Game Objects option in the model importer.
No more need for an animation controller for baking, just add your clips and bake!
Baking humanoid rigs should work much, much better, on a wide variety of objects.
Completely re-wrote mesh combining to be more efficient and accurate.
Completely re-wrote crossfading code, increasing performance and reducing garbage allocations.
Adding custom clips can now be done by selecting root assets.
Added an option for skipping the last frame of animation for looping animations.

Fixes:
Greatly reduced garbage collection in mesh frame generation.
Play() method is now case-sensitive.
Phantom bake objects will no longer appear and remain in the scene after baking.
Bounds for meshes while crossfading should now be correct.

4 Likes

nice work. The only negative is that it used double the memory. For mobiles that can be an issue. But in most cases it will be fine.

Ill probably purchase soon

Well done :slight_smile:

Yeah with the example it uses a relatively high-poly mesh so memory usage is definitely higher than a typical mobile character. I cover the reasons why and how to avoid high memory usage in the documentation. You can have a look here: http://jacobschieck.com/projects/meshanimator/documentation/documentation.html#memory

1 Like

“Memory usage is the same whether you are displaying 1 character, or 1000 characters”

but the demo showed the memory increasing with the same mesh cloned… right?

are you saying if the one mesh is say 5mb then having 1000 would be 1000 x 5?

Memory usage increases as more frames of animation are requested and the meshes are created. Once all frames of animation are generated (which can be done on the fly or on instantiation), then the memory required for each clone won’t increase, other than what’s required for the GameObject and it’s Components. Perhaps I could word that a little bit better.

Let’s assume a character takes 5MB for all of it’s frames of animation, it won’t take any more memory to display 1000 of those characters since all the meshes are shared between them.

In the demo if you spawn one character and let it complete all it’s animations, it will generate all it’s animation meshes, and memory usage will stop increasing. Then spawning more of the same mesh won’t increase the memory required from the Mesh Animator for that base mesh.

Does that make sense? I tried to explain it the best I could.

2 Likes

yep you explained it perfectly :slight_smile:

I think I can get good use out of it.

Version 1.0.4 update
Changes:

  • Animations can now be baked at any FPS
  • Each animation can be individually baked if needed
  • Now compatible with post-processed meshes
  • More performance improvements

Fixes:

  • Fixed Crossfade method not working when calling from Javascript
  • Fixed animations not slowing down with slower playback speeds
  • Fixed some WrapModes not working as expected and not firing events

Can you upload video of performance test in a mobile device ? (with crossfade)

Sure! I’ll do it as soon as I’m home later today. Performance for crossfading is highly dependent on the number of vertices * number of meshes currently fading, since it has to Lerp all the positions per frame. I’ve got some major performance updates for crossfading coming in the next update that should greatly improve it’s performance.

Here’s a video I captured of it running on my Galaxy S4. I’ve submitted a new version to the asset store which has optional threaded crossfading for even better performance.

Version 1.0.5 is now live in the asset store with multi-threaded crossfading and significant crossfading performance improvements.

Thanks for the recording, seems like a great asset, definitely a buy.

this look like i like but how use him in action ?

Hey kilik! I’m not sure if I understand what you are asking, what do you mean by use him in action?

in game what’s it’s possible to make for exemple collider and navmesh can be hard to script ? no ? on mobile
it’s can do on real time ? Each animation can be individually baked if needed < it’s want’s say i can shoot one unit l)
working with blendshape < joke
so yes how it’s works it’s merge skinmesh

Must they all play the same animation at the same time or it can be different per character?

Yes they can all play different animations at different times, but they all pool their resources together for efficiency.

about 500 animals. with realtime avoidance. mesh animated. realtime. webplayer.
Just a technology test. Rotation Lerping is a bit off, and half the fish accidentally transport a few thousand meters to the right (doh, var init val foof), I’ll take a look at fixing it maybe.
However this demonstrates the systems efficiency.

This would simply not be possible with regular methods.

Looks great! Glad you were able to get everything working!

1 Like

Gg:)