import bpy import os import os.path class AutoAsignTex(bpy.types.Operator): bl_idname = "object.auto_asign_tex" bl_label = "Auto Asign Textures" bl_options = {'REGISTER', 'UNDO'} #context.os.system('cls') bpy.context.scene.render.engine = 'CYCLES' print("\n\nObjects") bpy.context.scene.render.engine = 'CYCLES' mat_names = [] def execute(self, context): for ob in context.selected_objects: print(ob.name) print(ob.name) for mat_slot in ob.material_slots: for mtex_slot in mat_slot.material.texture_slots: if mtex_slot: if hasattr(mtex_slot.texture , 'image'): mat_name = "{}".format(mtex_slot.name) for img in bpy.data.images: #print(img.name) mat = mat_slot.material if img.name == (mat_name or mat_n): if not mat.use_nodes: print("{} - {}".format(img.name, mat_name)) mat.use_nodes = True tex_node = mat.node_tree.nodes.new('TEX_IMAGE') mixShad_node = mat.node_tree.nodes.new('MIX_SHADER') trns_node = mat.node_tree.nodes.new('BSDF_TRANSPARENT') diff_node = mat.node_tree.nodes['Diffuse BSDF'] matOut_node = mat.node_tree.nodes['Material Output'] mat.node_tree.links.new(tex_node.outputs['Color'], diff_node.inputs['Color']) mat.node_tree.links.new(tex_node.outputs['Alpha'], mixShad_node.inputs['Fac']) mat.node_tree.links.new(diff_node.outputs['BSDF'], mixShad_node.inputs[2]) mat.node_tree.links.new(trns_node.outputs['BSDF'], mixShad_node.inputs['Shader']) mat.node_tree.links.new(mixShad_node.outputs['Shader'], matOut_node.inputs['Surface']) tex_node.image = img return {'FINISHED'} #self.dewit() def register(): #unregister() bpy.utils.register_class(AutoAsignTex) #bpy.types.VIEW3D_MT_object.prepend(OBJECT_MT_hello.draw) # << add menu above #bpy.types.VIEW3D_MT_object.append(OBJECT_MT_hello.draw) # << add menu below def unregister(): #if hasattr(bpy.types, "AutoAsignTex"): #bpy.types.VIEW3D_MT_object.remove(bpy.types.OBJECT_MT_hello.draw) bpy.utils.unregister_class(AutoAsignTex) if __name__ == "__main__": register() #mat.node_tree.nodes['Image Texture'].translate_attach(TRANSFORM_OT_translate={"value":(0, 0, 0), "constraint_axis":(False, False, False), "constraint_orientation":'GLOBAL', "mirror":False, "proportional":'DISABLED', "proportional_edit_falloff":'SMOOTH', "proportional_size":1, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "texture_space":False, "release_confirm":False}, NODE_OT_attach={}) #tex_node.location = Vector((200.0, 400.0)) #else: #print("{} - {}".format(img.name, mat_name)) #print("\n\nObjects") #tex_name_list = [] #mat_names = [] #for ob in bpy.data.objects: #print(ob.name) #for mat_slot in ob.material_slots: #mat_names.append(mat_slot.material.name) #print("mat_names: {}".format(mat_slot.material.name)) #for mtex_slot in mat_slot.material.texture_slots: #if mtex_slot: #print("\t%s" % mtex_slot) #if hasattr(mtex_slot.texture , 'image'): #tex_name_list.append(mtex_slot.texture.image.name)
Run
Reset
Share
Import
Link
Embed
Language▼
English
中文
Python Fiddle
Python Cloud IDE
Follow @python_fiddle
Browser Version Not Supported
Due to Python Fiddle's reliance on advanced JavaScript techniques, older browsers might have problems running it correctly. Please download the latest version of your favourite browser.
Chrome 10+
Firefox 4+
Safari 5+
IE 10+
Let me try anyway!
url:
Go
Python Snippet
Stackoverflow Question