updating the script to work the latest 2.8

This commit is contained in:
Kalle-Samuli Riihikoski 2018-07-21 04:22:24 +03:00
parent 9ca218bf42
commit c87ee4d46f
Notes: blender-bot 2023-02-14 18:07:26 +01:00
Referenced by commit 6c3a46dc: Revert "updating the script to work the latest 2.8"
Referenced by commit 6c3a46dc, Revert "updating the script to work the latest 2.8"
3 changed files with 975 additions and 857 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,626 +0,0 @@
# ***** BEGIN GPL LICENSE BLOCK *****
#
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# 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
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# ***** END GPL LICENCE BLOCK *****
import bpy
from bpy.props import *
from io_coat3D import tex
import os
bpy.coat3D = dict()
bpy.coat3D['active_coat'] = ''
bpy.coat3D['status'] = 0
def set_exchange_folder():
platform = os.sys.platform
coat3D = bpy.context.scene.coat3D
Blender_export = ""
if(platform == 'win32'):
exchange = os.path.expanduser("~") + os.sep + 'Documents' + os.sep + '3D-CoatV4' + os.sep +'Exchange'
if not(os.path.isdir(exchange)):
exchange = os.path.expanduser("~") + os.sep + 'Documents' + os.sep + '3D-CoatV3' + os.sep +'Exchange'
else:
exchange = os.path.expanduser("~") + os.sep + '3D-CoatV4' + os.sep + 'Exchange'
if not(os.path.isdir(exchange)):
exchange = os.path.expanduser("~") + os.sep + '3D-CoatV3' + os.sep + 'Exchange'
if(not(os.path.isdir(exchange))):
exchange = coat3D.exchangedir
if(os.path.isdir(exchange)):
bpy.coat3D['status'] = 1
if(platform == 'win32'):
exchange_path = os.path.expanduser("~") + os.sep + 'Documents' + os.sep + '3DC2Blender' + os.sep + 'Exchange_folder.txt'
applink_folder = os.path.expanduser("~") + os.sep + 'Documents' + os.sep + '3DC2Blender'
if(not(os.path.isdir(applink_folder))):
os.makedirs(applink_folder)
else:
exchange_path = os.path.expanduser("~") + os.sep + 'Documents' + os.sep + '3DC2Blender' + os.sep + 'Exchange_folder.txt'
applink_folder = os.path.expanduser("~") + os.sep + 'Documents' + os.sep + '3DC2Blender'
if(not(os.path.isdir(applink_folder))):
os.makedirs(applink_folder)
file = open(exchange_path, "w")
file.write("%s"%(coat3D.exchangedir))
file.close()
else:
if(platform == 'win32'):
exchange_path = os.path.expanduser("~") + os.sep + 'Documents' + os.sep + '3DC2Blender' + os.sep + 'Exchange_folder.txt'
else:
exchange_path = os.path.expanduser("~") + os.sep + '3DC2Blender' + os.sep + 'Exchange_folder.txt'
if(os.path.isfile(exchange_path)):
ex_path =''
ex_pathh = open(exchange_path)
for line in ex_pathh:
ex_path = line
break
ex_pathh.close()
if(os.path.isdir(ex_path) and ex_path.rfind('Exchange') >= 0):
exchange = ex_path
bpy.coat3D['status'] = 1
else:
bpy.coat3D['status'] = 0
else:
bpy.coat3D['status'] = 0
if(bpy.coat3D['status'] == 1):
Blender_folder = ("%s%sBlender"%(exchange,os.sep))
Blender_export = Blender_folder
path3b_now = exchange
path3b_now += ('last_saved_3b_file.txt')
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()
return exchange
def set_working_folders():
platform = os.sys.platform
coat3D = bpy.context.scene.coat3D
if(platform == 'win32'):
folder_objects = os.path.expanduser("~") + os.sep + 'Documents' + os.sep + '3DC2Blender' + os.sep + 'Objects'
folder_textures = os.path.expanduser("~") + os.sep + 'Documents' + os.sep + '3DC2Blender' + os.sep + 'Textures' + os.sep
if(not(os.path.isdir(folder_objects))):
os.makedirs(folder_objects)
if(not(os.path.isdir(folder_textures))):
os.makedirs(folder_textures)
else:
folder_objects = os.path.expanduser("~") + os.sep + '3DC2Blender' + os.sep + 'Objects'
folder_textures = os.path.expanduser("~") + os.sep + '3DC2Blender' + os.sep + 'Textures' + os.sep
if(not(os.path.isdir(folder_objects))):
os.makedirs(folder_objects)
if(not(os.path.isdir(folder_textures))):
os.makedirs(folder_textures)
return folder_objects,folder_textures
class ObjectButtonsPanel():
bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW'
bl_context = "object"
class SCENE_PT_Main(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(bpy.context.scene.objects.active):
coa = bpy.context.scene.objects.active.coat3D
if(bpy.coat3D['status'] == 0 and not(os.path.isdir(coat3D.exchangedir))):
bpy.coat3D['active_coat'] = set_exchange_folder()
row = layout.row()
row.label(text="Applink didn't find your 3d-Coat/Excahnge folder.")
row = layout.row()
row.label("Please select it before using Applink.")
row = layout.row()
row.prop(coat3D,"exchangedir",text="")
else:
#Here you add your GUI
row = layout.row()
row.prop(coat3D,"type",text = "")
row = layout.row()
colL = row.column()
colR = row.column()
colR.operator("export_applink.pilgway_3d_coat", text="Transfer")
colL.operator("import_applink.pilgway_3d_coat", text="Update")
class SCENE_OT_export(bpy.types.Operator):
bl_idname = "export_applink.pilgway_3d_coat"
bl_label = "Export your custom property"
bl_description = "Export your custom property"
bl_options = {'UNDO'}
def invoke(self, context, event):
checkname = ''
coat3D = bpy.context.scene.coat3D
scene = context.scene
activeobj = bpy.context.active_object.name
obj = scene.objects[activeobj]
coa = bpy.context.scene.objects.active.coat3D
coat3D.exchangedir = set_exchange_folder()
export_ok = False
folder_objects,folder_textures = set_working_folders()
if(coat3D.exchange_found == False):
return {'FINISHED'}
if(bpy.context.selected_objects == []):
return {'FINISHED'}
else:
for objec in bpy.context.selected_objects:
if objec.type == 'MESH':
export_ok = True
if(export_ok == False):
return {'FINISHED'}
importfile = coat3D.exchangedir
texturefile = coat3D.exchangedir
importfile += ('%simport.txt'%(os.sep))
texturefile += ('%stextures.txt'%(os.sep))
looking = True
object_index = 0
if(coa.applink_name and os.path.isfile(coa.applink_name)):
checkname = coa.applink_name
else:
while(looking == True):
checkname = folder_objects + os.sep + activeobj
checkname = ("%s%.2d.obj"%(checkname,object_index))
if(os.path.isfile(checkname)):
object_index += 1
else:
looking = False
coa.applink_name = checkname
coat3D.cursor_loc = obj.location
coat3D.cursor_orginal = bpy.context.scene.cursor_location
coa.loc = obj.location
coa.rot = obj.rotation_euler
coa.sca = obj.scale
coa.dime = obj.dimensions
obj.location = (0,0,0)
obj.rotation_euler = (0,0,0)
bpy.ops.object.transform_apply(scale=True)
bpy.ops.export_scene.obj(filepath=coa.applink_name,use_selection=True,
use_mesh_modifiers=False,use_blen_objects=True, use_materials = True,
keep_vertex_order = True,axis_forward='-Z',axis_up='Y')
obj.location = coa.loc
obj.rotation_euler = coa.rot
bpy.context.scene.cursor_location = coat3D.cursor_loc
bpy.context.scene.cursor_location = coat3D.cursor_orginal
file = open(importfile, "w")
file.write("%s"%(checkname))
file.write("\n%s"%(checkname))
file.write("\n[%s]"%(coat3D.type))
file.write("\n[TexOutput:%s]"%(folder_textures))
file.close()
coa.objecttime = str(os.path.getmtime(coa.applink_name))
return {'FINISHED'}
class SCENE_OT_import(bpy.types.Operator):
bl_idname = "import_applink.pilgway_3d_coat"
bl_label = "import your custom property"
bl_description = "import your custom property"
bl_options = {'UNDO'}
def invoke(self, context, event):
scene = context.scene
coat3D = bpy.context.scene.coat3D
coat = bpy.coat3D
test = bpy.context.selected_objects
act_first = bpy.context.scene.objects.active
bpy.context.scene.game_settings.material_mode = 'GLSL'
coat3D.exchangedir = set_exchange_folder()
folder_objects,folder_textures = set_working_folders()
Blender_folder = ("%s%sBlender"%(coat3D.exchangedir,os.sep))
Blender_export = Blender_folder
path3b_now = coat3D.exchangedir
path3b_now += ('last_saved_3b_file.txt')
Blender_export += ('%sexport.txt'%(os.sep))
new_applink_name = 'False'
new_object = False
if(os.path.isfile(Blender_export)):
obj_pathh = open(Blender_export)
new_object = True
for line in obj_pathh:
new_applink_name = line
break
obj_pathh.close()
for scene_objects in bpy.context.scene.objects:
if(scene_objects.type == 'MESH'):
if(scene_objects.coat3D.applink_name == new_applink_name):
new_object = False
for act_name in test:
coa = act_name.coat3D
path_object = coa.applink_name
if act_name.type == 'MESH' and os.path.isfile(path_object):
multires_on = False
activeobj = act_name.name
mat_list = []
scene.objects[activeobj].select = True
objekti = scene.objects[activeobj]
coat3D.loca = objekti.location
coat3D.rota = objekti.rotation_euler
coat3D.dime = objekti.scale
#See if there is multres modifier.
for modifiers in objekti.modifiers:
if modifiers.type == 'MULTIRES' and (modifiers.total_levels > 0):
if(not(coat3D.importlevel)):
bpy.ops.object.multires_external_pack()
multires = coat3D.exchangedir
multires += ('%stemp.btx'%(os.sep))
bpy.ops.object.multires_external_save(filepath=multires)
#bpy.ops.object.multires_external_pack()
multires_on = True
multires_name = modifiers.name
break
exportfile = coat3D.exchangedir
path3b_n = coat3D.exchangedir
path3b_n += ('last_saved_3b_file.txt')
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(len(objekti.material_slots) == 0):
delete_material = False
else:
delete_material = True
if(not(objekti.active_material) and objekti.material_slots):
act_mat_index = objekti.active_material_index
materials_old = bpy.data.materials.keys()
bpy.ops.material.new()
materials_new = bpy.data.materials.keys()
new_ma = list(set(materials_new).difference(set(materials_old)))
new_mat = new_ma[0]
ki = bpy.data.materials[new_mat]
objekti.material_slots[act_mat_index].material = ki
if(os.path.isfile(path_object) and (coa.objecttime != str(os.path.getmtime(path_object)))):
if(objekti.material_slots):
act_mat_index = objekti.active_material_index
for obj_mat in objekti.material_slots:
mat_list.append(obj_mat.material)
coa.dime = objekti.dimensions
coa.objecttime = str(os.path.getmtime(path_object))
mtl = coa.applink_name
mtl = mtl.replace('.obj','.mtl')
if(os.path.isfile(mtl)):
os.remove(mtl)
bpy.ops.import_scene.obj(filepath=path_object,axis_forward='-Z',axis_up='Y',use_image_search=False)
obj_proxy = scene.objects[0]
bpy.ops.object.select_all(action='TOGGLE')
obj_proxy.select = True
bpy.ops.object.transform_apply(rotation=True)
proxy_mat = obj_proxy.material_slots[0].material
if(delete_material):
while(list(obj_proxy.data.materials) != []):
proxy_mat = obj_proxy.material_slots[0].material
obj_proxy.data.materials.pop(0,1)
proxy_mat.user_clear()
bpy.data.materials.remove(proxy_mat)
bpy.ops.object.select_all(action='TOGGLE')
if(coat3D.importlevel):
obj_proxy.select = True
obj_proxy.modifiers.new(name='temp',type='MULTIRES')
objekti.select = True
bpy.ops.object.multires_reshape(modifier=multires_name)
bpy.ops.object.select_all(action='TOGGLE')
multires_on = False
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):
objekti.data.id_data.name = obj_data.name
bpy.data.meshes.remove(obj_data)
obj_proxy.select = True
bpy.ops.object.delete()
objekti.select = True
objekti.scale = coat3D.dime
bpy.context.scene.objects.active = objekti
if(os.path.isfile(path3b_n)):
path3b_fil = open(path3b_n)
for lin in path3b_fil:
objekti.coat3D.path3b = lin
path3b_fil.close()
os.remove(path3b_n)
if(coat3D.importmesh and not(os.path.isfile(path_object))):
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:
if(hasattr(obj_mate.material,'texture_slots')):
for tex_slot in obj_mate.material.texture_slots:
if(hasattr(tex_slot,'texture')):
if(tex_slot.texture.type == 'IMAGE'):
if tex_slot.texture.image is not None:
tex_slot.texture.image.reload()
if(coat3D.importtextures):
export = ''
tex.gettex(mat_list,objekti,scene,export)
if(multires_on):
temp_file = coat3D.exchangedir
temp_file += ('%stemp2.btx'%(os.sep))
if(objekti.modifiers[multires_name].levels == 0):
objekti.modifiers[multires_name].levels = 1
bpy.ops.object.multires_external_save(filepath=temp_file)
objekti.modifiers[multires_name].filepath = multires
objekti.modifiers[multires_name].levels = 0
else:
bpy.ops.object.multires_external_save(filepath=temp_file)
objekti.modifiers[multires_name].filepath = multires
#bpy.ops.object.multires_external_pack()
bpy.ops.object.shade_smooth()
for act_name in test:
act_name.select = True
bpy.context.scene.objects.active = act_first
if(new_object == True):
coat3D = bpy.context.scene.coat3D
scene = context.scene
Blender_folder = ("%s%sBlender"%(coat3D.exchangedir,os.sep))
Blender_export = Blender_folder
path3b_now = coat3D.exchangedir
path3b_now += ('last_saved_3b_file.txt')
Blender_export += ('%sexport.txt'%(os.sep))
mat_list = []
obj_path =''
export = new_applink_name
mod_time = os.path.getmtime(new_applink_name)
mtl_list = new_applink_name.replace('.obj','.mtl')
if(os.path.isfile(mtl_list)):
os.remove(mtl_list)
bpy.ops.import_scene.obj(filepath=new_applink_name,axis_forward='-Z',axis_up='Y')
bpy.ops.object.transform_apply(rotation=True)
new_obj = scene.objects[0]
new_obj.coat3D.applink_name = obj_path
scene.objects[0].coat3D.applink_name = export #objectdir muutettava
os.remove(Blender_export)
bpy.context.scene.objects.active = new_obj
bpy.ops.object.shade_smooth()
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)
return {'FINISHED'}
from bpy import *
from mathutils import Vector, Matrix
# 3D-Coat Dynamic Menu
class VIEW3D_MT_Coat_Dynamic_Menu(bpy.types.Menu):
bl_label = "3D-Coat Applink Menu"
def draw(self, context):
layout = self.layout
settings = context.tool_settings
layout.operator_context = 'INVOKE_REGION_WIN'
coat3D = bpy.context.scene.coat3D
Blender_folder = ("%s%sBlender"%(coat3D.exchangedir,os.sep))
Blender_export = Blender_folder
Blender_export += ('%sexport.txt'%(os.sep))
ob = context
if ob.mode == 'OBJECT':
if(bpy.context.selected_objects):
for ind_obj in bpy.context.selected_objects:
if(ind_obj.type == 'MESH'):
layout.active = True
break
layout.active = False
if(layout.active == True):
layout.operator("import_applink.pilgway_3d_coat", text="Import")
layout.separator()
layout.operator("export_applink.pilgway_3d_coat", text="Export")
layout.separator()
layout.menu("VIEW3D_MT_ImportMenu")
layout.separator()
layout.menu("VIEW3D_MT_ExportMenu")
layout.separator()
layout.menu("VIEW3D_MT_ExtraMenu")
layout.separator()
if(len(bpy.context.selected_objects) == 1):
if(os.path.isfile(bpy.context.selected_objects[0].coat3D.path3b)):
layout.operator("import_applink.pilgway_3d_coat_3b", text="Load 3b")
layout.separator()
if(os.path.isfile(Blender_export)):
layout.operator("import3b_applink.pilgway_3d_coat", text="Bring from 3D-Coat")
layout.separator()
else:
if(os.path.isfile(Blender_export)):
layout.active = True
layout.operator("import3b_applink.pilgway_3d_coat", text="Bring from 3D-Coat")
layout.separator()
else:
if(os.path.isfile(Blender_export)):
layout.operator("import3b_applink.pilgway_3d_coat", text="Bring from 3D-Coat")
layout.separator()
class VIEW3D_MT_ImportMenu(bpy.types.Menu):
bl_label = "Import Settings"
def draw(self, context):
layout = self.layout
coat3D = bpy.context.scene.coat3D
settings = context.tool_settings
layout.operator_context = 'INVOKE_REGION_WIN'
layout.prop(coat3D,"importmesh")
layout.prop(coat3D,"importmod")
layout.prop(coat3D,"smooth_on")
layout.prop(coat3D,"importtextures")
class VIEW3D_MT_ExportMenu(bpy.types.Menu):
bl_label = "Export Settings"
def draw(self, context):
layout = self.layout
coat3D = bpy.context.scene.coat3D
settings = context.tool_settings
layout.operator_context = 'INVOKE_REGION_WIN'
layout.prop(coat3D,"exportover")
if(coat3D.exportover):
layout.prop(coat3D,"exportmod")
class VIEW3D_MT_ExtraMenu(bpy.types.Menu):
bl_label = "Extra"
def draw(self, context):
layout = self.layout
coat3D = bpy.context.scene.coat3D
settings = context.tool_settings
layout.operator_context = 'INVOKE_REGION_WIN'
layout.operator("import_applink.pilgway_3d_deltex",text="Delete all Textures")
layout.separator()
def register():
bpy.utils.register_module(__name__)
kc = bpy.context.window_manager.keyconfigs.addon
if kc:
km = kc.keymaps.new(name='3D View', space_type='VIEW_3D')
kmi = km.keymap_items.new('wm.call_menu2', 'Q', 'PRESS')
kmi.properties.name = "VIEW3D_MT_Coat_Dynamic_Menu"
def unregister():
bpy.utils.unregister_module(__name__)
kc = bpy.context.window_manager.keyconfigs.addon
if kc:
km = kc.keymapskeymaps['3D View']
for kmi in km.keymap_items:
if kmi.idname == '':
if kmi.properties.name == "VIEW3D_MT_Coat_Dynamic_Menu":
km.keymap_items.remove(kmi)
break
if __name__ == "__main__":
register()

View File

@ -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,143 @@ 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:
if(bpy.data.filepath == ''):
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')
else:
files_dir = os.path.dirname(bpy.data.filepath) + os.sep + '3DCApplink' + 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 +181,7 @@ def gettex(mat_list, objekti, scene,export):
bring_spec = 1
bring_normal = 1
bring_disp = 1
texcoat = {}
texcoat['color'] = []
texcoat['specular'] = []
@ -331,5 +465,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')