My goal: I want to build a library of reusable materials and 3D objects that I can link into a scene and still be able to adjust the materials via library overrides.
tldr; version: When I link a material to an object and override it, the changes I make on the material revert to the default values when I later reopen the file.
Longer imaginery scenario for context: Let's say I have a "Metals.blend" file with a "RustyMetal" material asset. The material is inside a node group which has parameters exposed (like Color or RustAmount). Next, I have "MetallicObjects.blend" with 2 assets: a Crate and a Robot. Each asset is placed in its own collection. From the Asset Browser I link in the "RustyMetal" and give it to both assets. It looks fine on the crate but I want the robot to be blue.
From here I've tried two approaches:
I want to keep the link to the original "RustyMetal" material because I might want to change how the grunge looks and that should propagate everywhere I have used the material.
So, am I doing something incorrectly? Is this a bug? Or are you not supposed to use a workflow like this and in this case, why are the materials overrideable at all if they won't save the changes?
That has to be a bug, it doesn't work like that at all. Have you downloaded Blender 4.2.1 yet? Perhaps it is corrected in the updated version. Also here is a very good and short video of Pierrick going over Linking vs Library Override, it's great and in fact, I'll watch it again to get a refresher:
Thank you, Omar. It is a great video - when I watched it earlier today it helped me figure out how to override materials more easily and reliably. But then I got stuck on this reverting to default thing, which is stopping me from developing my library - I feel I need to figure out how to set it up from the beginning to avoid major rework later.
As for it being a bug, I could only find a few older reports that are mostly related to armatures and then one person with the same problem but no answer from 2 years ago. So if it is a bug it seems it's been around for a while. I don't know who else I could ask for confirmation since I feel quite intimidated by the bug reporting. But I will try the latest version, that can never hurt anything.
I've disabled all of my third party plugins and I've tried in 4.1.1 and 4.3.0 Alpha, with the same result. I just find it hard to believe that something this significant would be a bug and unreported at that, so I think I must be doing something wrong. Especially since I don't have much experience with linking and libraries.
I've created a mockup library and scene to match my description above so that other people can try to reproduce it. I've also recorded myself linking and overriding the materials.
Huh, now that you mention it I do remember hearing him say it in the video but I must've dismissed it as "his version of Blender is a bit older and things must have changed since then". Well, I guess they haven't and I have to go back to the drawing board on how to design my library.
Thank you, Omar, for bravely staying on the case. :-)
I'll have to play around with this when I get home from work. I've only worked with armatures and library overrides. Some data gets reset when the override gets synced. Like when you load the blend file. You can often times prevent this by setting a keyframe or using custom property. Again I'd have to test out some ideas, before I could give a better response.
Yes, that's exactly what I'm trying to achieve but without the material override I don't know how else to change the exposed parameters on linked materials.
dillenbata3 Dwayne, you are a genius! If I add a keyframe on the overridden exposed parameter, the value doesn't revert when I save and reopen the file. Thank you so much, you have saved my sanity!
You are right, Omar, I rewatched the video and he does mention it. But I misunderstood him and I thought he started talking about animation, which I dismissed as not relevant for me. So the real lesson from this is to pay closer attention to sources I do find before I spend a whole day on a wild goose chase. :-)