Blender Object Mode Performance

Considering the success of the Blender Edit mode thread to improve Blender’s edit mode performance, see below:

The time has come to discuss the Object mode performance, which has spawned more and more discussions recently in the aforementioned thread than Edit mode.

So to start off, if we need to link in files externally to improve performance, there should be an edit in-place feature that allows you to edit external files within the context of your current file.

1 Like

@eobet have fun! I’ll grab my popcorn :wink:
Let’s keep this thread for constructive feedback not major rants, okay?

1 Like

There is an addon that ships with Blender called “Edit Linked Library”.
It lets you select a linked object and then hit the edit button. Blender will automatically open the correct file. In this newly opened file you will get a “return to original file” button which will take you back to your scene.

This addon is useful but one caveat is that it closes the original file. So with large files you will have reload the whole file which can be time consuming.
Now, since for some reason reloading the whole file is a lot faster than only loading the linked library this has not been that problematic up to now. But I believe there has been some progress on speeding up reloading only linked files.
Therefore it would be nice if the addon could open a new Blender instance with the linked library and then present a button which automatically only updates the linked library in question.

Ideally, the file would be opened within the current scene and grey out the current scene until the linked object way saved/ closed. But Blender won’t let you edit any other files other than the current file (which has proven to be a major issue for the Asset Browser).

1 Like

That would be great. But since Blender starts up in only a few seconds (or even instantaneously on Linux) I could live with opening another Blender instance and then pressing a button to automatically update the linked file.
Sometimes this would even be better than graying out the main Blender instance because I often have to look up stuff in the main file while editing in the asset file.

Why not have both? Sometimes you need the context, sometimes you don’t. There usually is an option in other software to do one or the other.

1 Like

@Lumpengnom by the way, you can double click an asset to edit it in another Blender window too, if you configure the keymap for the asset browser. Double clicking a thumbnail opens another Blender instance with the file.

1 Like

Ooooh, nice :smiley:

I rarely use the asset browser for linked files, though. The reason is that the assets from the asset browser can only be linked with an absolute path.
If you work in a team or just copy the project to a backup then linking with a relative path is essential.

1 Like

Yeah true. There are Asset Browser meetings every other week. Maybe you could advocate this point there, see: https://devtalk.blender.org/t/2022-06-02-pipeline-assets-i-o-meeting/24447

2 Likes

Mini-rant time! I was excited to see a Blender native environment that I could actually use at work on Turbosquid, but I’m now a few hours into editing this disaster, and oof… whoever did this file applied every modifier, including arrays, doesn’t understand or don’t care about linked objects (very few instances in the scene), however… and here’s an important distinction that I’ve mentioned before between 3D Studio Max and Blender… regardless of how crappy a model you buy in Max, the performance doesn’t suffer. You might tear your hair out editing it, but it’s extremely difficult to cripple Max.

This scene? It freezes the entire Blender app for several seconds every. few. seconds.

I can hide ALL OBJECTS except the one I’m working on, and it still freezes up every so often!

Oh, and the best part? After a little while of this, Blender hard crashes with no logs or anything. And when I load the last save, like most of the linked instances I set up are just missing. I have the first and last instance, but the ones I hand placed in between? Gone. And Blender didn’t crash close to the time I saved. I really should break this out into an “object mode performance” thread but I don’t want to be the person to create it…

PS. We tried this on two different PCs, including a coworkers brand new 3090 based workstation.

2 Likes

Does this happen if you turn autosave off?

Do you hide with the eye icon or with the monitor icon. The eye symbol only hides it from the user but Blender thinks its still there. If you hide it with the monitor icon Blender will not have to calculate the object and therefore become faster and not freeze.

For large scenes it makes sense to use linked instances from external files. That way the saving won’t take long because your master file you are working in is very small.

2 Likes

Yes Max seems quite good at handling huge scenes.
But it should be possible to turn the scene back to a workable state.
Generally when you get models from the web you save some time but you need to fix some stuff, especially in a case like this where there is a lot of objects.

As Lumpengnom said, hiding with the eye won’t change performance, you can hide either with the monitor. Or put objects in a collection and disable it with the square.

It’s quite possible that a few objects provide most of the slowdown, the plants seems quite detailed.
But that can come from somewhere else.

I’d start by instancing as much as I can similar objects with CTRL-L → Object data, so you can reduce the size for free. Array will reduce file size, but not performance.
But probably it’s not the chairs/tables that are problematic here.

And then slowly investigate to find the most problematic objects.
Linking objects from external file is great too , but maybe that can come latter. I find better to have everything at hand and not have to jump between files in the beginning.

After a day of cleanup you should have something much better, and you’ll have still saved some time over doing the scene manually. That’s my personal experience when getting models. It saves time but you’ll have to include manual work in some way or another.

1 Like

max is harder to break, but i can tell you stories of hidden keyframe remnants that we could only purge with a script… You could make a scene with 300 mb and absolutely no visible data where this comes from. (thats a few years back but still…)

My personal policy is - nothing ever gets into an production file before it taken down to its bolts and pieces, checked and reassembled… Sounds like overkill, but in the end still more economical than having your scene destroyed by some tiny prop that has a 300 node shader, 5 levels of subdiv and a bevel on top for good measure…
To not make this a pure anecdote reply:
I was thinking in the last weeks about writing an addon that makes a scene diagonstic report - and highlights things that might seem off… Maybe something like that exists already?

2 Likes

The thing I despise about this is that you have to work on the object out of the context where it will be used which is a whole bunch of back and forth and trial and error. Alternatively you work on the object in the context of the final scene and then have to move it to another file and then link it back in. And then if you have to make more changes to it you have to append it back in, change it in context, move it back out and link it back in.

Surely there must be some way of achieving a temporary live link between an un-saved file currently being edited and the main scene file where that file is linked in.

I have a much simpler scene that I edited to use collection instances and shared object data and viewport navigation is still a chore in wireframe view but not bad at all in solid view or solid x-ray view. It seems very strange.

After a day of cleanup

I have much much simpler free scenes that I’ve been cleaning up little by little over many many days over many years. It is unacceptable that so many blender-native files out there make use of zero blender features that can make the file smaller and more performant and more flexible. In some of the much older files it boggles my mind what kind of super-computer they created these scenes with so long ago. I guess it is proof that the money they saved not paying for Maya allowed them to splurge on hardware, lol.

Many softwares nowadays have an edit in place feature even for linked content, that’s what Blender needs.

3 Likes

There is this addon: FinalCheck - NO MORE Rendering Failures
It checks for discrepancies between viewport and render settings and some extra stuff.

Also this one: Blint - customizable Blender "linter" for project standardization
It adds customizable rules for user to setup.

7 Likes

Thanks for the referral Format64!

I took the liberty of checking FinalCheck - although its checks are simpler, it’s much more user friendly than mine imo. I’m still figuring out on making an interface for creating rules, so artists don’t need to delve into the Python. If you’re good with writing some simple Python, have at it (I have a config in the repo as a reference too).

I also developed an addon that may be more in line with Atair’s question. It reports the general statistics of the scene: modifier and material counts (and amount of nodes within the material), mesh stats (with modifiers applied or not), etc. It can collect them by collection or object, which is helpful to find what’s likely the most complex components of your scene.

Here’s the link for that one: semagnum/blender-scene-complexity (github.com)

1 Like

But, all that time is money. Sometimes I just don’t have time to clean up everything. If my DCC can just churn through, it saved time and money.

1 Like

Then use max.

1 Like

One side node on Max. The trick in Max is pack all in groups, that will speed up viewport, because, then only a few objects may be selectable and this helps. You can do that in Blender with collections too, just instance them or you pack that in background scene and only have the stuff in front, that you want to manipulate. Will speed up workflow a lot.
My trick is to pack complex objects into geo node and that way I can have millions of poly live inside that geo node, even if its in a linked scene.
On the contrary you can ruin an 3dsmax scene by selecting all and the dissolves all groups. You see Max user faces melt if you do that. Performance will be terrible. I know that, worked with that shit 15 years… no way back.

2 Likes