How to reuse materials where 1 texture layer differ?


For my Smoking is Cool! project, I use a lot of text. I wish many of the text objects to share the same material (issue tracking: ). The current set up is as demonstrated in the following .blend file:

reuse_material_3161.blend (815 KB)

The object is a very simple plane with a BI material assigned to it. The material has two texture layers. The first one is the one with the actual text (a B&W image prepared and translated externally). The second is the procedural texture applied to the text.

There will be as many ‘plane’ objects as there will be pieces of text. Each object will have a different UV-unwrapped text texture assigned to it but in terms of material, that’s the only thing that will differ between one text object and the other.

  • I tried to link to a material defined in another .blend file but that does not work since one texture layer must differ.

  • I tried to link to a procedural texture (the second texture layer), reusing it, but it does not work because 1) I need to manually copy all the settings for the material itself, and the “influence” settings for the imported texture are not copied, so I have to manually fix that as well. In the end, I still have most of the settings to re-adjust manually.

  • I am considering using BI material nodes: can I create a set-up where the whole material can be applied to many objects, with simply a parameter for the actual texture file to use (the file for the 1st texture layer)?

  • Should I use python scripting for that? How?

Note that the project is a multi-language project: the text texture and prepared with a bash script so that each string can be translated on the fly. And as I will have a lot of text, it’s important to find a convenient method that allows me to share all the material settings between all the objects but for the text-texture image and the UV-unwrap of that texture.

I hope I have explained the problem well.

How would you go about to solve it?



You may not know the solution, but have I explained the problem clearly?


I don’t even know if the way I phrased the question is explicit enough. See attached blend file (above).