Should fake users be enabled by default?

If you don’t already know what the fake user does, please don’t first inform yourself about it - just vote for “What is a Fake User?”. It’s important to know how well the concept is even understood in the community.

There is no poll enabled? - I take that back! I didn’t realize my adblock was enabled on this site. - Or that I had to wait a bit first before seeing it.

Apparently you can’t edit the poll before posting the thread. It’s there now.

Update: No, it’s not your adblock :wink:

Ah, I thought it was a weird adblock thing. - But yah, I have no clue what a fake user is.

Definitely for animations. I’ve never seen it as much of an issue in other places though.

1 Like

Definitely for animations, but I think that is mostly because the other data types already get a fake user or do not need one. As I said, I really don’t care if Blender uses “fake users”, reference counting, tree walking garbage collection, or really any data management scheme they dream up for handling things internally. The issue is about how the end-user is required to act and, frankly, making them press a small button they otherwise would need no knowledge about for most tasks is ridiculous.

I’m personally interested to see how long this thread survives. Apparently when something gets enough of the community animated for change, it’s time to start clamping down on their expression of that desire :frowning:

I voted to have this enabled by default for animation, but in general, Blender is in a greater need to have a proper datablock management system which includes manual deletion, optional purging of zero-use materials, automatic re-assignment of all users of one datablock to another ect…

This would probably be a good thing to tackle alongside a new and properly done undo manager, Blender’s come a long way but there’s still so many architectural things that still need to be done.

Hear, hear! When you have to tell someone to close the program and open it again to get rid of unused materials, and, oh, yeah, some times you have to do it TWICE because it doesn’t ‘take’ the first time is when you know you need some serious fixing.

Isn’t this accessible to people programming in python? Perhaps someone could take a cut at a ‘material management’ add on.

The issue occurs for materials as well. Say you’re preparing a library of materials for later use: If you don’t have an object using each material (or use fake user), it will not get saved. The same is true for creating preset particle systems, textures, and so on.

Yes, you can delete datablocks from Python, as seen in this snippet (which should get rid of unused materials):


import bpy

for material in list(bpy.data.materials):
    if material.users == 0:
        bpy.data.materials.remove(material)

However, I don’t know if this is an entirely safe operation. There really should be a good reason why you have to reopen Blender to safely “delete” data…

I don’t care if materials with no users will be saved I just don’t like it when I cannot delete materials in any other way but saving and re-opening the file (maybe I just don’t know how and that’s a different problem)
There should be a button to erase a material and one for all non used materials and then fake users can be on as default.

As part of the BAM (Blender Asset Manager) project, they could visualise materials/meshes/etc that are present in the file, and allow you to manage them there.
Ofcourse, a ‘purge all’ command that does what closing/reopening Blender currently does would be great as well.

This^

I found the “users system” to be very counter-intuitive, I had nothing to reference the concept to mentally and seemed like such an oddity of design/workflow, and its inception still baffles me today. Using blender all these years along with other apps, I see no benefits offered through this system that can’t be achieved through a more conventional handling of data.