GPU Accelerated Playback for Animation

Hey there, Blendbuddies. I hope you’re all having great holidays!

Quick bio here. I’m an actual professional working animator in the game/cg industry, mainly using Maya.
But I use Blender at home for experimentation and personal projects. :slight_smile:

I’ve done a few projects inside of Blender, mainly animation and rigs using the software capabilities. While it can be sluggish at times, I still had some fun with it and managed to complete a few nice motions like this one:

I think my biggest hindrance when using it was performance when moving the rig around and when making a live playback of the motion…

However, as I am now working on a project with a friend using Maya, Maya has a very nice ‘‘parallel evaluation’’ + ‘‘GPU acceleration’’ plug-in functions that greatly speeds-up and improve performance using GPU computing for rigs and animation.

Do you think this is far dream to expect this from Blender anytime soon? Has there been talk about it?

Speaking of which, I’m wondering, those who worked on the short films (Agent 327 and Cosmos Laundromat) what are the tricks they used to fasten the rigs and optimize their animation workflow for better performance?

The characters rigs used in these demos looked extremely heavy and I wondered how animators handled them…

Thank you. :slight_smile:

Well, I happen to be in the industry too and I can say that I find Blender to be one of the quickest to evaluate rigs. Just behind Maya obviously. Maya, since the new scene graph changes is a beast now. The list from slowest to quickest of the software I’ve used goes like this: Modo> C4D> Max> Blender> Maya. So if your evaluation is slow, it’s either your machine or the rig.

Obviously, Blender could definitely use that parallel evaluation trick that Maya has. I saw a prevention on this and it’s my understanding that it’s basically just multithreaded DAG evaluation. I think I remember that the GPU stuff in there was just openSubDiv like we have in Blender now.

About optimizing: Make sure you have openSubDiv turned on if you’re using subdivision surfaces while animating. I usually have don’t have it on though. In fact, in the Scene property panel you’ll see a “Simplify” section where you can set your subdivision globally. It’s great and I use it all the time while animating.

If you want bendy bones or even just wrist and ankle twist bones, don’t use a bunch of individual bones. Instead, use single “Bendy bones.” they work much faster than multiple bones with some kind of twist expression or curve constraint, etc. They are one of my most favorite features and unique to Blender.

If you can help it, try not to build your characters so dense. I know this isn’t an option all the time but even then, optimized meshes with will be easier to animate and in the end, you can just shift all your detail to the render stage with displacement and normal maps. Just something to think about.

The dependency graph is responsible for the parallel evaluations in Blender. As far as I know it is already multithreaded, but it was not possible to parallelize everything without breaking the compatibility. It has been reworked for quite some time now and the new version is going to be part of 2.8. It is not clear to me whether this is going to have a huge impact on the performance however.

They used proxy meshes to improve the performance. According to a podcast they hope to be able to animate with the actual meshes in 2.8 thanks to the viewport and dependency graph improvements.

Double post, sorry