Getting Rid of Fake User?

Isn’t it time Blender got rid of the need for fake user? It appears to be a legacy when a time for reference counting of resources was important but now it seems unnecessary and even worse very unintuitive. What is the actual need for it with modern computers?

If a scene resource is created (mesh, material etc) but not used in the current work session, it will be deleted on save and reload. This is very unintuitive as saving a scene should save everything that was created. It may have been necessary in the <2.5 days but now computers have enough resources to store and manage more data.

What would be better is allowing users to manually clear unused resources in the scene when they actually want to, not on save when they expect to save everything that was created. Another program I used had a simple menu item to ‘delete unused materials’ and this seems like a logical approach for managing unused datablocks.

14 Likes

IMO, i see it as an advantage.
i.e. i delete some stuff, but after a while i’d like to use it again…

Hmmm, am i stuck now recreating it? Nah, i just look it up and bam… it’s used again.

Manual manipulation (check & clean the scene file) is possible via Outliner > Orphan Data > Purge All

3 Likes

It’s pretty simple, I create something you better hold on to it until I press delete, things blender internally creates it can ref count all it wants and delete it at its leisure, but hands off the stuff I make.

This workflow of

  1. spend 2 hours painting a texture.
  2. Better save my data! SAVE
  3. Your texture wasn’t used and you didn’t click the magic F button, so I deleted it, but you won’t notice until the next time you open this file.
  4. Thanks blender… very helpful.

makes it look like the blender devs actively go out of their way to frustrate their users.

6 Likes

Personally I see this feature as an advantage here. With some tweaks, we won’t have to manually delete anything while working on our projects. It just needs more polishing.

To prevent blender from not saving assets we made that aren’t currently used, blender could automatically assign them to a third user. Objects that belong to this third user are always saved, but if they don’t belong to the fake user, or other objects in your scene, they are deleted when we push a button.

This needs to be a third user because we risk losing items like our brush presets if we use the fake user for this feature. When we save our projects, if a texture belongs to this third group but isn’t saved to the disk, blender should prompt you to save it somewhere. If you choose not to, blender won’t save it to the blend.

When you assign assets to an object or fake user, they are removed from this group automatically (edit: now that I think about it, it might be better to make this a session thing. When you make anything inside blender, it gets this status and will be saved with the project, but items don’t have this status after you reopen blender. How do you guys feel about that?). Auto assigning assets to this third group should also be optional, so the user can choose to work using the old style.

Blender should also put items that have no users or only belong to the third group in a subfolder at the top of the dropdown we use to choose materials. A number next to this folder could indicate how many items are unused, and clicking the subfolder should display a list of all the unused materials. We could click an icon on top of this list to return to the list of materials that have users.

1 Like

I’m hoping the asset manager eliminates the fake user thing. The Matcap/HDRIs in 2.8 are a step in the right direction at least.

6 Likes

I’ve always found it weird. Like, cleaning up a file you want to share, I have to do delete orphan data, clear any fake users, and revert file many times to clean it up. When I was new to Blender, the term “fake user” was very confusing to me and I kept loosing a lot of stuff I thought I saved.

Well, at least it is bad design by design I guess :thinking:

1 Like

What do you mean when you say “delete orphan data before it can be shared”. When an asset is orphaned, it’s not saved. You shouldn’t need to manually remove it. That is the whole point of the system.

I have noticed that sometimes when I append in nodegroups, unused groups aren’t counted as orphaned groups. That is the only time I have to purge orphan data. I think this is a glitch or something. It doesn’t always do this.

That is the key here. Its an alien concept. Objectively speaking, it does make learning blender a bit harder, but that is only because its a new mechanic that users need to learn. When you learn that blender doesn’t save data that isn’t used, it becomes easy to work with. I wouldn’t call this an objectively poor design, they just need to tweak it to allow for the sort of workflow users expect.

It is just one more paper cut that makes blender frustrating to learn.

That sounds so complicated for no useful reason. If this made more useful functionality possible fine but it all upends the most sensible method of working for no real benefit and adds more complexity.

You are focusing on why it doesn’t work right now. Try to look at the goal behind this setup. If done properly you wouldn’t have to manually delete anything, and ideally you wouldn’t lose any work you don’t want to. In my personal opinion, it is a goal worth perfecting and with a few tweaks this system wouldn’t hurt usability at all.

1 Like

Agree, fake user is obsolete, and adds unnecessary complexity to workflow. Deleting unused data should be done through orphan data in outliner. Another magical feature is “select selection” thing in outliner… cmoon. Whats next? delete deleted object? Transform transformed?

5 Likes

Nobody wants to wait what override system will look like before having this debate.

As I said, I have to do this (Purge All/Save/Revert) multiple times (5-8) in order to get rid of everything due to dependencies (subnode groups, textures).

Are you using shift when you click the button to remove materials? It should not take all that to remove orphan data.

I’m not deleting materials, I’m deleting all other objects in a scene when I’m trying to create an asset from an object in the scene (if I created that object when doing the scene).

Save as “Television Set” (example) while in an interior scene with 100s of materials and node groups.
Select TV, Select Inverse, Delete Selected.
Wall material is purged on first try, but not the nested node groups within it.
On second try, top level node groups are purged, but not the ones within it.

We either need a (preferred) “Save Selected Objects” (and only stuff linked to it), or a “Purge Recursively” mode.

I see now. I’ve had trouble with nodegroups in the past as well. I always thought that was a glitch. In this case blender doesn’t apply this rule to nodegroups. If a nodegroup has nodegroups inside it, and those nested groups aren’t used anywhere none of the nested node groups should be saved unless they are used in other places as well.

There was an article on the blender code blog that mentioned that a lot of the work on asset management had to do with how blender handles datablocks. Hopefully they’ve changed how it handles nodegroups. Regardless of whether you like or hate the fake user system, we need the rules to be consistent. I don’t like seeing nodegroups stick around when they don’t have users.

add me to list who hates auto garbage collect and fake users.

if anything needed garbage collecting, it should be meshes, lamps etc. animations, images, materials, etc should stick around until purged.

an option should also be available to instantly purge zero user meshes, lamps, cameras, etc upon deletion. default off.

Really, these items don’t need to be auto purged, they just need to be tucked out of the way so they don’t clutter our list of assets. We need something like a recycling bin. If there were an option that made blender automatically add assets to the fake user along with this, we wouldn’t see any complaints about the current system.

Personally, I want to see both an improved version of the default behavior that doesn’t delete stuff you want to go alongside this.

What that guy said pretty much…

“We either need a (preferred) “Save Selected Objects” (and only stuff linked to it), or a “Purge Recursively” mode.”

Whilst I don’t disagree that it’s annoying it’s probably easier to select “television set” and copy (ctrl C) then file–>new (ctrl n) then paste (ctrl v)… then re-open original file or just paste into another instance of blender…

1 Like