From 6ac405143184ff9f8e8114183a2d8f7b224d2779 Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Sun, 16 Jun 2019 13:15:32 +0300 Subject: [PATCH] Better checking of the existence of image filepath Apparently packed images can get funny filepaths like "//../../../../" in autosaves. Best to check only the basename so there won't be empty filenames in datafiles. --- blender/io_mspgl/export_material.py | 10 ++++++---- blender/io_mspgl/export_texture.py | 5 +++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/blender/io_mspgl/export_material.py b/blender/io_mspgl/export_material.py index 8619142e..336ca316 100644 --- a/blender/io_mspgl/export_material.py +++ b/blender/io_mspgl/export_material.py @@ -51,8 +51,9 @@ class MaterialExporter: st = Statement("inherit", material.technique) for s, t in textures.items(): - if t.default_filter and t.image.filepath: - st.sub.append(Statement("texture", s, os.path.basename(t.image.filepath))) + fn = os.path.basename(t.image.filepath) + if t.default_filter and fn: + st.sub.append(Statement("texture", s, fn)) else: st.sub.append(tech_res.create_reference_statement("texture", s, resources[t.name+".tex2d"])) if material.override_material: @@ -69,10 +70,11 @@ class MaterialExporter: diffuse_tex = textures["diffuse_map"] tex_res = resources[diffuse_tex.name+".tex2d"] ss = Statement("texunit", 0) + fn = os.path.basename(diffuse_tex.image.filepath) if self.single_file: ss.sub.append(tech_res.create_embed_statement("texture2d", tex_res)) - elif diffuse_tex.default_filter and diffuse_tex.image.filepath: - ss.sub.append(Statement("texture", os.path.basename(diffuse_tex.image.filepath))) + elif diffuse_tex.default_filter and fn: + ss.sub.append(Statement("texture", fn)) else: ss.sub.append(tech_res.create_reference_statement("texture", tex_res)) st.sub.append(ss) diff --git a/blender/io_mspgl/export_texture.py b/blender/io_mspgl/export_texture.py index 9f520cbd..dd8191ce 100644 --- a/blender/io_mspgl/export_texture.py +++ b/blender/io_mspgl/export_texture.py @@ -22,8 +22,9 @@ class TextureExporter: else: tex_res.statements.append(Statement("filter", Token('NEAREST'))) - if not self.inline_data and texture.image.filepath: - tex_res.statements.append(Statement("external_image", os.path.basename(texture.image.filepath))) + fn = os.path.basename(texture.image.filepath) + if not self.inline_data and fn: + tex_res.statements.append(Statement("external_image", fn)) else: texdata = "" colorspace = texture.image.colorspace_settings.name -- 2.45.2