Is there any performance (or other) advantages in using Post Process Anim Blueprints on top of regular Animation Blueprints?
MetaHumans and other Epic characters usually use a Post Process Anim Blueprint for corrective deformation and other visual stuff. Is there any reason for it? (aside from keeping it separated from the gameplay logic in the normal animation blueprint).
Performance wise, would it be the same to put all the corrective deformation / physics in the regular animation blueprint and not use any Post Process Anim Blueprint?
You basically have the right of it. Post-Process Anim Blueprints are for tying specific animation graph logic to a mesh, usually for something unique to that mesh. There isn’t any performance benefit or loss beyond that extra work. For Metahumans specifically, the post-process animation blueprint usually contains the rig logic node that uses the definition metadata of that head. Because that data is unique to each head, the post-process animation is the best place to put that.
You’re correct on all accounts there as well. When viewing single animations, we run the post-process animation, but we cannot currently run the animation. Under the hood, we create a dynamic and very simplified animbp that runs to pose the mesh as a preview. If you want to preview deformers, ML Deformer, rig logic, and control rigs that modify bone positions with RBF setups (or something like twist bones in a forearm), you’ll want to do that in the post-process animbp to see what the mesh is doing.
It makes sense that you would only use Post-Process Anim Blueprints when there’s certain logic that is unique to each skeletal mesh but you still want all of them to share a regular animation blueprint across them.
I guess it’s easier to split this unique part of the logic with Post-Process Anim Blueprints instead of having to create some extra logic inside the regular shared animation blueprint to execute different types of logic depending on the skeletal mesh linked to it at runtime.
Another thing I have noticed is that with Post-Process Anim BPs you are able to preview its effects within an animation sequence. So, for instance, in MetaHumans, you can view the deformation inside any animation sequence and not only when the game is running.
Is there any way to preview regular animation blueprints within animation sequences? If you have both the gameplay animation and deformation logic in there, then it I guess it can get cumbersome to only execute the deformation part when playing an anim sequence in the editor. I am also not sure if a regular animation blueprint would actually execute when playing an animations sequence (in the editor) as the asset does not know about its connection to it (that would be set up in the character blueprint used in-game).
My conclusion to this is that if I want to preview deformation within animation sequences then it is just better to use Post-Process Anim BPs for that logic. But I wanted to double-check just in case I’m missing something.