[Bf-extensions-cvs] [3486d0c1] master: add vertex colors support + rearrange texture update code

Kalle-Samuli Riihikoski noreply at git.blender.org
Fri Mar 1 23:12:29 CET 2019


Commit: 3486d0c1b26cb81e71f406069ebacfb1e458d12b
Author: Kalle-Samuli Riihikoski
Date:   Sat Mar 2 00:11:37 2019 +0200
Branches: master
https://developer.blender.org/rBA3486d0c1b26cb81e71f406069ebacfb1e458d12b

add vertex colors support + rearrange texture update code

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

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

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

diff --git a/io_coat3D/__init__.py b/io_coat3D/__init__.py
index c030a347..857fe337 100644
--- a/io_coat3D/__init__.py
+++ b/io_coat3D/__init__.py
@@ -215,8 +215,36 @@ def make_texture_list(texturefolder):
 
 def updatemesh(objekti, proxy):
 
+    # Vertex colors
+    if(len(proxy.data.vertex_colors) > 0):
+        bring_vertex_map = True
+    else:
+        bring_vertex_map = False
+
+    if(bring_vertex_map):
+        if(len(objekti.data.vertex_colors) > 0):
+            for vertex_map in objekti.data.vertex_colors:
+                if vertex_map.name == 'Col':
+                    copy_data = True
+                    vertex_map_copy = vertex_map
+                    break
+                else:
+                    copy_data = False
+        else:
+            copy_data = False
+
+        if(copy_data):
+            for poly in objekti.data.polygons:
+                for loop_index in poly.loop_indices:
+                    vertex_map_copy.data[loop_index].color = proxy.data.vertex_colors[0].data[loop_index].color
+        else:
+            objekti.data.vertex_colors.new()
+            vertex_map_copy = objekti.data.vertex_colors[-1]
+            for poly in objekti.data.polygons:
+                for loop_index in poly.loop_indices:
+                    vertex_map_copy.data[loop_index].color = proxy.data.vertex_colors[0].data[loop_index].color
 
-    # UV Set Copy
+    # UV -Sets
 
     proxy.select_set(True)
     objekti.select_set(True)
@@ -227,11 +255,14 @@ def updatemesh(objekti, proxy):
             objekti.data.uv_layers[0].data[indi].uv[1] = proxy.data.uv_layers[0].data[indi].uv[1]
 
 
-    #Mesh Copy
+    # Mesh Copy
 
     for ind, v in enumerate(objekti.data.vertices):
         v.co = proxy.data.vertices[ind].co
 
+
+
+
     '''
     proxy.select_set(True)
     obj_data = objekti.data.id_data
@@ -962,6 +993,7 @@ class SCENE_OT_import(bpy.types.Operator):
                     new_obj.scale = (1, 1, 1)
                     new_obj.coat3D.applink_firsttime = False
                     new_obj.select_set(False)
+                    new_obj.coat3D.type = 'import'
                     new_obj.coat3D.applink_address = new_applink_address
                     new_obj.coat3D.applink_mesh = True
                     new_obj.coat3D.objecttime = str(os.path.getmtime(new_obj.coat3D.applink_address))
diff --git a/io_coat3D/tex.py b/io_coat3D/tex.py
index cb0d2ec8..b28f27bb 100644
--- a/io_coat3D/tex.py
+++ b/io_coat3D/tex.py
@@ -74,6 +74,29 @@ def UVTiling(objekti, texturelist):
     return texturelist
 
 
+def updatetextures(objekti): # Update 3DC textures
+
+    for index_mat in objekti.material_slots:
+
+        for node in index_mat.material.node_tree.nodes:
+            if (node.type == 'TEX_IMAGE'):
+                if (node.name == '3DC_color'):
+                    node.image.reload()
+                elif (node.name == '3DC_metalness'):
+                    node.image.reload()
+                elif (node.name == '3DC_rough'):
+                    node.image.reload()
+                elif (node.name == '3DC_nmap'):
+                    node.image.reload()
+                elif (node.name == '3DC_displacement'):
+                    node.image.reload()
+                elif (node.name == '3DC_emissive'):
+                    node.image.reload()
+                elif (node.name == '3DC_AO'):
+                    node.image.reload()
+
+
+
 def readtexturefolder(objekti, mat_list, texturelist, is_new): #read textures from texture file
 
     create_nodes = False
@@ -413,7 +436,10 @@ def matlab(objekti,mat_list,texturelist,is_new):
         RemoveFbxNodes(objekti)
 
     '''Main Loop for Texture Update'''
+
     #checkmaterial(mat_list, objekti)
-    readtexturefolder(objekti,mat_list,texturelist,is_new)
+    updatetextures(objekti)
+    if(texturelist != []):
+        readtexturefolder(objekti,mat_list,texturelist,is_new)
 
     return('FINISHED')



More information about the Bf-extensions-cvs mailing list