Bake Your Animations to Greatly Improve Performance...For Some Use Cases




Published: 08 Nov 2022

In this Unity tutorial you will learn how to bake animations as a series of "snapshots" of meshes. These snapshots can be taken at a configurable framerate that suits your game.


The concept here is attacking a similar problem as Animation Instancing: https://blog.unity.com/technology/animation-instancing-instancing-for-skinnedmeshrenderer, but is still handled by the CPU and does not require any "shader magic" to manipulate the vertices.

It also does not reduce the Draw Calls, as Animation Instancing will do. Instead, this approaches the problem by resolving the "CPU Skinning" taking up a lot of CPU time on the main Unity thread to improve FPS.


This can be taken one step further to batch all the meshes into a single draw call per material via Graphics.DrawMeshInstanced(): https://docs.unity3d.com/ScriptReference/Graphics.DrawMeshInstanced.html

Strangely, with my initial attempt, the performance was actually worse than what is implemented here. I didn't have time to dive into that and the performance here was "good enough" for my use case.


๐Ÿ‘จโ€๐Ÿ’ป As always, the full project code is available on GitHub: https://github.com/llamacademy/baked-animation-meshes


๐Ÿท๏ธSave 25% on the ultimate C# IDE: JetBrains Rider with code LLAMACADEMY: https://www.jetbrains.com/store/?section=personal&billing=yearly


๐Ÿ“š Resources

โšซ Bake Skinned Mesh Renderer Mesh: https://docs.unity3d.com/ScriptReference/SkinnedMeshRenderer.BakeMesh.html

โšซ Graphics Draw Mesh Instanced: https://docs.unity3d.com/ScriptReference/Graphics.DrawMeshInstanced.html /

โšซ Animator Play: https://docs.unity3d.com/ScriptReference/Animator.Play.html

โšซ Animator Update: https://docs.unity3d.com/ScriptReference/Animator.Update.html

โšซ "Woodsman the Peasant" video that inspired this one: https://www.youtube.com/watch?v=DMdncCPpjyE


๐Ÿงก Believe in LlamAcademy's mission and have received value from the videos? Here's how you can show your support:

๐ŸŒŸ Patreon: https://www.patreon.com/llamacademy

๐ŸŒŸ YouTube Member: https://www.youtube.com/channel/UCnWm6pMD38R1E2vCAByGb6w/join or click the Join button on any video

๐Ÿ“š Take my Unity ShaderGraph Course:

https://www.gamedev.tv/p/unity-shader-graph?affcode=45216_kuvg0bp7

๐Ÿ‘• Get yourself some LlamAcademy merch: https://llamacademy.myspreadshop.com/

๐Ÿ’ธ Use my Affiliate Link for Humble Bundles https://humblebundleinc.sjv.io/9g4ak4

๐Ÿ’ธ Publisher Sale! 50% OFF an entire publisher's Assets! Publisher changes weekly! https://assetstore.unity.com/publisher-sale?aid=1101l9QvC (affiliate)

๐Ÿ’ธ Save up to 50% on NEW Assets: https://assetstore.unity.com/?new_sale=true&orderBy=1&aid=1101l9QvC (affiliate)


Some links may be affiliate links, which at no additional cost to you, gives me a small portion of the purchase.


Connect on Social Media

Some links may be affiliate links, which at no additional cost to you, gives LlamAcademy a small portion of the purchase.