[Bf-extensions-cvs] [6f1fed19] master: io_coat3D: Improve udim workflow

Samuli Riihikoski noreply at git.blender.org
Mon Sep 14 17:45:49 CEST 2020


Commit: 6f1fed19af91ce42ad43640703ad34786e299460
Author: Samuli Riihikoski
Date:   Mon Sep 14 18:45:43 2020 +0300
Branches: master
https://developer.blender.org/rBA6f1fed19af91ce42ad43640703ad34786e299460

io_coat3D: Improve udim workflow

===================================================================

M	io_coat3D/__init__.py
M	io_coat3D/tex.py

===================================================================

diff --git a/io_coat3D/__init__.py b/io_coat3D/__init__.py
index 574d9869..5b6006e8 100644
--- a/io_coat3D/__init__.py
+++ b/io_coat3D/__init__.py
@@ -140,7 +140,7 @@ def set_exchange_folder():
                 file.write("%s"%(coat3D.exchangedir))
                 file.close()
                 exchange = coat3D.exchangedir
-
+            
             else:
                 exchange = source
 
@@ -293,16 +293,18 @@ def updatemesh(objekti, proxy, texturelist):
                     if(udim_textures):
                         udim = proxy.data.uv_layers[index].name
                         udim_index = int(udim[2:]) - 1
-
+    
                     objekti.data.uv_layers[0].data[indi].uv[0] = proxy.data.uv_layers[index].data[indi].uv[0]
                     objekti.data.uv_layers[0].data[indi].uv[1] = proxy.data.uv_layers[index].data[indi].uv[1]
-
+            
         index = index + 1
 
     # Mesh Copy
     if(proxy.name.startswith('RetopoGroup')):
         objekti.data = proxy.data
     else:
+        print('objekti: ' + str(len(objekti.data.vertices)))
+        print('proxy: ' + str(len(proxy.data.vertices)))
         for ind, v in enumerate(objekti.data.vertices):
             v.co = proxy.data.vertices[ind].co
 
@@ -313,11 +315,11 @@ class SCENE_OT_getback(bpy.types.Operator):
     bl_options = {'UNDO'}
 
     def invoke(self, context, event):
-
+        
         global global_exchange_folder
         global initial_settings
         path_ex = ''
-
+        
         if(initial_settings):
             global_exchange_folder = set_exchange_folder()
             initial_settings = False
@@ -327,29 +329,29 @@ class SCENE_OT_getback(bpy.types.Operator):
 
         BlenderFolder = Blender_folder
         ExportFolder = Export_folder
-
+        
         Blender_folder += ('%sexport.txt' % (os.sep))
         Export_folder += ('%sexport.txt' % (os.sep))
-
+        
         if (bpy.app.background == False):
             if os.path.isfile(Export_folder):
 
                 print('BLENDER -> 3DC -> BLENDER WORKFLLOW')
-                DeleteExtra3DC()
+                DeleteExtra3DC() 
                 workflow1(ExportFolder)
                 removeFile(Export_folder)
-                removeFile(Blender_folder)
-
-
-
+                removeFile(Blender_folder)    
+                
+            
+            
             elif os.path.isfile(Blender_folder):
 
                 print('3DC -> BLENDER WORKFLLOW')
-                DeleteExtra3DC()
+                DeleteExtra3DC() 
                 workflow2(BlenderFolder)
                 removeFile(Blender_folder)
-
-
+        
+    
 
         return {'FINISHED'}
 
@@ -577,7 +579,7 @@ class SCENE_OT_export(bpy.types.Operator):
 
     def invoke(self, context, event):
         bpy.ops.export_applink.pilgway_3d_coat()
-
+      
         return {'FINISHED'}
 
     def execute(self, context):
@@ -827,11 +829,12 @@ class SCENE_OT_export(bpy.types.Operator):
                                     if(node.name.startswith('3DC_') == True):
                                         material.material.node_tree.nodes.remove(node)
 
+        
                 for ind, mat_list in enumerate(mod_mat_list):
                     if(mat_list == '__' + objekti.name):
                         for ind, mat in enumerate(mod_mat_list[mat_list]):
                             objekti.material_slots[mod_mat_list[mat_list][ind][0]].material = mod_mat_list[mat_list][ind][1]
-
+            
         bpy.context.scene.render.engine = active_render
         return {'FINISHED'}
 
@@ -858,7 +861,7 @@ def DeleteExtra3DC():
                     bpy.data.images.remove(del_img)
 
             bpy.data.materials.remove(material)
-
+    
     image_del_list = []
     for image in bpy.data.images:
         if (image.name.startswith('3DC')):
@@ -937,7 +940,7 @@ def new_ref_function(new_applink_address, nimi):
 
 
 def blender_3DC_blender(texturelist):
-
+    
     coat3D = bpy.context.scene.coat3D
 
     old_materials = bpy.data.materials.keys()
@@ -1089,7 +1092,7 @@ def blender_3DC_blender(texturelist):
 
                         #delete_materials_from_end(keep_materials_count, obj_proxy)
 
-
+               
                         updatemesh(objekti,obj_proxy, texturelist)
                         bpy.context.view_layer.objects.active = objekti
 
@@ -1216,7 +1219,7 @@ def blender_3DC(texturelist, new_applink_address):
 
     old_materials = bpy.data.materials.keys()
     old_objects = bpy.data.objects.keys()
-
+  
     bpy.ops.import_scene.fbx(filepath=new_applink_address, global_scale = 1, axis_forward='-Z', axis_up='Y')
 
     new_materials = bpy.data.materials.keys()
@@ -1291,7 +1294,7 @@ def blender_3DC(texturelist, new_applink_address):
         os.remove(Blender_export)
     if (os.path.isfile(Blender_folder2)):
         os.remove(Blender_folder2)
-
+        
     for material in bpy.data.materials:
         if material.use_nodes == True:
             for node in material.node_tree.nodes:
@@ -1312,9 +1315,9 @@ def workflow1(ExportFolder):
         for image in bpy.data.images:
             if(image.filepath == texturepath[3] and image.users == 0):
                 bpy.data.images.remove(image)
-
+    
     path3b_now = coat3D.exchangedir
-
+    
     path3b_now += ('last_saved_3b_file.txt')
     new_applink_address = 'False'
     new_object = False
@@ -1338,7 +1341,7 @@ def workflow1(ExportFolder):
                     new_ref_object = True
                     nimi = scene_objects.name
 
-
+    
 
 
     exportfile = coat3D.exchangedir
@@ -1371,9 +1374,9 @@ def workflow2(BlenderFolder):
     kokeilu = coat3D.exchangedir
 
     Blender_export = os.path.join(kokeilu, 'Blender')
-
+    
     path3b_now = coat3D.exchangedir
-
+    
     path3b_now += ('last_saved_3b_file.txt')
     Blender_export += ('%sexport.txt'%(os.sep))
     new_applink_address = 'False'
@@ -2061,7 +2064,7 @@ def register():
     bpy.types.Object.coat3D = PointerProperty(type=ObjectCoat3D)
     bpy.types.Scene.coat3D = PointerProperty(type=SceneCoat3D)
     bpy.types.Mesh.coat3D = PointerProperty(type=MeshCoat3D)
-    bpy.types.Material.coat3D = PointerProperty(type=MaterialCoat3D)
+    bpy.types.Material.coat3D = PointerProperty(type=MaterialCoat3D)  
 
     kc = bpy.context.window_manager.keyconfigs.addon
 
diff --git a/io_coat3D/tex.py b/io_coat3D/tex.py
index 21fa92b3..2a2fbd9a 100644
--- a/io_coat3D/tex.py
+++ b/io_coat3D/tex.py
@@ -128,26 +128,26 @@ def updatetextures(objekti): # Update 3DC textures
 
 def testi(objekti, texture_info, index_mat_name, uv_MODE_mat, mat_index):
     if uv_MODE_mat == 'UV':
-
+        
         uv_set_founded = False
         for uvset in objekti.data.uv_layers:
-
+          
             if(uvset.name == texture_info):
                 uv_set_founded = True
-
+               
                 break
-
+            
         if(uv_set_founded):
             for uv_poly in objekti.data.uv_layers[texture_info].id_data.polygons:
                 if(mat_index == uv_poly.material_index):
                     return True
         else:
             return False
-
+            
     elif uv_MODE_mat == 'MAT':
         return (texture_info == index_mat_name)
 
-def readtexturefolder(objekti, mat_list, texturelist, is_new, udim_textures): #read textures from texture file
+def readtexturefolder(objekti, mat_list, texturelist, is_new, udim_textures, udim_len): #read textures from texture file
 
     # Let's check are we UVSet or MATERIAL modee
     create_nodes = False
@@ -168,17 +168,17 @@ def readtexturefolder(objekti, mat_list, texturelist, is_new, udim_textures): #r
         if(udim_textures == False):
             for slot_index, texture_info in enumerate(texturelist):
 
-                uv_MODE_mat = 'MAT'
+                uv_MODE_mat = 'MAT' 
                 for index, layer in enumerate(objekti.data.uv_layers):
                     if(layer.name == texturelist[slot_index][0]):
                         uv_MODE_mat = 'UV'
                         break
 
-
+                
                 if(testi(objekti, texturelist[slot_index][0], index_mat.name, uv_MODE_mat, ind)) :
                     if texture_info[2] == 'color' or texture_info[2] == 'diffuse':
                         if(index_mat.material.coat3D_diffuse):
-
+                            
                             texcoat['color'].append(texture_info[3])
                             create_nodes = True
                         else:
@@ -241,7 +241,7 @@ def readtexturefolder(objekti, mat_list, texturelist, is_new, udim_textures): #r
                             os.remove(texture_info[3])
 
                     create_group_node = True
-
+              
 
         else:
             for texture_info in texturelist:
@@ -297,9 +297,9 @@ def readtexturefolder(objekti, mat_list, texturelist, is_new, udim_textures): #r
                     objekti.coat3D.applink_3b_path = line
                 export_file.close()
                 coat3D.remove_path = True
-            createnodes(index_mat, texcoat, create_group_node, objekti, ind, is_new, udim_textures)
+            createnodes(index_mat, texcoat, create_group_node, objekti, ind, is_new, udim_textures, udim_len)
 
-def createnodes(active_mat,texcoat, create_group_node, objekti, ind, is_new, udim_textures): # Creates new nodes and link textures into them
+def createnodes(active_mat,texcoat, create_group_node, objekti, ind, is_new, udim_textures, udim_len): # Creates new nodes and link textures into them
     bring_color = True # Meaning of these is to check if we can only update textures or do we need to create new nodes
     bring_metalness = True
     bring_roughness = True
@@ -444,33 +444,33 @@ def createnodes(active_mat,texcoat, create_group_node, objekti, ind, is_new, udi
         if(out_mat.inputs['Surface'].is_linked == True):
             if(bring_color == True and texcoat['color'] != []):
                 CreateTextureLine(data['color'], act_material, main_mat, texcoat, coat3D, notegroup,
-                                  main_material, applink_tree, out_mat, coatMat, objekti, ind, is_new, udim_textures)
+                                  main_material, applink_tree, out_mat, coatMat, objekti, ind, is_new, udim_tex

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list