From 8c59b93505b3066c3fd8aac121d08395eb197307 Mon Sep 17 00:00:00 2001 From: Aras Pranckevicius Date: Wed, 10 Aug 2022 18:03:27 +0300 Subject: obj: Also find .mtl images by their basename, if all else fails (T77801) While T77801 itself is working as expected in the new C++ obj importer, the repro file there uses absolute paths to material images, yet the images themselves are right there in the current folder. The old python based importer did find them, since it was doing a really complex image search. My understanding is that while C++ importer was developed, it was decided to not do that -- however just the "basename file in the mtl directory" sounds simple enough and gets the repro case file work correctly. --- source/blender/io/wavefront_obj/importer/obj_import_mtl.cc | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'source/blender/io/wavefront_obj/importer') diff --git a/source/blender/io/wavefront_obj/importer/obj_import_mtl.cc b/source/blender/io/wavefront_obj/importer/obj_import_mtl.cc index 0023d1159c5..27bb5aa0d71 100644 --- a/source/blender/io/wavefront_obj/importer/obj_import_mtl.cc +++ b/source/blender/io/wavefront_obj/importer/obj_import_mtl.cc @@ -134,6 +134,14 @@ static Image *load_texture_image(Main *bmain, return image; } } + /* Try taking just the basename from input path. */ + std::string base_path{tex_map.mtl_dir_path + BLI_path_basename(tex_map.image_path.c_str())}; + if (base_path != tex_path) { + image = load_image_at_path(bmain, base_path, relative_paths); + if (image != nullptr) { + return image; + } + } image = create_placeholder_image(bmain, tex_path); return image; -- cgit v1.2.3