diff options
author | Campbell Barton <ideasman42@gmail.com> | 2016-03-29 11:03:31 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2016-03-29 11:09:45 +0300 |
commit | e42f47d181a4d725b95200fd33d873fc85be6704 (patch) | |
tree | a3439e6f126c96faaf9c7b7a700b4afe962f9342 | |
parent | 17103db8521357628f56c85d60a32b2f23b56cda (diff) |
OBJ Import: prevent loading an image many times
When an MTL made multiple references to the same image,
it would create a new data-block for each reference.
-rw-r--r-- | io_scene_obj/import_obj.py | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/io_scene_obj/import_obj.py b/io_scene_obj/import_obj.py index 2028a1ca..b0889d15 100644 --- a/io_scene_obj/import_obj.py +++ b/io_scene_obj/import_obj.py @@ -81,6 +81,9 @@ def create_materials(filepath, relpath, DIR = os.path.dirname(filepath) context_material_vars = set() + # Don't load the same image multiple times + context_imagepath_map = {} + def load_material_image(blender_material, context_material_name, img_data, type): """ Set textures defined in .mtl file. @@ -99,7 +102,10 @@ def create_materials(filepath, relpath, texture = bpy.data.textures.new(name=type, type='IMAGE') # Absolute path - c:\.. etc would work here - image = obj_image_load(imagepath, DIR, use_image_search, relpath) + image = context_imagepath_map.get(imagepath, ...) + if image == ...: + image = context_imagepath_map[imagepath] = \ + obj_image_load(imagepath, DIR, use_image_search, relpath) if image is not None: texture.image = image |