diff --git a/io_coat3D/__init__.py b/io_coat3D/__init__.py index c99f47c7972039efdad7d8d4dc64084be30f5b9b..a53d0063d222cc03a79d8dc30aa19b95b462c1af 100644 --- a/io_coat3D/__init__.py +++ b/io_coat3D/__init__.py @@ -45,177 +45,177 @@ from io_coat3D import tex def register(): - bpy.coat3D = dict() - bpy.coat3D['active_coat'] = '' - bpy.coat3D['status'] = 0 - bpy.coat3D['kuva'] = 1 + bpy.coat3D = dict() + bpy.coat3D['active_coat'] = '' + bpy.coat3D['status'] = 0 + bpy.coat3D['kuva'] = 1 - class coat3D(bpy.types.IDPropertyGroup): - pass - - bpy.types.Object.coat3D= PointerProperty( - name= "Applink Variables", - type= coat3D, - description= "Applink variables" - ) - - coat3D.objpath = StringProperty( - name="Object_Path", - default= "" - ) - - coat3D.coatpath = StringProperty( - name="Coat_Path", - default= "" - ) - - - class coat3D(bpy.types.IDPropertyGroup): - pass - - bpy.types.Scene.coat3D= PointerProperty( - name= "Applink Variables", - type= coat3D, - description= "Applink variables" - ) - - coat3D.objectdir = StringProperty( - name="ObjectPath", - subtype="FILE_PATH", - default= "" - ) - - coat3D.exchangedir = StringProperty( - name="FilePath", - subtype="DIR_PATH", - default= "" - ) - - coat3D.wasactive = StringProperty( - name="Pass active object", - default= "" - ) - - coat3D.export_on = BoolProperty( - name="Export_On", - description="Add Modifiers and export.", - default= False - ) - - coat3D.smooth_on = BoolProperty( - name="Auto Smooth", - description="Add Modifiers and export.", - default= True - ) - - coat3D.exportfile = BoolProperty( - name="No Import File", - description="Add Modifiers and export.", - default= False - ) - - coat3D.importmod = BoolProperty( - name="Remove Modifiers", - description="Import and add modifiers.", - default= True - ) - - coat3D.exportmod = BoolProperty( - name="Modifiers", - description="Export modifiers.", - default= False - ) - - coat3D.export_pos = BoolProperty( - name="Remember Position", - description="Remember position.", - default= True - ) - - coat3D.importtextures = BoolProperty( - name="Bring Textures", - description="Import Textures.", - default= True - ) - - coat3D.exportover = BoolProperty( - name="Export Obj", - description="Import Textures.", - default= False - ) - - coat3D.importmesh = BoolProperty( - name="Mesh", - description="Import Mesh.", - default= True - ) - - #copy location - - coat3D.cursor = FloatVectorProperty( - name="Cursor", - description="Location.", - subtype="XYZ", - default=(0.0, 0.0, 0.0) - ) - - coat3D.loca = FloatVectorProperty( - name="location", - description="Location.", - subtype="XYZ", - default=(0.0, 0.0, 0.0) - ) - - coat3D.rota = FloatVectorProperty( - name="location", - description="Location.", - subtype="EULER", - default=(0.0, 0.0, 0.0) - ) - - coat3D.scal = FloatVectorProperty( - name="location", - description="Location.", - subtype="XYZ", - default=(0.0, 0.0, 0.0) - ) - - coat3D.dime = FloatVectorProperty( - name="dimension", - description="Dimension.", - subtype="XYZ", - default=(0.0, 0.0, 0.0) - ) - - coat3D.type = EnumProperty( name= "Export Type", - description= "Diffrent Export Types.", - items=( - ("ppp", "Per-Pixel Painting", ""), - ("mv", "Microvertex Painting", ""), - ("ptex", "Ptex Painting", ""), - ("uv", "UV-Mapping", ""), - ("ref", "Reference Mesh", ""), - ("retopo", "Retopo mesh as new layer", ""), - ("vox", "Mesh As Voxel Object", ""), - ("alpha", "Mesh As New Pen Alpha", ""), - ("prim", "Mesh As Voxel Primitive", ""), - ("autopo", "Mesh for Auto-retopology", ""), - ), - default= "ppp" - ) + class coat3D(bpy.types.IDPropertyGroup): + pass + + bpy.types.Object.coat3D= PointerProperty( + name= "Applink Variables", + type= coat3D, + description= "Applink variables" + ) + + coat3D.objpath = StringProperty( + name="Object_Path", + default= "" + ) + + coat3D.coatpath = StringProperty( + name="Coat_Path", + default= "" + ) + + + class coat3D(bpy.types.IDPropertyGroup): + pass + + bpy.types.Scene.coat3D= PointerProperty( + name= "Applink Variables", + type= coat3D, + description= "Applink variables" + ) + + coat3D.objectdir = StringProperty( + name="ObjectPath", + subtype="FILE_PATH", + default= "" + ) + + coat3D.exchangedir = StringProperty( + name="FilePath", + subtype="DIR_PATH", + default= "" + ) + + coat3D.wasactive = StringProperty( + name="Pass active object", + default= "" + ) + + coat3D.export_on = BoolProperty( + name="Export_On", + description="Add Modifiers and export.", + default= False + ) + + coat3D.smooth_on = BoolProperty( + name="Auto Smooth", + description="Add Modifiers and export.", + default= True + ) + + coat3D.exportfile = BoolProperty( + name="No Import File", + description="Add Modifiers and export.", + default= False + ) + + coat3D.importmod = BoolProperty( + name="Remove Modifiers", + description="Import and add modifiers.", + default= True + ) + + coat3D.exportmod = BoolProperty( + name="Modifiers", + description="Export modifiers.", + default= False + ) + + coat3D.export_pos = BoolProperty( + name="Remember Position", + description="Remember position.", + default= True + ) + + coat3D.importtextures = BoolProperty( + name="Bring Textures", + description="Import Textures.", + default= True + ) + + coat3D.exportover = BoolProperty( + name="Export Obj", + description="Import Textures.", + default= False + ) + + coat3D.importmesh = BoolProperty( + name="Mesh", + description="Import Mesh.", + default= True + ) + + #copy location + + coat3D.cursor = FloatVectorProperty( + name="Cursor", + description="Location.", + subtype="XYZ", + default=(0.0, 0.0, 0.0) + ) + + coat3D.loca = FloatVectorProperty( + name="location", + description="Location.", + subtype="XYZ", + default=(0.0, 0.0, 0.0) + ) + + coat3D.rota = FloatVectorProperty( + name="location", + description="Location.", + subtype="EULER", + default=(0.0, 0.0, 0.0) + ) + + coat3D.scal = FloatVectorProperty( + name="location", + description="Location.", + subtype="XYZ", + default=(0.0, 0.0, 0.0) + ) + + coat3D.dime = FloatVectorProperty( + name="dimension", + description="Dimension.", + subtype="XYZ", + default=(0.0, 0.0, 0.0) + ) + + coat3D.type = EnumProperty( name= "Export Type", + description= "Diffrent Export Types.", + items=( + ("ppp", "Per-Pixel Painting", ""), + ("mv", "Microvertex Painting", ""), + ("ptex", "Ptex Painting", ""), + ("uv", "UV-Mapping", ""), + ("ref", "Reference Mesh", ""), + ("retopo", "Retopo mesh as new layer", ""), + ("vox", "Mesh As Voxel Object", ""), + ("alpha", "Mesh As New Pen Alpha", ""), + ("prim", "Mesh As Voxel Primitive", ""), + ("autopo", "Mesh for Auto-retopology", ""), + ), + default= "ppp" + ) def unregister(): - import bpy + import bpy - del bpy.types.Object.coat3D - del bpy.types.Scene.coat3D - del bpy.coat3D - + del bpy.types.Object.coat3D + del bpy.types.Scene.coat3D + del bpy.coat3D + if __name__ == "__main__": - register() + register() diff --git a/io_coat3D/coat.py b/io_coat3D/coat.py index 14593e6e795ddcc1265015d9da5a1e98952174f6..cc078d6905d8bec6d2fc4455e55e6cb5da20f83c 100644 --- a/io_coat3D/coat.py +++ b/io_coat3D/coat.py @@ -11,7 +11,7 @@ # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License @@ -21,19 +21,19 @@ # ***** END GPL LICENCE BLOCK ***** bl_addon_info = { - "name": "Coat Applink", - "author": "Kalle-Samuli Riihikoski (haikalle)", - "version": (1,6), - "blender": (2, 5, 4), - "api": 31965, - "location": "Properties space > Scene tab > 3D-Coat Applink", - "description": "Show information about the .blend", - "warning": "", - "wiki_url": 'http://wiki.blender.org/index.php/Extensions:2.5/Py/' \ - 'Scripts/System/Blend Info', - "tracker_url": "https://projects.blender.org/tracker/index.php?" \ - "func=detail&aid=22102&group_id=153&atid=469", - "category": "System"} + "name": "Coat Applink", + "author": "Kalle-Samuli Riihikoski (haikalle)", + "version": (1,6), + "blender": (2, 5, 4), + "api": 31965, + "location": "Properties space > Scene tab > 3D-Coat Applink", + "description": "Show information about the .blend", + "warning": "", + "wiki_url": 'http://wiki.blender.org/index.php/Extensions:2.5/Py/' \ + 'Scripts/System/Blend Info', + "tracker_url": "https://projects.blender.org/tracker/index.php?" \ + "func=detail&aid=22102&group_id=153&atid=469", + "category": "System"} import bpy from bpy.props import * @@ -49,452 +49,452 @@ bpy.coat3D['kuva'] = 1 #bpy.context.user_preferences.filepaths.use_relative_paths = False class ObjectButtonsPanel(): - bl_space_type = 'PROPERTIES' - bl_region_type = 'WINDOW' - bl_context = "object" + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "object" class SCENE_PT_Borgleader(ObjectButtonsPanel,bpy.types.Panel): - bl_label = "3D-Coat Applink" - bl_space_type = "PROPERTIES" - bl_region_type = "WINDOW" - bl_context = "scene" - - def draw(self, context): - layout = self.layout - scene = context.scene - me = context.scene.objects - mat_list = [] - import_no = 0 - coat = bpy.coat3D - coat3D = bpy.context.scene.coat3D - - if(coat['kuva'] == 1): + bl_label = "3D-Coat Applink" + bl_space_type = "PROPERTIES" + bl_region_type = "WINDOW" + bl_context = "scene" + + def draw(self, context): + layout = self.layout + scene = context.scene + me = context.scene.objects + mat_list = [] + import_no = 0 + coat = bpy.coat3D + coat3D = bpy.context.scene.coat3D + + if(coat['kuva'] == 1): bpy.context.scene.game_settings.material_mode = 'GLSL' coat['kuva'] = 0 - - if(os.path.isdir(coat3D.exchangedir)): - foldder = coat3D.exchangedir - if(foldder.rfind('Exchange') >= 0): - coat3D.exchangedir = foldder - coat['status'] = 1 - else: - coat['status'] = 0 - else: - coat['status'] = 0 - #Here you add your GUI - row = layout.row() - row.prop(coat3D,"type",text = "") - row = layout.row() - colL = row.column() - colR = row.column() - if(context.selected_objects): - if(context.selected_objects[0].type == 'MESH'): - colL.active = True - else: - colL.active = False - else: - colL.active = False - colL.operator("exportbutton", text="Export") - colL.label(text="Export Settings:") - - colL.prop(coat3D,"exportover") - if(coat3D.exportover): - colL.prop(coat3D,"exportmod") - colL.prop(coat3D,"exportfile") - colL.prop(coat3D,"export_pos") - - - if(bpy.context.active_object): - colR.active = True - else: - colR.active = False - - colR.operator("importbutton", text="Import") - colR.label(text="Import Settings:") - colR.prop(coat3D,"importmesh") - colR.prop(coat3D,"importmod") - colR.prop(coat3D,"smooth_on") - colR.prop(coat3D,"importtextures") - row = layout.row() - colL = row.column() - colM = row.column() - colR = row.column() - colL.operator("deltex",text="Del Tex") - if(bpy.context.active_object): - colM.active = True - if(bpy.context.active_object.coat3D.coatpath and os.path.isfile(bpy.context.active_object.coat3D.coatpath)): - colR.active = True - if(coat['active_coat'] == bpy.context.active_object.coat3D.coatpath): - colR.operator("load3b", text="Active 3b") - else: - colR.operator("load3b", text="Load 3b") - else: - colR.active = False - colR.operator("no3b",text="No 3b") - else: - colM.active = False - colR.active = False - colR.operator("no3b",text="") - colM.operator("pickname",text="Object name") - row = layout.row() - row.label(text="Object Path:") - row = layout.row() - row.prop(coat3D,"objectdir",text="") - if(bpy.context.active_object): - if(bpy.context.active_object.name != coat3D.wasactive): - coat3D.wasactive = bpy.context.active_object.name - if(bpy.context.active_object.coat3D.objpath): - coat3D.objectdir = bpy.context.active_object.coat3D.objpath - else: - bpy.context.active_object.coat3D.objpath = coat3D.objectdir - - row = layout.row() - - if(coat['status'] == 1): - row.label(text="Exchange Folder: connected") - Blender_folder = ("%s%sBlender"%(coat3D.exchangedir,os.sep)) - Blender_export = Blender_folder - Blender_export += ('%sexport.txt'%(os.sep)) - - if(not(os.path.isdir(Blender_folder))): - os.makedirs(Blender_folder) - Blender_folder = os.path.join(Blender_folder,"run.txt") - file = open(Blender_folder, "w") - file.close() - - if(os.path.isfile(Blender_export)): - obj_path ='' - obj_pathh = open(Blender_export) - for line in obj_pathh: - obj_path = line - break - obj_pathh.close() - print("%s"%obj_path) - export = obj_path - mod_time = os.path.getmtime(obj_path) - mtl_list = obj_path.replace('.obj','.mtl') - if(os.path.isfile(mtl_list)): - os.remove(mtl_list) - - for palikka in bpy.context.scene.objects: - if(palikka.type == 'MESH'): - if(palikka.coat3D.objpath == export): - import_no = 1 - target = palikka - break - - if(import_no): - new_obj = palikka - import_no = 0 - else: - bpy.ops.import_scene.obj(filepath=obj_path) - new_obj = scene.objects[0] - os.remove(Blender_export) - - bpy.context.scene.objects.active = new_obj - bpy.context.active_object.coat3D.objpath = obj_path - - if(coat3D.smooth_on): - bpy.ops.object.shade_smooth() - else: - bpy.ops.object.shade_flat() - - Blender_tex = ("%s%stextures.txt"%(coat3D.exchangedir,os.sep)) - mat_list.append(new_obj.material_slots[0].material) - tex.gettex(mat_list, new_obj, scene,export) - - - - - - if(coat['status'] == 0): - row.label(text="Exchange Folder: not connected") - row = layout.row() - row.prop(coat3D,"exchangedir",text="") - row = layout.row() - row.label(text="Author: haikalle@gmail.com") + + if(os.path.isdir(coat3D.exchangedir)): + foldder = coat3D.exchangedir + if(foldder.rfind('Exchange') >= 0): + coat3D.exchangedir = foldder + coat['status'] = 1 + else: + coat['status'] = 0 + else: + coat['status'] = 0 + #Here you add your GUI + row = layout.row() + row.prop(coat3D,"type",text = "") + row = layout.row() + colL = row.column() + colR = row.column() + if(context.selected_objects): + if(context.selected_objects[0].type == 'MESH'): + colL.active = True + else: + colL.active = False + else: + colL.active = False + colL.operator("exportbutton", text="Export") + colL.label(text="Export Settings:") + + colL.prop(coat3D,"exportover") + if(coat3D.exportover): + colL.prop(coat3D,"exportmod") + colL.prop(coat3D,"exportfile") + colL.prop(coat3D,"export_pos") + + + if(bpy.context.active_object): + colR.active = True + else: + colR.active = False + + colR.operator("importbutton", text="Import") + colR.label(text="Import Settings:") + colR.prop(coat3D,"importmesh") + colR.prop(coat3D,"importmod") + colR.prop(coat3D,"smooth_on") + colR.prop(coat3D,"importtextures") + row = layout.row() + colL = row.column() + colM = row.column() + colR = row.column() + colL.operator("deltex",text="Del Tex") + if(bpy.context.active_object): + colM.active = True + if(bpy.context.active_object.coat3D.coatpath and os.path.isfile(bpy.context.active_object.coat3D.coatpath)): + colR.active = True + if(coat['active_coat'] == bpy.context.active_object.coat3D.coatpath): + colR.operator("load3b", text="Active 3b") + else: + colR.operator("load3b", text="Load 3b") + else: + colR.active = False + colR.operator("no3b",text="No 3b") + else: + colM.active = False + colR.active = False + colR.operator("no3b",text="") + colM.operator("pickname",text="Object name") + row = layout.row() + row.label(text="Object Path:") + row = layout.row() + row.prop(coat3D,"objectdir",text="") + if(bpy.context.active_object): + if(bpy.context.active_object.name != coat3D.wasactive): + coat3D.wasactive = bpy.context.active_object.name + if(bpy.context.active_object.coat3D.objpath): + coat3D.objectdir = bpy.context.active_object.coat3D.objpath + else: + bpy.context.active_object.coat3D.objpath = coat3D.objectdir + + row = layout.row() + + if(coat['status'] == 1): + row.label(text="Exchange Folder: connected") + Blender_folder = ("%s%sBlender"%(coat3D.exchangedir,os.sep)) + Blender_export = Blender_folder + Blender_export += ('%sexport.txt'%(os.sep)) + + if(not(os.path.isdir(Blender_folder))): + os.makedirs(Blender_folder) + Blender_folder = os.path.join(Blender_folder,"run.txt") + file = open(Blender_folder, "w") + file.close() + + if(os.path.isfile(Blender_export)): + obj_path ='' + obj_pathh = open(Blender_export) + for line in obj_pathh: + obj_path = line + break + obj_pathh.close() + print("%s"%obj_path) + export = obj_path + mod_time = os.path.getmtime(obj_path) + mtl_list = obj_path.replace('.obj','.mtl') + if(os.path.isfile(mtl_list)): + os.remove(mtl_list) + + for palikka in bpy.context.scene.objects: + if(palikka.type == 'MESH'): + if(palikka.coat3D.objpath == export): + import_no = 1 + target = palikka + break + + if(import_no): + new_obj = palikka + import_no = 0 + else: + bpy.ops.import_scene.obj(filepath=obj_path) + new_obj = scene.objects[0] + os.remove(Blender_export) + + bpy.context.scene.objects.active = new_obj + bpy.context.active_object.coat3D.objpath = obj_path + + if(coat3D.smooth_on): + bpy.ops.object.shade_smooth() + else: + bpy.ops.object.shade_flat() + + Blender_tex = ("%s%stextures.txt"%(coat3D.exchangedir,os.sep)) + mat_list.append(new_obj.material_slots[0].material) + tex.gettex(mat_list, new_obj, scene,export) + + + + + + if(coat['status'] == 0): + row.label(text="Exchange Folder: not connected") + row = layout.row() + row.prop(coat3D,"exchangedir",text="") + row = layout.row() + row.label(text="Author: haikalle@gmail.com") class SCENE_OT_export(bpy.types.Operator): - bl_idname = "exportbutton" - bl_label = "Export your custom property" - bl_description = "Export your custom property" + bl_idname = "exportbutton" + bl_label = "Export your custom property" + bl_description = "Export your custom property" - def invoke(self, context, event): - checkname = '' - coat3D = bpy.context.scene.coat3D - scene = context.scene - coat3D.export_on = False - activeobj = bpy.context.active_object.name - obj = scene.objects[activeobj] - - importfile = coat3D.exchangedir - texturefile = coat3D.exchangedir - importfile += ('%simport.txt'%(os.sep)) - texturefile += ('%stextures.txt'%(os.sep)) - if(os.path.isfile(texturefile)): - os.remove(texturefile) - - checkname = coat3D.objectdir - - if(coat3D.objectdir[-4:] != '.obj'): - checkname += ('%s.obj'%(activeobj)) - - if(not(os.path.isfile(checkname)) or coat3D.exportover): - if(coat3D.export_pos): - - bpy.ops.export_scene.obj(filepath=checkname,use_selection=True, - use_modifiers=coat3D.exportmod,use_blen_objects=False, group_by_material= True, - use_materials = False,keep_vertex_order = True) - - coat3D.export_on = True - else: - coat3D.loca = obj.location - coat3D.rota = obj.rotation_euler - coat3D.scal = obj.scale - obj.location = (0,0,0) - obj.rotation_euler = (0,0,0) - obj.scale = (1,1,1) - - bpy.ops.export_scene.obj(filepath=checkname,use_selection=True, - use_modifiers=coat3D.exportmod,use_blen_objects=False, group_by_material= True, - use_materials = False,keep_vertex_order = True) - - obj.location = coat3D.loca - obj.rotation_euler = coat3D.rota - obj.scale = coat3D.scal - coat3D.export_on = True - - - - if(coat3D.exportfile == False): - file = open(importfile, "w") - file.write("%s"%(checkname)) - file.write("\n%s"%(checkname)) - file.write("\n[%s]"%(coat3D.type)) - file.close() - coat3D.objectdir = checkname - bpy.context.active_object.coat3D.objpath = coat3D.objectdir - - return('FINISHED') + def invoke(self, context, event): + checkname = '' + coat3D = bpy.context.scene.coat3D + scene = context.scene + coat3D.export_on = False + activeobj = bpy.context.active_object.name + obj = scene.objects[activeobj] + + importfile = coat3D.exchangedir + texturefile = coat3D.exchangedir + importfile += ('%simport.txt'%(os.sep)) + texturefile += ('%stextures.txt'%(os.sep)) + if(os.path.isfile(texturefile)): + os.remove(texturefile) + + checkname = coat3D.objectdir + + if(coat3D.objectdir[-4:] != '.obj'): + checkname += ('%s.obj'%(activeobj)) + + if(not(os.path.isfile(checkname)) or coat3D.exportover): + if(coat3D.export_pos): + + bpy.ops.export_scene.obj(filepath=checkname,use_selection=True, + use_modifiers=coat3D.exportmod,use_blen_objects=False, group_by_material= True, + use_materials = False,keep_vertex_order = True) + + coat3D.export_on = True + else: + coat3D.loca = obj.location + coat3D.rota = obj.rotation_euler + coat3D.scal = obj.scale + obj.location = (0,0,0) + obj.rotation_euler = (0,0,0) + obj.scale = (1,1,1) + + bpy.ops.export_scene.obj(filepath=checkname,use_selection=True, + use_modifiers=coat3D.exportmod,use_blen_objects=False, group_by_material= True, + use_materials = False,keep_vertex_order = True) + + obj.location = coat3D.loca + obj.rotation_euler = coat3D.rota + obj.scale = coat3D.scal + coat3D.export_on = True + + + + if(coat3D.exportfile == False): + file = open(importfile, "w") + file.write("%s"%(checkname)) + file.write("\n%s"%(checkname)) + file.write("\n[%s]"%(coat3D.type)) + file.close() + coat3D.objectdir = checkname + bpy.context.active_object.coat3D.objpath = coat3D.objectdir + + return('FINISHED') class SCENE_OT_import(bpy.types.Operator): - bl_idname = "importbutton" - bl_label = "import your custom property" - bl_description = "import your custom property" + bl_idname = "importbutton" + bl_label = "import your custom property" + bl_description = "import your custom property" - def invoke(self, context, event): - scene = context.scene - coat3D = bpy.context.scene.coat3D - coat = bpy.coat3D - activeobj = bpy.context.active_object.name - mat_list = [] - scene.objects[activeobj].select = True - objekti = scene.objects[activeobj] - coat3D.loca = objekti.location - coat3D.rota = objekti.rotation_euler - - exportfile = coat3D.exchangedir - exportfile += ('%sexport.txt'%(os.sep)) - if(os.path.isfile(exportfile)): - export_file = open(exportfile) - for line in export_file: - if line.rfind('.3b'): - objekti.coat3D.coatpath = line - coat['active_coat'] = line - export_file.close() - os.remove(exportfile) - - - - - if(objekti.material_slots): - for obj_mat in objekti.material_slots: - mat_list.append(obj_mat.material) - act_mat_index = objekti.active_material_index - - - if(coat3D.importmesh and os.path.isfile(coat3D.objectdir)): - mtl = coat3D.objectdir - mtl = mtl.replace('.obj','.mtl') - if(os.path.isfile(mtl)): - os.remove(mtl) - - - bpy.ops.import_scene.obj(filepath=coat3D.objectdir) - obj_proxy = scene.objects[0] - proxy_mat = obj_proxy.material_slots[0].material - obj_proxy.data.materials.pop(0) - proxy_mat.user_clear() - bpy.data.materials.remove(proxy_mat) - bpy.ops.object.select_all(action='TOGGLE') - if(coat3D.export_pos): - scene.objects.active = objekti - objekti.select = True - coat3D.cursor = bpy.context.scene.cursor_location - bpy.context.scene.cursor_location = (0.0,0.0,0.0) - bpy.ops.object.origin_set(type='ORIGIN_CURSOR', center='MEDIAN') - - scene.objects.active = obj_proxy - - obj_data = objekti.data.id_data - objekti.data = obj_proxy.data.id_data - - if(coat3D.export_on): - objekti.scale = (1,1,1) - objekti.rotation_euler = (0,0,0) - - if(bpy.data.meshes[obj_data.name].users == 0): - bpy.data.meshes.remove(obj_data) - objekti.data.id_data.name = obj_data.name - - bpy.ops.object.select_all(action='TOGGLE') - - obj_proxy.select = True - bpy.ops.object.delete() - objekti.select = True - bpy.context.scene.objects.active = objekti - if(coat3D.export_on): - bpy.ops.object.origin_set(type='ORIGIN_GEOMETRY', center='MEDIAN') - coat3D.export_on = False - - else: - objekti.location = coat3D.loca - objekti.rotation_euler = coat3D.rota - bpy.ops.object.origin_set(type='GEOMETRY_ORIGIN', center='MEDIAN') - else: - scene.objects.active = obj_proxy - - obj_data = objekti.data.id_data - objekti.data = obj_proxy.data.id_data - if(bpy.data.meshes[obj_data.name].users == 0): - bpy.data.meshes.remove(obj_data) - objekti.data.id_data.name = obj_data.name - - obj_proxy.select = True - bpy.ops.object.delete() - objekti.select = True - bpy.context.scene.objects.active = objekti - - - - if(coat3D.smooth_on): - bpy.ops.object.shade_smooth() - else: - bpy.ops.object.shade_flat() - - if(coat3D.importmesh and not(os.path.isfile(coat3D.objectdir))): - coat3D.importmesh = False - - if(mat_list and coat3D.importmesh): - for mat_one in mat_list: - objekti.data.materials.append(mat_one) - objekti.active_material_index = act_mat_index - - if(mat_list): - for obj_mate in objekti.material_slots: - for tex_slot in obj_mate.material.texture_slots: - if(hasattr(tex_slot,'texture')): - if(tex_slot.texture.type == 'IMAGE'): + def invoke(self, context, event): + scene = context.scene + coat3D = bpy.context.scene.coat3D + coat = bpy.coat3D + activeobj = bpy.context.active_object.name + mat_list = [] + scene.objects[activeobj].select = True + objekti = scene.objects[activeobj] + coat3D.loca = objekti.location + coat3D.rota = objekti.rotation_euler + + exportfile = coat3D.exchangedir + exportfile += ('%sexport.txt'%(os.sep)) + if(os.path.isfile(exportfile)): + export_file = open(exportfile) + for line in export_file: + if line.rfind('.3b'): + objekti.coat3D.coatpath = line + coat['active_coat'] = line + export_file.close() + os.remove(exportfile) + + + + + if(objekti.material_slots): + for obj_mat in objekti.material_slots: + mat_list.append(obj_mat.material) + act_mat_index = objekti.active_material_index + + + if(coat3D.importmesh and os.path.isfile(coat3D.objectdir)): + mtl = coat3D.objectdir + mtl = mtl.replace('.obj','.mtl') + if(os.path.isfile(mtl)): + os.remove(mtl) + + + bpy.ops.import_scene.obj(filepath=coat3D.objectdir) + obj_proxy = scene.objects[0] + proxy_mat = obj_proxy.material_slots[0].material + obj_proxy.data.materials.pop(0) + proxy_mat.user_clear() + bpy.data.materials.remove(proxy_mat) + bpy.ops.object.select_all(action='TOGGLE') + if(coat3D.export_pos): + scene.objects.active = objekti + objekti.select = True + coat3D.cursor = bpy.context.scene.cursor_location + bpy.context.scene.cursor_location = (0.0,0.0,0.0) + bpy.ops.object.origin_set(type='ORIGIN_CURSOR', center='MEDIAN') + + scene.objects.active = obj_proxy + + obj_data = objekti.data.id_data + objekti.data = obj_proxy.data.id_data + + if(coat3D.export_on): + objekti.scale = (1,1,1) + objekti.rotation_euler = (0,0,0) + + if(bpy.data.meshes[obj_data.name].users == 0): + bpy.data.meshes.remove(obj_data) + objekti.data.id_data.name = obj_data.name + + bpy.ops.object.select_all(action='TOGGLE') + + obj_proxy.select = True + bpy.ops.object.delete() + objekti.select = True + bpy.context.scene.objects.active = objekti + if(coat3D.export_on): + bpy.ops.object.origin_set(type='ORIGIN_GEOMETRY', center='MEDIAN') + coat3D.export_on = False + + else: + objekti.location = coat3D.loca + objekti.rotation_euler = coat3D.rota + bpy.ops.object.origin_set(type='GEOMETRY_ORIGIN', center='MEDIAN') + else: + scene.objects.active = obj_proxy + + obj_data = objekti.data.id_data + objekti.data = obj_proxy.data.id_data + if(bpy.data.meshes[obj_data.name].users == 0): + bpy.data.meshes.remove(obj_data) + objekti.data.id_data.name = obj_data.name + + obj_proxy.select = True + bpy.ops.object.delete() + objekti.select = True + bpy.context.scene.objects.active = objekti + + + + if(coat3D.smooth_on): + bpy.ops.object.shade_smooth() + else: + bpy.ops.object.shade_flat() + + if(coat3D.importmesh and not(os.path.isfile(coat3D.objectdir))): + coat3D.importmesh = False + + if(mat_list and coat3D.importmesh): + for mat_one in mat_list: + objekti.data.materials.append(mat_one) + objekti.active_material_index = act_mat_index + + if(mat_list): + for obj_mate in objekti.material_slots: + for tex_slot in obj_mate.material.texture_slots: + if(hasattr(tex_slot,'texture')): + if(tex_slot.texture.type == 'IMAGE'): tex_slot.texture.image.reload() - if(coat3D.importmod): - mod_list = [] - for mod_index in objekti.modifiers: - objekti.modifiers.remove(mod_index) + if(coat3D.importmod): + mod_list = [] + for mod_index in objekti.modifiers: + objekti.modifiers.remove(mod_index) - - - if(coat3D.importtextures): + + + if(coat3D.importtextures): export = '' tex.gettex(mat_list,objekti,scene,export) - - return('FINISHED') + + return('FINISHED') class SCENE_OT_load3b(bpy.types.Operator): - bl_idname = "load3b" - bl_label = "Loads 3b linked into object" - bl_description = "Loads 3b linked into object" + bl_idname = "load3b" + bl_label = "Loads 3b linked into object" + bl_description = "Loads 3b linked into object" - def invoke(self, context, event): - checkname = '' - coat3D = bpy.context.scene.coat3D - scene = context.scene - importfile = coat3D.exchangedir - importfile += ('%simport.txt'%(os.sep)) - - coat_path = bpy.context.active_object.coat3D.coatpath - - file = open(importfile, "w") - file.write("%s"%(coat_path)) - file.write("\n%s"%(coat_path)) - file.write("\n[3B]") - file.close() - - - coat['active_coat'] = coat_path - - - return('FINISHED') + def invoke(self, context, event): + checkname = '' + coat3D = bpy.context.scene.coat3D + scene = context.scene + importfile = coat3D.exchangedir + importfile += ('%simport.txt'%(os.sep)) + + coat_path = bpy.context.active_object.coat3D.coatpath + + file = open(importfile, "w") + file.write("%s"%(coat_path)) + file.write("\n%s"%(coat_path)) + file.write("\n[3B]") + file.close() + + + coat['active_coat'] = coat_path + + + return('FINISHED') class SCENE_OT_no3b(bpy.types.Operator): - bl_idname = "no3b" - bl_label = "Loads 3b linked into object" - bl_description = "Loads 3b linked into object" + bl_idname = "no3b" + bl_label = "Loads 3b linked into object" + bl_description = "Loads 3b linked into object" - def invoke(self, context, event): - scene = context.scene - - return('FINISHED') + def invoke(self, context, event): + scene = context.scene + + return('FINISHED') class SCENE_OT_pickname(bpy.types.Operator): - bl_idname = "pickname" - bl_label = "Picks Object's name into path" - bl_description = "Loads 3b linked into object" + bl_idname = "pickname" + bl_label = "Picks Object's name into path" + bl_description = "Loads 3b linked into object" - def invoke(self, context, event): - coat3D = bpy.context.scene.coat3D - scene = context.scene - new_name = tex.stripFile(coat3D.objectdir) - new_name += ("%s.obj"%(bpy.context.active_object.name)) - coat3D.objectdir = new_name - - return('FINISHED') + def invoke(self, context, event): + coat3D = bpy.context.scene.coat3D + scene = context.scene + new_name = tex.stripFile(coat3D.objectdir) + new_name += ("%s.obj"%(bpy.context.active_object.name)) + coat3D.objectdir = new_name + + return('FINISHED') class SCENE_OT_deltex(bpy.types.Operator): - bl_idname = "deltex" - bl_label = "Picks Object's name into path" - bl_description = "Loads 3b linked into object" + bl_idname = "deltex" + bl_label = "Picks Object's name into path" + bl_description = "Loads 3b linked into object" - def invoke(self, context, event): - coat3D = bpy.context.scene.coat3D - scene = context.scene - nimi = tex.objname(coat3D.objectdir) - osoite = tex.stripFile(coat3D.objectdir) - just_nimi = tex.justname(nimi) - just_nimi += '_' - - files = os.listdir(osoite) - for i in files: - if(i.rfind(just_nimi) >= 0): - del_osoite = osoite + i - os.remove(del_osoite) - - return('FINISHED') + def invoke(self, context, event): + coat3D = bpy.context.scene.coat3D + scene = context.scene + nimi = tex.objname(coat3D.objectdir) + osoite = tex.stripFile(coat3D.objectdir) + just_nimi = tex.justname(nimi) + just_nimi += '_' + + files = os.listdir(osoite) + for i in files: + if(i.rfind(just_nimi) >= 0): + del_osoite = osoite + i + os.remove(del_osoite) + + return('FINISHED') def register(): - pass + pass def unregister(): - pass + pass if __name__ == "__main__": - register() + register() diff --git a/io_coat3D/tex.py b/io_coat3D/tex.py index db74d1dcb4b4165732bc89eac6ce979f38c69a6c..8f85004caa83d3aba498b97f29a0d3594daf1f08 100644 --- a/io_coat3D/tex.py +++ b/io_coat3D/tex.py @@ -5,25 +5,25 @@ import filecmp def objname(path): - path2 = os.path.dirname(path) + os.sep - print("kalle:%s"%path2) - pituus = len(path2) - nimi = path[pituus:] + path2 = os.path.dirname(path) + os.sep + print("kalle:%s"%path2) + pituus = len(path2) + nimi = path[pituus:] - return nimi + return nimi def justname(name): - monesko = name.rfind('.') - justname = name[:monesko] - return justname + monesko = name.rfind('.') + justname = name[:monesko] + return justname def setgallery(): - newname ='' - tex_name =[] - index_tex = 0 - for tt in bpy.data.textures: - tex_name.append(tt.name) - return tex_name + newname ='' + tex_name =[] + index_tex = 0 + for tt in bpy.data.textures: + tex_name.append(tt.name) + return tex_name def find_index(objekti): luku = 0 @@ -37,347 +37,336 @@ def find_index(objekti): def gettex(mat_list, objekti, scene,export): - coat3D = bpy.context.scene.coat3D - - if(bpy.context.scene.render.engine == 'VRAY_RENDER' or bpy.context.scene.render.engine == 'VRAY_RENDER_PREVIEW'): - vray = True - else: - vray = False + coat3D = bpy.context.scene.coat3D + + if(bpy.context.scene.render.engine == 'VRAY_RENDER' or bpy.context.scene.render.engine == 'VRAY_RENDER_PREVIEW'): + vray = True + else: + vray = False - - take_color = 0; - take_spec = 0; - take_normal = 0; - take_disp = 0; - - bring_color = 1; - bring_spec = 1; - bring_normal = 1; - bring_disp = 1; - - texcoat = {} - texcoat['color'] = [] - texcoat['specular'] = [] - texcoat['nmap'] = [] - texcoat['disp'] = [] - texu = [] - - if(export): - objekti.coat3D.objpath = export - nimi = objname(export) - osoite = os.path.dirname(export) + os.sep - for mate in objekti.material_slots: - for tex_slot in mate.material.texture_slots: - if(hasattr(tex_slot,'texture')): - if(tex_slot.texture.type == 'IMAGE'): + + take_color = 0; + take_spec = 0; + take_normal = 0; + take_disp = 0; + + bring_color = 1; + bring_spec = 1; + bring_normal = 1; + bring_disp = 1; + + texcoat = {} + texcoat['color'] = [] + texcoat['specular'] = [] + texcoat['nmap'] = [] + texcoat['disp'] = [] + texu = [] + + if(export): + objekti.coat3D.objpath = export + nimi = objname(export) + osoite = os.path.dirname(export) + os.sep + for mate in objekti.material_slots: + for tex_slot in mate.material.texture_slots: + if(hasattr(tex_slot,'texture')): + if(tex_slot.texture.type == 'IMAGE'): tex_slot.texture.image.reload() - else: - nimi = objname(coat3D.objectdir) - osoite = os.path.dirname(coat3D.objectdir) + os.sep - just_nimi = justname(nimi) - just_nimi += '_' - just_nimi_len = len(just_nimi) - - - if(len(objekti.material_slots) != 0): - for obj_tex in objekti.active_material.texture_slots: - if(hasattr(obj_tex,'texture')): - if(obj_tex.texture): - if(obj_tex.use_map_color_diffuse): - bring_color = 0; - if(obj_tex.use_map_specular): - bring_spec = 0; - if(obj_tex.use_map_normal): - bring_normal = 0; - if(obj_tex.use_map_displacement): - bring_disp = 0; - - files = os.listdir(osoite) - for i in files: - tui = i[:just_nimi_len] - if(tui == just_nimi): - texu.append(i) - - for yy in texu: - minimi = (yy.rfind('_'))+1 - maksimi = (yy.rfind('.')) - tex_name = yy[minimi:maksimi] - koko = '' - koko += osoite - koko += yy - texcoat[tex_name].append(koko) - #date = os.path.getmtime(texcoat[tex_name][0]) - - if((texcoat['color'] or texcoat['nmap'] or texcoat['disp'] or texcoat['specular']) and (len(objekti.material_slots)) == 0): - new_mat = ("%s_Material"%(objekti.name)) - bpy.data.materials.new(new_mat) - ki = bpy.data.materials[new_mat] - objekti.data.materials.append(ki) - - - - if(bring_color == 1 and texcoat['color']): - name_tex ='Color_' - num = [] - - index = find_index(objekti) - - - tex = bpy.ops.Texture - objekti.active_material.texture_slots.create(index) - total_mat = len(objekti.active_material.texture_slots.items()) - useold = '' - - for seekco in bpy.data.textures: - if((seekco.name[:6] == 'Color_') and (seekco.users_material == ())): - useold = seekco - - - - - if(useold == ''): - - tex_name = setgallery() - - for num_tex in tex_name: - if(num_tex[:6] == 'Color_'): - num.append(num_tex) - luku_tex = len(num) - name_tex = ('Color_%s'%(luku_tex)) - - bpy.ops.image.new(name=name_tex) - bpy.data.images[name_tex].filepath = texcoat['color'][0] - bpy.data.images[name_tex].source = 'FILE' - - - bpy.data.textures.new(name_tex,type='IMAGE') - objekti.active_material.texture_slots[index].texture = bpy.data.textures[name_tex] - objekti.active_material.texture_slots[index].texture.image = bpy.data.images[name_tex] - - if(objekti.data.uv_textures.active): - objekti.active_material.texture_slots[index].texture_coords = 'UV' - objekti.active_material.texture_slots[index].uv_layer = objekti.data.uv_textures.active.name - - objekti.active_material.texture_slots[index].texture.image.reload() - - - elif(useold != ''): - - objekti.active_material.texture_slots[index].texture = useold - objekti.active_material.texture_slots[index].texture.image.filepath = texcoat['color'][0] - if(objekti.data.uv_textures.active): - objekti.active_material.texture_slots[index].texture_coords = 'UV' - objekti.active_material.texture_slots[index].uv_layer = objekti.data.uv_textures.active.name - - if(bring_normal == 1 and texcoat['nmap']): - name_tex ='Normal_' - num = [] - - index = find_index(objekti) - - - tex = bpy.ops.Texture - objekti.active_material.texture_slots.create(index) - total_mat = len(objekti.active_material.texture_slots.items()) - useold = '' - - for seekco in bpy.data.textures: - if((seekco.name[:7] == 'Normal_') and (seekco.users_material == ())): - useold = seekco - - - - if(useold == ''): - - tex_name = setgallery() - - for num_tex in tex_name: - if(num_tex[:7] == 'Normal_'): - num.append(num_tex) - luku_tex = len(num) - name_tex = ('Normal_%s'%(luku_tex)) - - bpy.ops.image.new(name=name_tex) - bpy.data.images[name_tex].filepath = texcoat['nmap'][0] - bpy.data.images[name_tex].source = 'FILE' - - - bpy.data.textures.new(name_tex,type='IMAGE') - objekti.active_material.texture_slots[index].texture = bpy.data.textures[name_tex] - objekti.active_material.texture_slots[index].texture.image = bpy.data.images[name_tex] - - if(objekti.data.uv_textures.active): - objekti.active_material.texture_slots[index].texture_coords = 'UV' - objekti.active_material.texture_slots[index].uv_layer = objekti.data.uv_textures.active.name - objekti.active_material.texture_slots[index].use_map_color_diffuse = False - objekti.active_material.texture_slots[index].use_map_normal = True - - objekti.active_material.texture_slots[index].texture.image.reload() - if(vray): - bpy.data.textures[name_tex].vray_slot.BRDFBump.map_type = 'TANGENT' - - else: - bpy.data.textures[name_tex].use_normal_map = True - bpy.data.textures[name_tex].normal_space = 'TANGENT' - - - elif(useold != ''): - - objekti.active_material.texture_slots[index].texture = useold - objekti.active_material.texture_slots[index].texture.image.filepath = texcoat['nmap'][0] - if(objekti.data.uv_textures.active): - objekti.active_material.texture_slots[index].texture_coords = 'UV' - objekti.active_material.texture_slots[index].uv_layer = objekti.data.uv_textures.active.name - objekti.active_material.texture_slots[index].use_map_color_diffuse = False - objekti.active_material.texture_slots[index].use_map_normal = True - - - - if(bring_spec == 1 and texcoat['specular']): - name_tex ='Specular_' - num = [] - - index = find_index(objekti) - - - tex = bpy.ops.Texture - objekti.active_material.texture_slots.create(index) - total_mat = len(objekti.active_material.texture_slots.items()) - useold = '' - - for seekco in bpy.data.textures: - if((seekco.name[:9] == 'Specular_') and (seekco.users_material == ())): - useold = seekco - - - - - if(useold == ''): - - tex_name = setgallery() - - for num_tex in tex_name: - if(num_tex[:9] == 'Specular_'): - num.append(num_tex) - luku_tex = len(num) - name_tex = ('Specular_%s'%(luku_tex)) - - bpy.ops.image.new(name=name_tex) - bpy.data.images[name_tex].filepath = texcoat['specular'][0] - bpy.data.images[name_tex].source = 'FILE' - - - bpy.data.textures.new(name_tex,type='IMAGE') - objekti.active_material.texture_slots[index].texture = bpy.data.textures[name_tex] - objekti.active_material.texture_slots[index].texture.image = bpy.data.images[name_tex] - - if(objekti.data.uv_textures.active): - objekti.active_material.texture_slots[index].texture_coords = 'UV' - objekti.active_material.texture_slots[index].uv_layer = objekti.data.uv_textures.active.name - objekti.active_material.texture_slots[index].use_map_color_diffuse = False - objekti.active_material.texture_slots[index].use_map_specular = True - - objekti.active_material.texture_slots[index].texture.image.reload() - - - elif(useold != ''): - - objekti.active_material.texture_slots[index].texture = useold - objekti.active_material.texture_slots[index].texture.image.filepath = texcoat['specular'][0] - if(objekti.data.uv_textures.active): - objekti.active_material.texture_slots[index].texture_coords = 'UV' - objekti.active_material.texture_slots[index].uv_layer = objekti.data.uv_textures.active.name - objekti.active_material.texture_slots[index].use_map_color_diffuse = False - objekti.active_material.texture_slots[index].use_map_specular = True - - if(bring_disp == 1 and texcoat['disp']): - name_tex ='Displacement_' - num = [] - - index = find_index(objekti) - - - tex = bpy.ops.Texture - objekti.active_material.texture_slots.create(index) - total_mat = len(objekti.active_material.texture_slots.items()) - useold = '' - - for seekco in bpy.data.textures: - if((seekco.name[:13] == 'Displacement_') and (seekco.users_material == ())): - useold = seekco - - - - - if(useold == ''): - - tex_name = setgallery() - - for num_tex in tex_name: - if(num_tex[:13] == 'Displacement_'): - num.append(num_tex) - luku_tex = len(num) - name_tex = ('Displacement_%s'%(luku_tex)) - - bpy.ops.image.new(name=name_tex) - bpy.data.images[name_tex].filepath = texcoat['disp'][0] - bpy.data.images[name_tex].source = 'FILE' - - - bpy.data.textures.new(name_tex,type='IMAGE') - objekti.active_material.texture_slots[index].texture = bpy.data.textures[name_tex] - objekti.active_material.texture_slots[index].texture.image = bpy.data.images[name_tex] - - if(objekti.data.uv_textures.active): - objekti.active_material.texture_slots[index].texture_coords = 'UV' - objekti.active_material.texture_slots[index].uv_layer = objekti.data.uv_textures.active.name - objekti.active_material.texture_slots[index].use_map_color_diffuse = False - objekti.active_material.texture_slots[index].use_map_displacement = True - - objekti.active_material.texture_slots[index].texture.image.reload() - - - elif(useold != ''): - - objekti.active_material.texture_slots[index].texture = useold - objekti.active_material.texture_slots[index].texture.image.filepath = texcoat['disp'][0] - if(objekti.data.uv_textures.active): - objekti.active_material.texture_slots[index].texture_coords = 'UV' - objekti.active_material.texture_slots[index].uv_layer = objekti.data.uv_textures.active.name - objekti.active_material.texture_slots[index].use_map_color_diffuse = False - objekti.active_material.texture_slots[index].use_map_displacement = True - - if(vray): - objekti.active_material.texture_slots[index].texture.use_interpolation = False - objekti.active_material.texture_slots[index].displacement_factor = 0.05 - - - else: - disp_modi = '' - for seek_modi in objekti.modifiers: - if(seek_modi.type == 'DISPLACE'): - disp_modi = seek_modi - break - if(disp_modi): - disp_modi.texture = objekti.active_material.texture_slots[index].texture - if(objekti.data.uv_textures.active): - disp_modi.texture_coords = 'UV' - disp_modi.uv_layer = objekti.data.uv_textures.active.name - else: - objekti.modifiers.new('Displace',type='DISPLACE') - objekti.modifiers['Displace'].texture = objekti.active_material.texture_slots[index].texture - if(objekti.data.uv_textures.active): - objekti.modifiers['Displace'].texture_coords = 'UV' - objekti.modifiers['Displace'].uv_layer = objekti.data.uv_textures.active.name - + else: + nimi = objname(coat3D.objectdir) + osoite = os.path.dirname(coat3D.objectdir) + os.sep + just_nimi = justname(nimi) + just_nimi += '_' + just_nimi_len = len(just_nimi) + + + if(len(objekti.material_slots) != 0): + for obj_tex in objekti.active_material.texture_slots: + if(hasattr(obj_tex,'texture')): + if(obj_tex.texture): + if(obj_tex.use_map_color_diffuse): + bring_color = 0; + if(obj_tex.use_map_specular): + bring_spec = 0; + if(obj_tex.use_map_normal): + bring_normal = 0; + if(obj_tex.use_map_displacement): + bring_disp = 0; + + files = os.listdir(osoite) + for i in files: + tui = i[:just_nimi_len] + if(tui == just_nimi): + texu.append(i) + + for yy in texu: + minimi = (yy.rfind('_'))+1 + maksimi = (yy.rfind('.')) + tex_name = yy[minimi:maksimi] + koko = '' + koko += osoite + koko += yy + texcoat[tex_name].append(koko) + #date = os.path.getmtime(texcoat[tex_name][0]) + + if((texcoat['color'] or texcoat['nmap'] or texcoat['disp'] or texcoat['specular']) and (len(objekti.material_slots)) == 0): + new_mat = ("%s_Material"%(objekti.name)) + bpy.data.materials.new(new_mat) + ki = bpy.data.materials[new_mat] + objekti.data.materials.append(ki) + + + + if(bring_color == 1 and texcoat['color']): + name_tex ='Color_' + num = [] + + index = find_index(objekti) + + + tex = bpy.ops.Texture + objekti.active_material.texture_slots.create(index) + total_mat = len(objekti.active_material.texture_slots.items()) + useold = '' + + for seekco in bpy.data.textures: + if((seekco.name[:6] == 'Color_') and (seekco.users_material == ())): + useold = seekco + + if(useold == ''): + tex_name = setgallery() + for num_tex in tex_name: + if(num_tex[:6] == 'Color_'): + num.append(num_tex) + luku_tex = len(num) + name_tex = ('Color_%s'%(luku_tex)) + bpy.ops.image.new(name=name_tex) + bpy.data.images[name_tex].filepath = texcoat['color'][0] + bpy.data.images[name_tex].source = 'FILE' + + bpy.data.textures.new(name_tex,type='IMAGE') + objekti.active_material.texture_slots[index].texture = bpy.data.textures[name_tex] + objekti.active_material.texture_slots[index].texture.image = bpy.data.images[name_tex] + + if(objekti.data.uv_textures.active): + objekti.active_material.texture_slots[index].texture_coords = 'UV' + objekti.active_material.texture_slots[index].uv_layer = objekti.data.uv_textures.active.name + + objekti.active_material.texture_slots[index].texture.image.reload() + + + elif(useold != ''): + + objekti.active_material.texture_slots[index].texture = useold + objekti.active_material.texture_slots[index].texture.image.filepath = texcoat['color'][0] + if(objekti.data.uv_textures.active): + objekti.active_material.texture_slots[index].texture_coords = 'UV' + objekti.active_material.texture_slots[index].uv_layer = objekti.data.uv_textures.active.name - return('FINISHED') + if(bring_normal == 1 and texcoat['nmap']): + name_tex ='Normal_' + num = [] + + index = find_index(objekti) + + + tex = bpy.ops.Texture + objekti.active_material.texture_slots.create(index) + total_mat = len(objekti.active_material.texture_slots.items()) + useold = '' + + for seekco in bpy.data.textures: + if((seekco.name[:7] == 'Normal_') and (seekco.users_material == ())): + useold = seekco + + + + if(useold == ''): + + tex_name = setgallery() - + for num_tex in tex_name: + if(num_tex[:7] == 'Normal_'): + num.append(num_tex) + luku_tex = len(num) + name_tex = ('Normal_%s'%(luku_tex)) + + bpy.ops.image.new(name=name_tex) + bpy.data.images[name_tex].filepath = texcoat['nmap'][0] + bpy.data.images[name_tex].source = 'FILE' + + + bpy.data.textures.new(name_tex,type='IMAGE') + objekti.active_material.texture_slots[index].texture = bpy.data.textures[name_tex] + objekti.active_material.texture_slots[index].texture.image = bpy.data.images[name_tex] + + if(objekti.data.uv_textures.active): + objekti.active_material.texture_slots[index].texture_coords = 'UV' + objekti.active_material.texture_slots[index].uv_layer = objekti.data.uv_textures.active.name + objekti.active_material.texture_slots[index].use_map_color_diffuse = False + objekti.active_material.texture_slots[index].use_map_normal = True + + objekti.active_material.texture_slots[index].texture.image.reload() + if(vray): + bpy.data.textures[name_tex].vray_slot.BRDFBump.map_type = 'TANGENT' + + else: + bpy.data.textures[name_tex].use_normal_map = True + bpy.data.textures[name_tex].normal_space = 'TANGENT' + + + elif(useold != ''): + + objekti.active_material.texture_slots[index].texture = useold + objekti.active_material.texture_slots[index].texture.image.filepath = texcoat['nmap'][0] + if(objekti.data.uv_textures.active): + objekti.active_material.texture_slots[index].texture_coords = 'UV' + objekti.active_material.texture_slots[index].uv_layer = objekti.data.uv_textures.active.name + objekti.active_material.texture_slots[index].use_map_color_diffuse = False + objekti.active_material.texture_slots[index].use_map_normal = True + + + if(bring_spec == 1 and texcoat['specular']): + name_tex ='Specular_' + num = [] + + index = find_index(objekti) + + + tex = bpy.ops.Texture + objekti.active_material.texture_slots.create(index) + total_mat = len(objekti.active_material.texture_slots.items()) + useold = '' + + for seekco in bpy.data.textures: + if((seekco.name[:9] == 'Specular_') and (seekco.users_material == ())): + useold = seekco + + + + + if(useold == ''): + + tex_name = setgallery() + + for num_tex in tex_name: + if(num_tex[:9] == 'Specular_'): + num.append(num_tex) + luku_tex = len(num) + name_tex = ('Specular_%s'%(luku_tex)) + + bpy.ops.image.new(name=name_tex) + bpy.data.images[name_tex].filepath = texcoat['specular'][0] + bpy.data.images[name_tex].source = 'FILE' + + + bpy.data.textures.new(name_tex,type='IMAGE') + objekti.active_material.texture_slots[index].texture = bpy.data.textures[name_tex] + objekti.active_material.texture_slots[index].texture.image = bpy.data.images[name_tex] + + if(objekti.data.uv_textures.active): + objekti.active_material.texture_slots[index].texture_coords = 'UV' + objekti.active_material.texture_slots[index].uv_layer = objekti.data.uv_textures.active.name + objekti.active_material.texture_slots[index].use_map_color_diffuse = False + objekti.active_material.texture_slots[index].use_map_specular = True + + objekti.active_material.texture_slots[index].texture.image.reload() + + + elif(useold != ''): + + objekti.active_material.texture_slots[index].texture = useold + objekti.active_material.texture_slots[index].texture.image.filepath = texcoat['specular'][0] + if(objekti.data.uv_textures.active): + objekti.active_material.texture_slots[index].texture_coords = 'UV' + objekti.active_material.texture_slots[index].uv_layer = objekti.data.uv_textures.active.name + objekti.active_material.texture_slots[index].use_map_color_diffuse = False + objekti.active_material.texture_slots[index].use_map_specular = True + + if(bring_disp == 1 and texcoat['disp']): + name_tex ='Displacement_' + num = [] + + index = find_index(objekti) + + + tex = bpy.ops.Texture + objekti.active_material.texture_slots.create(index) + total_mat = len(objekti.active_material.texture_slots.items()) + useold = '' + + for seekco in bpy.data.textures: + if((seekco.name[:13] == 'Displacement_') and (seekco.users_material == ())): + useold = seekco + + + + + if(useold == ''): + + tex_name = setgallery() + + for num_tex in tex_name: + if(num_tex[:13] == 'Displacement_'): + num.append(num_tex) + luku_tex = len(num) + name_tex = ('Displacement_%s'%(luku_tex)) + + bpy.ops.image.new(name=name_tex) + bpy.data.images[name_tex].filepath = texcoat['disp'][0] + bpy.data.images[name_tex].source = 'FILE' + + + bpy.data.textures.new(name_tex,type='IMAGE') + objekti.active_material.texture_slots[index].texture = bpy.data.textures[name_tex] + objekti.active_material.texture_slots[index].texture.image = bpy.data.images[name_tex] + + if(objekti.data.uv_textures.active): + objekti.active_material.texture_slots[index].texture_coords = 'UV' + objekti.active_material.texture_slots[index].uv_layer = objekti.data.uv_textures.active.name + objekti.active_material.texture_slots[index].use_map_color_diffuse = False + objekti.active_material.texture_slots[index].use_map_displacement = True + + objekti.active_material.texture_slots[index].texture.image.reload() + + + elif(useold != ''): + + objekti.active_material.texture_slots[index].texture = useold + objekti.active_material.texture_slots[index].texture.image.filepath = texcoat['disp'][0] + if(objekti.data.uv_textures.active): + objekti.active_material.texture_slots[index].texture_coords = 'UV' + objekti.active_material.texture_slots[index].uv_layer = objekti.data.uv_textures.active.name + objekti.active_material.texture_slots[index].use_map_color_diffuse = False + objekti.active_material.texture_slots[index].use_map_displacement = True + + if(vray): + objekti.active_material.texture_slots[index].texture.use_interpolation = False + objekti.active_material.texture_slots[index].displacement_factor = 0.05 + + + else: + disp_modi = '' + for seek_modi in objekti.modifiers: + if(seek_modi.type == 'DISPLACE'): + disp_modi = seek_modi + break + if(disp_modi): + disp_modi.texture = objekti.active_material.texture_slots[index].texture + if(objekti.data.uv_textures.active): + disp_modi.texture_coords = 'UV' + disp_modi.uv_layer = objekti.data.uv_textures.active.name + else: + objekti.modifiers.new('Displace',type='DISPLACE') + objekti.modifiers['Displace'].texture = objekti.active_material.texture_slots[index].texture + if(objekti.data.uv_textures.active): + objekti.modifiers['Displace'].texture_coords = 'UV' + objekti.modifiers['Displace'].uv_layer = objekti.data.uv_textures.active.name + + return('FINISHED')