1
$\begingroup$

I'm using the default blender renderer and am trying to animate a scene with a bunch of different meshes (18 of them), all hooked up to the same armature, using the same bones and vertex groups (the vertex groups being connected to the bones). The meshes are different versions of fundamentally the same object. The problem is when I play the animation (of which there is none currently) I get about 5 fps, with all of the objects enabled.

That would seem totally acceptable, as there are 18 meshes, all of pretty good complexity (with normal maps). However, even when I disable all of the meshes except for the 2 that I want, the FPS value is still the same. I even tried putting them all on different layers, but the viewport still clung to around 5 fps.

I've also tried switching from material render mode to solid render mode, and that improved my FPS from around 5 to fluctuating from 12-14. This is still very sub-optimal, as I animate at 60fps.

I looked around a bit for the answer to the question in my title, and couldn't find anything. It's very possible that this isn't a current feature of Blender, as I know for a fact from previous experience that Cinema 4D (with non-PBR materials) renders the viewport with a single thread, and I would be willing to accept that's the case with blender too, so please let me know. If you have any further optimizations, though, please let me know, because I would be very appreciative.

After that, I took a look at the task manager and found I was using around 85% of my CPU, and only around 5% of my GPU (which probably wasn't being used much for blender). So, I was wondering if it was possible to render the viewport with CUDA, as I have an NVIDIA GeForce GTX 1080, which should be pretty effective if what I'm talking about does in fact exist.

If you need me to clarify anything, just let me know. Thanks in advance.

$\endgroup$
3
$\begingroup$

I think you are missing the point of what CUDA is. CUDA is a tooklit for running calculations on a gpu that are not part of a 'normal' graphics display pipeline. In the case of the viewport, rendering is already happening on the gpu using this normal display pipeline (in this case, opengl is the API used to communicate with the gpu).

The fact that playback is slow, and most time is spent on the cpu suggests that the performance bottleneck is somewhere other than rendering. The most likely case for this are modifiers, if they are doing expensive recalculation each frame. Many modifiers in blender are not efficiently multithreaded. Try disabling or tuning as many as possible (e.g hide corrective smoothing, subdivision etc). You may also want to look at limiting the number of armature weights per vertex, as this can cause reduced performance too.

$\endgroup$
  • $\begingroup$ Ah, that makes more sense. As for the modifiers, I think that could very well be it. I tried doing that about one and a half hours before writing the original post, and it didn't do anything to the objects, even after deleting the modifier altogether, for some strange reason. I tried it shortly before writing the original post again, however (about 15 minutes before) and it did make a difference, though I didn't do it on all of the meshes to see how the performance benefitted. $\endgroup$ – ThriftyDonut Aug 20 '18 at 23:36
  • $\begingroup$ Just tried it! I'm now able to hold 60fps. Thanks so much, marking it as the answer. $\endgroup$ – ThriftyDonut Aug 20 '18 at 23:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.