That wouldn’t make any difference, since its not the GPU that is really the bottleneck, which is what viewport size etc drives. It’s the mesh/vertex calculations, etc that Blender has to do in order for the GPU to actually have something to display and all that is mostly dependent on the CPU.
Once that is sorted out, any half OK GPU from the past 5+ years could display it at 4K in solid view.
Depends on the machine, that’s why I suggested it. In my case the CPU is not the bottle neck for FPS. Reducing the viewport size and even more so playing animation on a 1080p monitor adds several frames overall.
I’m a rigging noob probably, but when something starts to lag very hard, I think it’s a bad idea immediately and think of something else instead. I just finished a movie, and every single rig is blazing fast. Though on the other hand I know that those rigs could be better in terms of actually helping me animate.
Maybe you need to do a proxy system. Make a rig / model that is there for animators that runs fast. And then make an additional, hidden rig on top of that is only available when you are rendering ( or when you need it ) that will do all of the minor detail work.
This works pretty well for me. I can run eight characters and light background at 24fps for the most part. Although it does nothing to help with the scene getting slow when cloth and hair are added.
Mask modifiers and corrective smooth will lower viewport FPS. Turn those off, you shouldn’t need those to animate.
Turn off auto smooth on your objects if you have it enabled:
(You can turn it back on when rendering if needed)
If either of these gave zero improvement, can you upload your Blend? I can take a look.
If the advice given so far doesn’t help you, then the solution is a simple one: Move to Maya.
Is blender the first 3D software you’ve used? If so then moving to another 3D software should be relativity easy as they all kind of function the same way at the end of the day.
I don’t understand the anger. If the software doesn’t do the job, switch to one that does.
Randy
the sculpting of terrain is faster in unreal but their brushes are limited, they got one that creates erosion, which is fine but I still prefer to rely on gaea even if I am not a gaea expert… the meager results I got in gaea with my beginner into knowledge were already better than what I could get into unreal.
As for the other brushes in unreal engine, theyre heavy to use and if I understand correctly theryre just for prototyping levels. You can do lots of things inside of unreal even create models with some sort of procedural adjustments but all of them are for “testing purposes”… I suppose nobody really uses Unreal engine for something other than creating prototypes.
I noticed also they got a “control rig”, but indeed the performances are that high as I wanted.
only “solution” I found was to basically isolate 1 character and at the very best I get 28fps, not remotely close to 60 that I wanted.
thats all I can do. I suppose I will have to hard decimate all characters to see if I can get 60fps
thats what I am doing. I have to see if theres a software around that can use multicore for rigs or uses some weird magic to skin characters like unreal engine.
For now I got maya but still rests uninstalled and before I will be able to make rigs in maya it will take a while. I got a course that tells me how to make a monocycle in maya but I will take a while before I git gud at it and I make titanic giant rigs with 2000 or more bones.
Sucks you cant do that in blender but whatever, we have to use what works.
Sorry you’re having issues.
If you’re wanting to keep trying with Blender, the decimating trick works for me. And using it, I can get my characters down to 7,000 -9,000 faces from 70,00+, and run multiple characters at 24 FPS (I know you mentioned shooting for 60, but I’ve never tried to get there, so I can’t make promises on that front).
I take and copy my already weight painted model into a new collection, then apply the decimate modifier (keeping it after the armature modifier). It’s not perfect, but most of the weight painting stays good, which might save you some time.
If you’re not, good luck with Maya/Unreal.
So based on this thread and a couple others recently around rigging and maybe performance, I started to get a little interested and tested a couple of things.
This is really early days and I’m even considering a full video, but just trying an initial thing or two out.
My first thought was the actual performance of just the rig, no mesh, no deformation. So I disabled everything else and turned on the display of the deform bones, along with all the standard controls etc.
In other words it was the complete rig (with a dance animation) playing back in the viewport.
It topped out at 100 fps, HOWEVER, I don’t think that’s the limit. I need to test more but I think it just stopped at my current monitor refresh rate, which is 100MHz.
This is based on my Nyssa character, so a full Rigify rig with 1100 bones and all the IK/FK, constraints, etc that is just part of a base Rigify metarig setup.
As such I’m currently thinking that when it comes to rig performance in Blender, it’s not the actual rig itself that is slow, it will playback as fast as your monitor can update.
Hence, the real factor of rig performance is what it is actually deforming and depending on your mesh/character setup, that could be a whole mass of stuff that in some cases has little to do with actual vertex/polygon count and a lot more to do with the modifier stack, etc.
A case in point, on a little more testing, I can hit 44fps with just the main body mesh of my character and no subdivisions. Total faces 7370
Turn on 1 level of subdiv, for total faces of 29470 and the fps drops to 21
However, here’s the thing, because of reasons (which having now done this I may need to rethink) I was using a driver on the levels setting of the subdiv modifier that was adjusting it via a custom property on the collection.
All it did was set the subdiv level from 0 to 1 to 2 and back, sounds simple and a one off check and set.
Turns out it isn’t, for some reason setting the subdiv level via a driver has a MASSIVE impact on playback performance.
The moment I deleted the driver, and just directly set subdiv to 1 in the modifier stack, I still had 29470 faces, but instead of 21fps playback it jumped to… 80 fps.
Now that could be a bug or it could just be how drivers are and I’m using them in a totally wrong way.
Even so, it just demonstrates that it could be anything impacting playback performance that is just part of the overall stack and setup. Of course the moment one say exports just the mesh to say Unreal, well of course it ‘performs’ better, you just removed the whole data stack and setup from the model file in Blender.
There is a lot to know when doing rig, the slowdowns you are having can be caused by many things.
Maya might have better performance, but it’s also very likely to be filled with little things to know about optimizations.
@bandages gave you good advice, but I’m not sure how much you tried them ?
First you can delete all the geo and evaluate only the bone performances, that will give you a baseline.
Then try each mesh one by one to look for potential speedups.
30fps is a good speed to aim, from my experience some shots end up being at 12fps with multiple character, sometime it’s possible to manage 30 but hard to go beyond. Anyway, in the game engine it’s different and our eyes don’t see at 60fps anyway…
You can try to build a simpler version of your rig, it’s common… It doesn’t have to be a chopped version , but just a lowpoly one. it’s possible to have a switch with several versions, like a simplified wings and legs, everything low poly but the face.
in this example : https://vimeo.com/501573823
At 50s we build low poly version of many assets, at 1mn33 you can see a shot with two character + that props maxing at 23fps then groing back to 13fps with the highpoly version of the props.
Character however didn’t have proxy version and we used the final rig every-time for them.
To conclude, indeed blender isn’t the best with performances, hopefully it will improve with time, But it’s an art in itself, autosmooth slow things down a lot, bad topology + opensudiv can slow down mesh evaluation a lot, there are tons of little things to discover.
Maya isn’t a magic bullet either, I heard regularly animators complaining about their slow scenes.
Good luck !
Yup, like what I stated and tested in the post above.
Which I now have a small update to. Blenders viewport performance is tied to the monitor refresh rate.
Now sure the Nyssa character rig may not be the most complex rig ever but it’s still fairly involved and on disabling all geometry in viewport, whatever refresh rate I set the monitor too (I tried 60, 100 and 120) then that was the fps rate that the animation would play back at with only the rig being processed.
From what I can tell Blender doesn’t have a setting to turn vsync off, one would have to do that via the GPU control panel (which I didn’t bother messing with).
Even so, I feel pretty confident in saying that if playback performance is slow, it is highly unlikely to be the core rig (or Blenders overall rigging system in general) that is the cause.
Quite interesting !! good finding, that explains a few things indeed !
And yes, unless there is a really weird setup, bone evaluation isn’t the bottleneck but it’s more geometry that takes time to process.
On top of that each frame that geo needs to be uploaded to the GPU which is time consuming. Probably at some point it would be possible to send only the deformation data which would make things much smoother. That said, with some time spend in finding bottlenecks it’s possible to get rigs fairly usable.
Blender isn’t the fastest but it’s usable in production once you get used to do proper optimizations.
with this 6 bones rig I have ultra hi performances. Tested and works at ultra hi FPS
I’m not too sure what exactly causes other’s slowdowns but like I stated earlier getting the Metal backend rewrite I saw significant gains for my viewport, as seen in the link below.
Only thing I couldn’t keep active was particle hair, but everything else ran at 30 (which is what I animate for) even with Eevee enabled. I routinely hit 60 when I need to but not with Eevee and the characters I use combined.
I’m assuming that once the Vulcan backend gets added for the viewport Windows machines may see a gain in performance too.
I will say that for Macs, not sure if it applies to Windows as my Windows machine can’t hit 30 anytime lolz, that FPS is tied to what the monitor’s max refresh is. if it’s 60 I get capped at 60. If it’s 120 I get capped to 120 regardless of what’s on the screen.
Yes ! to me what make this setup fast is more the lowpoly car than the low number of bones.
To put it simply, what happen when a rig ( armature + geo) is updated ?
First a dependency graph is created to know in which order everything needs to be evaluated, so parents bones are calculated first and child second.
Then each bone transform is calculated, for each bone, only one transform (=Matrix) needs to be computed.
Then it’s about mesh evaluation, but to get the final deformation, it’s needed to isolate which part of the mesh is influenced by each bone then calculate each Vgroup transform, and then mixing between each Vgroup to get the final deformation. Each vertex comes with different Vgroup values so they all need to be computed differently.
My point is, that when a bone cost one matrix transform, on the mesh a lot more is needed to get the final shape.
Some games don’t even have 60 FPS (it’s becoming common now, though I personally prioritize shading/lighting over frame rate when gaming), but regardless, I don’t think the framerate you get while working in the viewport affects your framerate in your final animation?
Obviously a sluggish 10 FPS will be laggy and inconvenient to work with simply from a usability perspective, but most people do get an acceptable performance with typical rigs and meshes on typical spec computers, which is why you weren’t warned ahead of time that it would be this bad.
There’s probably something “off” with your character mesh or rig that’s ruining your performance, and the less experience you have making these from scratch, the more difficulty you’ll have trouble-shooting. I’ve personally never had too much trouble with rig performance.
My suggestion, learn to rig by making a rig from scratch not by cloning another rig. It’ll be easier to see where performance is taking a hit if you work with a rig you’re creating yourself.
In addition to the other optimization and troubleshooting advice here, you could also try pulling your character and the rig into a fresh blender file, free from baggage.
You also have a vastly different mesh than the mesh you were showing in an earlier picture.
Number of bones is rarely the problem. Like, almost never.
Well, biggest bottlenecks are in the modifier stack, obviously many bones and each constraints do have a computation cost, but it’s really nothing in comparaison.
This is an extreme example with a subdivided cube deformed by a wave modifier…
Here is how subdivs handle quads :
subsurf level 2 : 6000 faces, 12 triangles, all quad mesh , 60fps…
subsurf level 1 : 2300 faces, 4600 tris, all tri mesh, 30fps…
This case seems obvious, but I recall someone complaining about a slow character, and I eventually find out a lot of tris within the mesh, and removing them gave a great performance boost…
It’s not always obvious where the issues lies, best is to take the time to optimize the meshes / modifiers by doing profiling and testing different things… By finding the heaviest meshes it’s possible to work with that and in many case you can get a 30 to 50% boost by tweaking a few things there.
Spending a day optimizing seems a lot but it’s worth the effort when working with it on the long run.
Finally 24fps is correct to animate, unless you start to key every 60 frames per seconds and you have a owl vision to see the difference.
Below 12fps it’s getting difficult to work, but 24 should be enough to work and after that it’s playblast exports that help figure out remaining bits …