diff options
author | Kalle-Samuli Riihikoski <haikalle@gmail.com> | 2019-03-02 01:11:37 +0300 |
---|---|---|
committer | Kalle-Samuli Riihikoski <haikalle@gmail.com> | 2019-03-02 01:11:37 +0300 |
commit | 3486d0c1b26cb81e71f406069ebacfb1e458d12b (patch) | |
tree | eef9954e59cf1169b95e9ecb5c3bb7542f1cc74f /io_coat3D | |
parent | 57ec6828de00ca17a7aa581420929fe85fb0f170 (diff) |
add vertex colors support + rearrange texture update code
Diffstat (limited to 'io_coat3D')
-rw-r--r-- | io_coat3D/__init__.py | 36 | ||||
-rw-r--r-- | io_coat3D/tex.py | 28 |
2 files changed, 61 insertions, 3 deletions
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') |