Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKalle-Samuli Riihikoski <haikalle@gmail.com>2018-07-06 10:15:39 +0300
committerKalle-Samuli Riihikoski <haikalle@gmail.com>2018-07-06 10:15:39 +0300
commita650e83e3e96ff629ce395f3f38ea2edff67abd8 (patch)
tree3372decf244b7e0ac21e8c7a2bcff0d159f37096 /io_coat3D/tex.py
parent2a0d3baf6fd97bd997afd4df3b5c3fba0b56129a (diff)
blender 2.8 update
Diffstat (limited to 'io_coat3D/tex.py')
-rw-r--r--io_coat3D/tex.py139
1 files changed, 135 insertions, 4 deletions
diff --git a/io_coat3D/tex.py b/io_coat3D/tex.py
index f532177c..7c036275 100644
--- a/io_coat3D/tex.py
+++ b/io_coat3D/tex.py
@@ -19,8 +19,9 @@
import bpy
import os
-
+import re
def find_index(objekti):
+
luku = 0
for tex in objekti.active_material.texture_slots:
if(not(hasattr(tex,'texture'))):
@@ -28,10 +29,140 @@ def find_index(objekti):
luku = luku +1
return luku
-def gettex(mat_list, objekti, scene,export):
+def readtexturefolder(objekti,is_new): #read textures from texture file
+
+ coat3D = bpy.context.scene.coat3D
+ obj_coat = objekti.coat3D
+
+ texcoat = {}
+ texcoat['color'] = []
+ texcoat['metalness'] = []
+ texcoat['rough'] = []
+ texcoat['nmap'] = []
+ texcoat['disp'] = []
+
+ if(is_new == True):
+ files_dir = os.path.dirname(os.path.abspath(objekti.coat3D.applink_address))
+ else:
+ files_dir = os.path.dirname(os.path.abspath(objekti.coat3D.applink_address))
+ files_dir = files_dir.replace('3DC2Blender' + os.sep + 'Objects','3DC2Blender' + os.sep + 'Textures')
+ files = os.listdir(files_dir)
+ materiaali_muutos = objekti.active_material.name
+ uusin_mat = materiaali_muutos.replace('Material.','Material_')
+ for i in files:
+ if(i.startswith(obj_coat.applink_name + '_' + uusin_mat)):
+ koko_osoite = files_dir + os.sep + i
+ listed = re.split(r'[_.]', i)
+ tex_name = listed[-2]
+ texcoat[tex_name].append(koko_osoite)
+
+
+ createnodes(objekti, texcoat)
+
+def checkmaterial(mat_list, objekti): #check how many materials object has
+ mat_list = []
+
+ for obj_mate in objekti.material_slots:
+ if(obj_mate.material.use_nodes == False):
+ obj_mate.material.use_nodes = True
+
+def createnodes(objekti,texcoat): #luo nodes palikat ja linkittaa tekstuurit niihin
+ bring_color = True #naiden tarkoitus on tsekata onko tarvetta luoda uusi node vai riittaako paivitys
+ bring_metalness = True
+ bring_roughness = True
+ bring_normal = True
+ bring_disp = True
+
+ act_material = objekti.active_material
+ if(objekti.active_material.use_nodes == False):
+ objekti.active_material.use_nodes = True
+
+ #ensimmaiseksi kaydaan kaikki image nodet lapi ja tarkistetaan onko nimi 3DC alkunen jos on niin reload
+
+ for node in act_material.node_tree.nodes:
+ if(node.type == 'TEX_IMAGE'):
+ if(node.name == '3DC_color'):
+ bring_color = False
+ node.image.reload()
+ elif(node.name == '3DC_metalness'):
+ bring_metalness = False
+ node.image.reload()
+ elif(node.name == '3DC_roughness'):
+ bring_roughness = False
+ node.image.reload()
+ elif(node.name == '3DC_normal'):
+ bring_normal = False
+ node.image.reload()
+
+ #seuraavaksi lahdemme rakentamaan node tree. Lahdetaan Material Outputista rakentaa
+
+ main_mat = act_material.node_tree.nodes['Material Output']
+ if(main_mat.inputs['Surface'].is_linked == True):
+ glue_mat = main_mat.inputs['Surface'].links[0].from_node
+
+ #Color
+ if(bring_color == True and glue_mat.inputs.find('Base Color') != -1 and texcoat['color'] != []):
+ node = act_material.node_tree.nodes.new('ShaderNodeTexImage')
+ node.location = -400,400
+ node.name='3DC_color'
+ if(texcoat['color']):
+ node.image = bpy.data.images.load(texcoat['color'][0])
+ input_color = glue_mat.inputs.find('Base Color')
+ act_material.node_tree.links.new(node.outputs[0], glue_mat.inputs[input_color])
+
+ #Metalness
+ if(bring_metalness == True and glue_mat.inputs.find('Metallic') != -1 and texcoat['metalness'] != []):
+ node = act_material.node_tree.nodes.new('ShaderNodeTexImage')
+ node.location = -600,200
+ node.name='3DC_metalness'
+ if(texcoat['metalness']):
+ node.image = bpy.data.images.load(texcoat['metalness'][0])
+ node.color_space = 'NONE'
+ input_color = glue_mat.inputs.find('Metallic')
+ act_material.node_tree.links.new(node.outputs[0], glue_mat.inputs[input_color])
+
+ #Roughness
+ if(bring_roughness == True and glue_mat.inputs.find('Roughness') != -1 and texcoat['rough'] != []):
+ node = act_material.node_tree.nodes.new('ShaderNodeTexImage')
+ node.location = -550,0
+ node.name='3DC_roughness'
+ if(texcoat['rough']):
+ node.image = bpy.data.images.load(texcoat['rough'][0])
+ node.color_space = 'NONE'
+ input_color = glue_mat.inputs.find('Roughness')
+ act_material.node_tree.links.new(node.outputs[0], glue_mat.inputs[input_color])
+
+ #Normal map
+ if(bring_normal == True and glue_mat.inputs.find('Normal') != -1 and texcoat['nmap'] != []):
+ node = act_material.node_tree.nodes.new('ShaderNodeTexImage')
+ normal_node = act_material.node_tree.nodes.new('ShaderNodeNormalMap')
+ node.location = -600,-270
+ normal_node.location = -300,-170
+ node.name='3DC_normal'
+ if(texcoat['nmap']):
+ node.image = bpy.data.images.load(texcoat['nmap'][0])
+ node.color_space = 'NONE'
+ input_color = glue_mat.inputs.find('Normal')
+ act_material.node_tree.links.new(node.outputs[0], normal_node.inputs[1])
+ act_material.node_tree.links.new(normal_node.outputs[0], glue_mat.inputs[input_color])
+
+ bpy.ops.object.editmode_toggle() #HACKKI joka saa tekstuurit nakymaan heti
+ bpy.ops.object.editmode_toggle()
+
+
+
+def matlab(mat_list, objekti, scene,is_new):
+ #checkmaterial(mat_list, objekti)
+ readtexturefolder(objekti,is_new)
+
+
+ """
+ print('tassa tietoo')
+ print(mat_list,objekti,scene,export)
coat3D = bpy.context.scene.coat3D
coa = objekti.coat3D
+ print(coat3D,coa)
if(bpy.context.scene.render.engine == 'VRAY_RENDER' or bpy.context.scene.render.engine == 'VRAY_RENDER_PREVIEW'):
vray = True
@@ -47,7 +178,7 @@ def gettex(mat_list, objekti, scene,export):
bring_spec = 1
bring_normal = 1
bring_disp = 1
-
+
texcoat = {}
texcoat['color'] = []
texcoat['specular'] = []
@@ -331,5 +462,5 @@ def gettex(mat_list, objekti, scene,export):
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')