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!
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.
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.
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.
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
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.