Holy smokes. I just discovered that Blender deleted a number of unassigned materials that I had put a decent amount of work into. How the heck is that a feature? I now know what that oddly named fake user button does now.
Can anyone explain to me any good reason why its a purposeful design choice? It’s incredible to me that a program would intentionally delete elements that you haven’t explicitly chosen to delete. It seems like a very old aspect of the software, so there may be many of you who have used Blender long enough that you’re used to it. But for people coming to Blender, from literally any other main stream creative software it seems absolutely bonkers.
I couldn’t think of a software analogy since I’ve literally never seen any application purposefully do that. But a real life analogy that I could think of was that if every night you went to sleep, I broke into that closet in your basement where you store stuff you aren’t currently using, took it outside, and burnt it. And then when you freaked out that I destroyed that scale model you’ve put many hours into, I said, “Oh you should have let me know that those specific items were important to you, and that you didn’t want me to burn them.”
Please enlighten me, as I really don’t get it. I am really enjoying Blender. That joy has now been dramatically tempered when I found out that this is intentional. I could cut the application a break if it was a bug, but to learn that it’s intended behavior…
Holy smokes though. Your post summed up what I was thinking excellently.
What is preventing it from being removed / the behavior changed?
At this point it seems like objects are first class citizens and everyone else can go f-off. Blender is all “Oh, you poor material, looks like your human put a lot of love and care into you, but unfortunately you’re not being used by one of our VIP Objects. Well I’m going to destroy you now. Goodbye! Oh and F-Off human.”
Being an current member of the UI module, an active contributor to the Blender codebase for more than a decade, and a programmer for more than 40 years, I can probably explain the need for our “fake user” design…
Wait, no I can’t. It is a shameful long-time embarrassment that we delete user data without them knowing. I cringe whenever I hear anyone try to justify it. It is awful design that will remain a blight on us until we start treating user data as sacred.
Yes, I have been proposing this also for quite a while. Basically, blender should never ever delete datablocks user has crated, with the exception of mesh datablocks (they take a lot of memory and they are automatically purged in most other 3D software as well).
However, when (if) this change occurs, the new problem of the unused user data piling up in the blend file will arise. This is generally not much of an issue in other software, which has good tools for data management (creation, editing and deletion), but the problem is Blender has not. It has only “Blender File” Outliner editor mode.
This could be remedied by adding a new “Blender File” mode to the newly added Asset Browser. Asset Browser would then serve as a central place for data management encapsulated inside the Blender file.
Think this is what offends me the most, it deletes the data in an operation called… [check notes]…save? followed up by lying about it until the user re-opens the file.
So I’d like to help design and develop (just getting aquainted to the codebase, so my design skills are a lot better than my development ones currently) this new editor.
In my mind, it could not only serve the purpose of an improved overview of the blend file, but also as a location to visually see elements of the file such as objects, materials etc. like you can in the asset browser. I asked @julianeisel in another topic regarding the asset browser, and if that editor could be used for this purpose. He didn’t get back to me, but it seemed the appropriate place for that management. Albeit in another mode. One view for assets from other files / libraries, one for assets in the current file, and one for all of the elements in the current file (what do you think this view mode should be called?).
So what features would this mode provide?
Here are some features I could see it handling (so as to help with the orphaned data build up):
Lists / makes thumbnails (where possible) for all elements in the current file
Allows for filtering / sorting of those assets based on type / other data
Mark elements as assets and those then get added to the asset views for further management (such as addition of tags, categories etc.)
Create / delete / rename elements
See data that is orphaned that could be deleted
See how all of the data is connected to each other, through references to other elements, or an actual node based view for better visibility on how the file is laid out
I think this viewer would solve three issues.
It would make all elements first class citizens, and not subservient to objects. So you could create materials here and not have them have to be currently associated with an object.
It would also make it much easier to see what’s in your current file and manage that by allowing for not only visual representations of them through thumbnails, but also by providing filters / sorting. This could be extremely useful for complex files that have complicated hierarchies and lots of elements
It would solve the visibility of orphaned data, along with possible prompts on close about the fact that there is orphaned data. It would also need refinement for what is actually orphaned data. A material that isn’t currently assigned to an object shouldn’t be considered an orphan. It would be a departure from the object centric orientation of blender and into a more balanced and safe creation mode.
This is (I think) the last design discussion about this. Although best to read the entire thing before commenting there. ⚓ T61209 Always write unused IDs on save
I this makes you feel any better: I love Blender with all of my heart but this is one of the ocasions where I also simply cannot justify why it is still not being set on the important list. I’ve been complaining about it a lot as well up to the point where I’ve simply learned to live with it and stop complaining.
It’s one of these shameful sports were I can’t even defend Blender against any acusation. It’s just wrong.
I’m sorry this happened to you. And I hope for the day this gets finally adressed.
I guess many of Blender’s users learned about this the hard way.
Great. I’ll read that over and see what I can do to contribute. I’ll start working on a design mock up of what that mode of the asset browser could look like. I’m already working on some stuff there in regards to tags etc. Thanks!
Thank you very much for sharing. I am really liking Blender already. I think it is so flipping cool that it is so capable and I’ve only yet scratched the surface. It really can compete with the other big budget 3D and compositing tools out there. It’s things like this that need to get ironed out to really take it to the next level and have it even surpass the other tools out there. It has the best community I’ve come across yet, and has so much to offer and also so much potential.
Together the community and the core foundation have built something awesome. And it can only keep getting better by getting together and fixing things like this
It’s because Blender has no separated Material Editor like other 3d apps.
You can’t create just a material, then set up and assign it to some object or selection, you can only create and edit material/s with selected object.
And in this case, if you delete object, and material was only assigned to it, then yes, after loading saved file that material will be lost…
What would be a good solution for this?
Always add fake user for materials with 0 users?
New workspace “Material Editor” (where you can create and edit materials independently) with a 3d view of simple shapes (sphere, Cube, Suzanne) and material list (with counts how many users have each material)?
As mentioned above (Always write unused IDs on save), is a hot discussion.
Wouldn’t it make sense to have “fake user” enabled by default on materials?
I can see the idea behind the user system - i dont want to scrub away meshes of deleted objects, Material.002’s or Images i’ve already swapped out.
Having that option enabled would prevent loss of Materials while still allowing for redundant data to be removed.
Agreed. We definitely need a material / texture editor. That could be something that could be a great solution. You could create, edit, delete and assign materials to objects from this editor. This would be excellent combined with another mode in the asset browser that allows for a comprehensive look at the file in a more user-friendly manner than the blender file in the outliner.
I created a simple python script mockup that allows for creation of materials independent of objects, and assigns them to the selected objects (not just one at a time. lol). So it’s for sure possible. I’ll be designing this along with the additional enhancements to the asset browser, and should be able to mock up a lot of the functionality of a material editor with python.
Definitely. It should be enabled by default on all elements like materials. If by default data is protected, and temporal and data that has been marked for deletion is the only data that is destroyed on close that would make total sense.
At that point I don’t even think you’d need a fake user button, as things would be protected by default. And combined with a material editor / a file manager mode in the asset browser you could “delete” it which would remove the fake user status on the back end and prepare that element for deletion on close. Basically from that standpoint, I don’t even think blender would have to have any major changes under the hood. Removing a material from an object wouldn’t delete the material, it would just unlink it. Though you could also delete it from there to in a menu. Basically there would be unlink & delete (remove fake user).
Users in the interface could be renamed to links or something as well. User to me in any other application means a human. These are inanimate objects that have materials etc. linked to them. So naming them links or something along those lines would make more sense as well.
There is also no material picker, meaning, you should be able to click on anywhere in the viewport, and then the material under the cursor is selected. This instead of hunting through material slots.
The material slot system in general… grrr. It feels like something out of the 1990s.
Ooooo. Great idea for a material picker. That would enhance usability a bunch.
A material editor and file element manager mode in the asset browser would for sure help a bunch to get out of the object centric approach.
In terms of material slots, even if the current slot system is kept, I don’t think the user should have to create a slot and then add a material to the slot. Adding a material to the object should create a slot automatically, and removing that material from the slot should remove the slot. Unless there is some other purpose for slots that I don’t understand yet? Aka does the slot itself contain face associations and the material can be swapped out and keep the faces its applied to? That would make sense as to a reason why keeping a slots as an independent entity outside of what material is in the slot.
Are materials not integrated in the asset browser now?
There should be synergies between the AB project, the save rework, subject of this thread, and the material picker feature right?
Yes, I’d also kind of love to have materials be more like a datablock on an explicit material type container object instead of having to be assigned to a mesh or a null-user. It would be awesome if materials could be viewed and edited sort of separately if needed and also be reused in a more modular sense.
OK - the latter is possible by grouping/encapsulating Nodes but it always feels like a total hack doing it that way. Especially since it can get quite confusing to keep track of nodegroups inside materials assigned to objects. Ultimately I’m by far not involved or knowing enough of the current development as a whole to really weigh in on the topic.
I just hope it gets sorted out quickly because it really can’t remain like this for muc longer now that Blender is finally being used in more and more professional environments.
(Multi-object property editing also being quite hig on the list of “why, tho?” features for me)