From a501de8e34533de5c66b5db9973ca5ab6c8f0230 Mon Sep 17 00:00:00 2001 From: Mikhail Rachinskiy <mikhail.rachinskiy@gmail.com> Date: Thu, 17 Oct 2019 17:25:55 +0400 Subject: [PATCH] 3D-Print: fix Copy Textures for STL and PLY export --- object_print3d_utils/export.py | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/object_print3d_utils/export.py b/object_print3d_utils/export.py index 8c61400fe..2503c2f5d 100644 --- a/object_print3d_utils/export.py +++ b/object_print3d_utils/export.py @@ -24,19 +24,35 @@ import bpy +def image_get(mat): + from bpy_extras import node_shader_utils + + if mat.use_nodes: + mat_wrap = node_shader_utils.PrincipledBSDFWrapper(mat) + base_color_tex = mat_wrap.base_color_texture + if base_color_tex and base_color_tex.image: + return base_color_tex.image + + def image_copy_guess(filepath, objects): # 'filepath' is the path we are writing to. - import os - import shutil - from bpy_extras import object_utils - image = None + mats = set() + for obj in objects: - image = object_utils.object_image_guess(obj) + for slot in obj.material_slots: + if slot.material: + mats.add(slot.material) + + for mat in mats: + image = image_get(mat) if image is not None: break if image is not None: + import os + import shutil + imagepath = bpy.path.abspath(image.filepath, library=image.library) if os.path.exists(imagepath): filepath_noext = os.path.splitext(filepath)[0] -- GitLab