Make material local

Let’s say I have a linked object from another .blend file on which I need to change the material, but all the rest needs to stay linked, even the object’s position and modifiers.

Here’s a simple example :


If I click on “Make local”, nothing happens.
Also the material tab is greyed out so I can’t add or remove anything.


Everything else I tried unlinked the object’s position and modifiers.

Any ideas ?

Not sure if this’ll work, but save your file and restart blender.

No it doesn’t (and there’s no reason).

The only way is to make the whole object local… You can duplicate the linked material and change it, but it won’t apply to the object (because it’s linked! and still carries the material from the file)
So your best option is to change the material in the original .blend.

Fortunately, you can start another blender session, open the file and change it, without having to stop working in your current scene.

Not really. I can apply a different material while keeping the mesh data linked by making the object (only the object) local, then removing the material, adding a new one and linking it to the object (by choosing “object” next to the “New” button). The original material will reappear when reverting the file but the new one will still be assigned to the object.

The problem is that the loc/rot/scale and modifiers become local. But I think there’s no way around this.

try this:

create a new object (a simple plane is enough). In the properties>object data, change the data link to point to the linked object data.

Now you should have a copy of your linked data, without modifiers, rotations etc.

If you delete the material slot in this copy and create a new one, the change will be reflected in the linked object also.

Nice try but when you save and revert the file it comes back to the original.

It’s not a nice try… it’s an exploit of an unresolved issue with blender’s ‘object relations’ use of memory.
Until a proper handle for this situation is writen, no other workaround. :frowning:

make it a script, check the ‘register’ checkbox and save the file, so everytime you open it it will change the materials. (make a false user for the new material to avoid being deleted in any eventuallity of code change)

edit: you might also need to change the preferences to allow startup scripts.

Good idea. Well, for now I already made all my changes locally so if I need to move some objects around I’ll just do it in both projects since it will take less time than :

  • learning python
  • making the changes over again with your cool technique and script them

But otherwise you’re right, that’s probably the only workaround for the moment.

It looks that through Python is even easier to change the material!!

here’s a code to automatically change the material at loading the file:

import bpy

def replaceMaterial():
    Objname='the name of your object'
    MatName='the name of the new material'


    bpy.data.objects[ObjName].data.materials[0]=bpy.data.materials[MatName]
    
bpy.app.handlers.load_post.append(replaceMaterial())

Create a new Text in text_editor, set the name to *.py, paste this script and check the ‘Register’
In the user preferences>File, check ‘Auto Run Python Scripts’.

You have to make the object data local before you can make the material local.

this is 6 years old. We have library overrides now.

It’s also a reason old posts should be locked after a certain amount of time.
There was a discussion about this a while ago.

But despite library overrides, the make local workflow can still be useful in cases. :wink:

Sure it can be.

I’m not on this side. Not every topic becomes irrelevant. This one did but also, clarifying why it did may help someone who doesn’t know about library overrides yet.

I find it better when people look for a solution, and find a closed old thread.
You can always start with your question, link to the old thread and continue from there.

It makes better sense and cleaner discussions, instead of waking up the ‘zombie’ :wink:
Also it breeds better netiquette in forums imho…

1 Like

I’d like to request that, as this information is severely out of date and irrelevant, we let this topic die naturally so it gets buried in obscurity by newer, better information. This isn’t an official staff request so I’m not locking the topic. Just consider the impact this would have if a brand new Blender user finds it- if you think like I do that it will end up confusing them, please consider not responding :slight_smile:

Well, I found this because I did a library override and it still won’t let me make one of the materials local :frowning:

Is this what your seeing, because the material is editable just the name is greyed out and if you click the symbol next to the name in the property editor you can make it “fully local”.