Driver controlling material in linked file not updating

Hi All,

Long time no posts!

I’m running the latest LTSC blender 2.8 build

I have an Empty that’s got the custom properties attached to the object to control several parts of my rig (very simple just parented to an empty doesn’t need more than that) including some material settings (I’ve tired adding propertied to an armature instead same issue)
I’ve got the custom property at the object level. It works fine in the base file but not when I link it.

In the custom property I’ve checked is library overridable

When I link the collection to a new file and library override the empty the property goes blue like it should and lets me alter it. It will work if say I’m using it to drive the scale of another empty but does not work if I use it to say control the strength of an emission shader in a linked material.

See screen shots, in the material shot the driver on the mapping node doe work as expected but that’s a simple frame driver driver not from another object the emission value wont update when I update the property.

Any ideas or workarounds, I’ve got ~50 files as part of a 4.30 min animation and I really want to get it all linked and controlled properly else it’s going to end up being a nightmare to manage.

I had a like issue with transparency for an object and posted in rendering and got no response. I think the override is broken unless you want cycles. I gave up on it.

I think you might be right that its broken, I can’t find any bug report for it either tho so I do wonder if I’m doing something stupid.

I’ve managed to get a link override on the material and even then the driver does not work and if I make the material local but still linked to the object every time I reload the file it reverts it back to the original value and removes the override linking the material back again.

will try a few more things if not will have to come up with some sort of plan b!

thanks!

Found a reference to it in the to do list for 2.90

So it looks like it’s not implemented properly yet will have to append not link where I need to modify the driver values in materials I guess! Might be able to do something hacky with flipping the linked material from being linked to the data block to the object then appending the material but I think I’m going to be better off keeping it simple and appending and hope I don’t have to fiddle to much!

https://developer.blender.org/T53500
todo 2.90
Solve/define a proper way to handle materials overrides?

i ran into this as well - oddly it did ‘work’ briefly but become unstable and repeatedly crashed. i thought it was library overrides in general and have continued to avoid them for the time being. i really am looking forwards to this system being fully implemented, as its pretty critical for any project of scale.

Ok I’ve got a bit of a hacky workaround it’s not great but better than appending everything to every scene.

luckily the frame drivers work that’s the main thing so anything pulsing and looping in materials works when linked.

For where I need to control the emission levels separately here’s the work around for my scenario.

In the source file create a copy of the material with a fake user and a copy of the control empty, link the drivers up in the source file so they work. don’t assign the material to anything leave it with a fake user and keep the empty un-parented in a separate collection.

Link the collection in you new file and in my case everything is parented to an empty that contains the custom properties.

Library override the empty then you can key frame that etc. like normal but the drivers on the custom properties in the material won’t work.

Append the copied material this will bring in the copied empty as well all linked together.

On the linked material that has the library override change the link from “data” to “object” level then select the appended material. Parent the appended empty wherever needed for convenience to follow the rig.

This persists through saves as well. See screen shot for where the link is in the material ta in the light blue on the left (didn’t even know that was a thing but it’s actually super useful for a few scenarios not having the material attached to the mesh like you can use this to have the same linked mesh but with different materials)

Not perfect but at least it’s just a case of re appending just the material rather than the whole collection if anything changes at the source and I only need to do that on the files where I need to mess about with the emission levels most can just link.

Another linking issue, I think I’ll keep them all here and raise bug at end but it looks like most just haven’t been implemented
Think this is related to

So you can link actions fine but when you add them to the NLA strip for a linked character they don’t save which is a pretty catastrophic issue :slight_smile:

They stay linked just vanish from the nla track.

Only workarounds I can see are

  1. Bake out the NLA actions so it’s just one action linked to the object not in the NLA but that makes it bad to tweak later. You can duplicate the armature to make a local copy to keep them but you can’t cut and paste NLA strips from one armature to another so that wont work either.

  2. Make the Armature Local then the linked actions stick in the NLA this breaks the link to any armature updates but at least the mesh, actions and materials are still linked.

I feel like I’m missing something with all this, some of the bigger setups must be doing something better than this else it gets unmanageable really quickly even for me working solo.

Scrub that I give up, I’ll have to append everything the shape keys don’t link either without overriding the mesh at which point I’ve overridden the armature and the mesh so little point linking it at all.

https://developer.blender.org/T70319#:~:text=Shape%20keys%20are%20part%20of%20the%20Mesh%20datablock%2C,plans%20to%20address%20that%2C%20but%20nothing%20concrete%20yet).

Hey, I don’t know if you found a solution, but I guess I’ll leave a comment here for anyone who encounters the same problem.
If you have this bug, (still unresolved as January 2021) you must override the material clicking on the chain icon in the material settings. Then, you must go to the node arrangement of the material, click on the nodes being driven and reassign the driver object/armature in the driver settings.
It’s kind of a pain but it’s a solution.

Bumping this thread because this is still a problem!

I’ll give this solution a shot, but I have a project with three characters, dozens of drivers per character and probably over a hundred shots. Resetting each driver manually for every file they’re linked in is… absurdly suboptimal.

its more worth it at this point just to append characters and reappend them if anything needs to change

You could use the linking system. As fas as I’m aware, it is working fine.
I’ve managed to get the driven materials to work by creating a custom property; the variable value drives the custom property and this custom property drives the material. But it’s still very buggy.
Library overrides have a long way to go untill they become a production level system.

1 Like

Library override is NOT stable for production at the moment. In this case, driver from bone attribute won’t update to the attributes in shader.

But using proxy still works fine