It’s a novel approach to use blender’s garbage collection and fake user system to be key part of your import process. It looks like you’re importing hundreds of things that you ultimately don’t need, choosing what you actually DO want, and then having blender throw out the rest.
This is akin to shopping for food by asking the grocery store to deliver their entire inventory to your home. Then you choose the ingredients you want, and the store throws the rest away for you. You end up with the same result, but obviously this isn’t how people fill their pantry.
Perhaps instead of using blender garbage collection to sort out the thousands of imported things that aren’t needed, the garbage shouldn’t be imported into the work file en masse in the first place.
An alternative would be to use Blender’s existing selection and attribute system to tag things as required or not. Add a text name suffix, attribute, or similar property to everything you need as you work. Or sort things by collections - KEEP and BURN. When you are done working, select the inverse and delete it. Or create a python script that selects all the orphan materials and deletes them. All of those are simply ideas; one might work or not, in a particular production chain… but it’s just to point out that there’s more than one way to deal with unwanted data.
Beyond that, the case is not being convincingly made that making autofake a user preference destroys that unique workflow with no recourse. As has been stated time and again, a company or group does not have to use it.
Just a few additional (simplified) remarks about that: When you import CAD files they simply often come with garbage you need to sift through. It sucks but it’s an entire workflow. I know because it’s been a big chunk of my work for the last few years.
It’s also not always as easy as “it just sholdn’t be imported”. For Materials it is true in … probably 95% of the cases (at least for us), we throw them out. Then reapply them with our own ones. But before we throw them out we might occasionally need them just for their material selections. After that, all the discarded ones I am acutally glad Blender can simply throw out via garbage collect. All the self created ones I am glad stay. Unless I forgot to hit that little shield Icon. In which case it is gone with the rest. I think that’s what we’ve been talking about here
For meshes it is not that easy and needs manual mangement. Sucks but that’s part of the job. Discard all the technical stuff, clean up hierarchies and normal/hard edges, assign materials or vertex groups to differentiate after merging. Merge stuff. And if animated retopo. TONS of stuff gets thrown out that way and management workflow is hugely important. Importing it initially IS important because CAD stuff has very dedicated way of storing data that should be salvaged into something more render and media affine before being thrown out. At least for us it has to.
That’s why I am saying: The current workflow absolutely does have it’s merits and right to exist. I actually do agree here because my life would be much more miserable if it was to just go without any fallback. It’s naive to simply assume things could go different if you have never really worked in the environment of someone else.
But just because I have this workflow at work doesn’t mean everybody else should also have to suffer for it. It’s enough as is that people like me have to deal with it. Everybody else who wants to use Blender for animation, game models, print prototypes or whatever should have a way of just being sure their newly created data stays if the want to. In fact I think most people who would expect Blender to just save the vital datablocks by default are absolutely right. It should And I assume that will be the majority of users.
That’s why I say: I totally understand 1D_Inc - but I don’t agree about the part where there is no alternative. There always is and I think without better management tools the best middle ground actually really is simply the option to automanage “Fake user” for creation and import per item type in the Settings and maybe call it something else for all the new users.
(edit) And seeing that even in the games sector many hard surface artists are moving over to CAD modeling for high-res meshes I think it would be a bad idea to get rid of the option to manage this data just now.
I just have to ask, what even is the point of this “feature”? There already are ways to clean your .blend-files from unused data blocks, so why do the devs keep insisting on keeping something that is so widely despised?
When you save your project, that means saving everything besides possibly history states (which some even do allow). This is such a basic thing that is universal across various types of software. Fake User as a feature is as baffling as ZBrush still having ctrl+S not actually saving your sculpting projects. This just should not need to exist.
On this, I understand. There have been times in the past that I imported something like a DXF or 3DS file from an external source, and for whatever reason each poly or group (or however it was split) came in with it’s own unique material attached. You’d have 1200 unique copies of ‘red velvet’, and 1200 separate faces when you needed 1 object.
Totally get that it’s a PITA to deal with. But when I was dealing it in C4D and Max, i just deleted what I didn’t need after determining what assignments i did need (similar to how you describe). I didn’t rely on the program to just burn everything I wasn’t using at the moment of “Now SAVE IT”.
I understand that the GC in Blender makes this easier, sure… unless you actually don’t want everything burned.
But like you said - sorry that the arch-vis artists of the world have such a suck experience (ha), but don’t take it out on the REST of us too!
Naw, as I said in that block of text: I also think the individual option and an import toggle for “autosave datablocks” could actually be a pretty solid solution to this. Set it to autosave for the most use datablocks and most people would probably just leave as it. Strict data management has its merits but is certainly not needed in every workflow and sometimes even destructive. It should be configurable and have way safer defaults for most users at least in the most used datablocks.
Maaaaybe add a preset option for diffrent settings. Something like this maybe
Please stay on-topic and only add feedback directly related to the pull request. Any feedback how the data handling could be improved in general is out of the scope of this thread and as clearly indicated in the forum rules, devtalk is not the proper place for feature requests.
The patch is literally about improving data handling. So if the feedback of some people is “I am not sure if this specific implementation is the right way to go about it.” how do you categorize it?
Is the point of “feedback directly related to the pull request” that specific minor implementation details and bugs should be discussed, but discussion about whether the patch is good or bad idea in the first place is forbidden?
Whether this temporary fix is accepted or not, a developer can always ‘do it properly’ when time permits. I personally agree with this PR as a temporary solution.
If water leaks from your ceiling, would you not put a bucket down because the roof should be fixed properly?
In real world, yes. In Blender world, it will be “The bucket already does its job, why do we need to fix the roof?”
I’ve seen this pattern way too many times already. So if we are forbidden to comment on on improving the solution, and just have to be yes or no for the first iteration of the idea, then my vote has to be no.
That being said, it’s just one vote which will likely get outvoted by others.
It depends on the resources available to you. If you can’t afford to fix the roof and it doesn’t rain every day, your resources would be better spent on other things. Blender has only so many developers to go around.
The only way to remove data is through Outliner in Blender File mode.
Yes, that’s exactly what I would want, at least for materials, node groups and actions. I want blender to delete them ONLY when I explicitly tell it to delete them.
I probably wouldn’t want default fake user for things like meshes, though, since if I delete a mesh object from my scene, I actually am explicitly deleting it and wouldn’t expect it to be retrievable. I know technically I am deleting the object, and the mesh data block is still there, but as a human user, when I delete a mesh object, in my mind I am explicitly telling blender to delete the mesh. But not necessarily the materials or actions.
And that’s the issue: some data blocks can be not set to any object even if the user didn’t mean to delete it. And it will always confuse people coming from literally ANY other creative software. There is no other 3D software that deletes a material if it’s not set to any object.
So if the option existed in preferences I would personally have meshes unchecked, and materials, node groups and actions checked. It makes sense to me. It might not make sense to everyone, but that’s why it would be an option in PREFERENCES. It’s baffling to me why some people are against having that option.
First, we have a long debate on whether or not the roof was intended to leak, to provide easy access to water for those without indoor plumbing.
Once we’ve agreed (good luck) that the water is indeed not wanted to leak through the roof, we’ll discuss how this should be addressed. Various solutions will be proposed over several months.
It will be noted by someone that ultimately the problem is due to rain, and until we can control the weather there’s little sense in purchasing a bucket.
Well you can pat yourself on the back for the snarky comment you’ve made but by your standards all the other DCCs out there are “controlling the weather” for decades with ease, while Blender is the only one that failed to put even the bucket under the hole in the roof for what will soon be 30 years. There is really no other mainstream DCC that suffers from this problem, or even has its community discussing any need for file data handling improvement. They just got it right because it’s just so easy to get right.
Some people in this thread sound like they think that the difference between this proposed patch and better solution is like a day vs a year of development time. It’s not.
If a developer figures out how to make selected datablocks always automatically add fake user/prevent garbage collection, then it won’t make much difference in terms of implementation time. Once you know the approach, you can either cherry pick a few datablocks and link their automatic fake user creation to a set of user preference settings you add, or you can just add that same auto-flagging piece of code based on some categorization (like the idea of 3D view vs dedicated editor space categorization mentioned above) and just not add any user preferences. Development time to do both variants would be about the same. In fact I wish I was not in a middle of the job right now, as I would make a patch myself just to prove my point.
Then, possible removal/deprecation of fake user button could just be postponed couple of releases till users verify/realize they don’t need it much. Or alternatively it could remain only for datablock types that don’t get automatically marked (those that reside only in 3D view and can’t be edited elsewhere).
And then the patch for better manual cleanup tools is already implemented by Harley and just awaiting review/approval.
I am trying my best to respect OPs request to not discuss alternative implementations, but you are really making it hard for me by making it sound like alternative, better implementations would take much longer. That’s just straight up not true.
Eh… The grass is always greener on the other side.
I think this website is a testament to how many years it takes to implement a ‘better solution’.
Everyone knows your frustration. I started to learn how to code because of mine. Just be grateful that you can leverage your coding experience to alleviate your personal gripes with Blender. Most of us can’t.
Zbrush, Substance painter, Photoshop and so one are applications that was initially designed for personal use. They are not designed for massive projects. For example, this allow them to pack the external data (Substance painter is quite careful about this though)
Most of a DCC (like AutoCAD, 3DMax and its system design derivatives) are applications that was initially designed for massive projects - for example, non of them can pack the external data (which is rather sad).
Blender combined both worlds. It can pack the external data, but datamanagenent conditions and rules for that are supposed to be different from any other application.
Supposed to according to whom? Can you show where Blender developers have design documentation or meeting notes supporting this? This sounds like your own personal opinion of what Blender is supposed to be
Max has a “collect for output” utility… it pulls the material bitmaps used in the scene, puts them in an archive with the max file, and is happy to zip compress the whole thing.