diff options
author | Julien Duroure <julien.duroure@gmail.com> | 2020-06-16 22:32:57 +0300 |
---|---|---|
committer | Julien Duroure <julien.duroure@gmail.com> | 2020-06-16 22:32:57 +0300 |
commit | 09508f2dcf2a6af149b7817d9337333e9a0f2d4b (patch) | |
tree | 746bd531d5d6f952ee81d0a70c0f3efd2565d12a /io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py | |
parent | ca6405bac34ebf2122bd37a5ad40c03b4bb30f33 (diff) |
glTF exporter: allow combining different-sized textures (eg for ORM)
Diffstat (limited to 'io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py')
-rwxr-xr-x | io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py index 430dbda8..57b0b5a2 100755 --- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py +++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py @@ -19,7 +19,6 @@ from io_scene_gltf2.io.com import gltf2_io from io_scene_gltf2.blender.exp import gltf2_blender_gather_texture from io_scene_gltf2.blender.exp import gltf2_blender_search_node_tree from io_scene_gltf2.blender.exp import gltf2_blender_get -from io_scene_gltf2.io.com.gltf2_io_debug import print_console from io_scene_gltf2.io.com.gltf2_io_extensions import Extension from io_scene_gltf2.io.exp.gltf2_io_user_extensions import export_user_extensions @@ -56,19 +55,6 @@ def __filter_texture_info(blender_shader_sockets_or_texture_slots, export_settin # sockets do not lead to a texture --> discard return False - resolution = __get_tex_from_socket(blender_shader_sockets_or_texture_slots[0]).shader_node.image.size - if any(any(a != b for a, b in zip(__get_tex_from_socket(elem).shader_node.image.size, resolution)) - for elem in blender_shader_sockets_or_texture_slots): - def format_image(image_node): - return "{} ({}x{})".format(image_node.image.name, image_node.image.size[0], image_node.image.size[1]) - - images = [format_image(__get_tex_from_socket(elem).shader_node) for elem in - blender_shader_sockets_or_texture_slots] - - print_console("ERROR", "Image sizes do not match. In order to be merged into one image file, " - "images need to be of the same size. Images: {}".format(images)) - return False - return True @@ -141,3 +127,21 @@ def __get_tex_from_socket(socket): if result[0].shader_node.image is None: return None return result[0] + + +def check_same_size_images( + blender_shader_sockets: typing.Tuple[bpy.types.NodeSocket], +) -> bool: + """Check that all sockets leads to images of the same size.""" + if not blender_shader_sockets or not all(blender_shader_sockets): + return False + + sizes = set() + for socket in blender_shader_sockets: + tex = __get_tex_from_socket(socket) + if tex is None: + return False + size = tex.shader_node.image.size + sizes.add((size[0], size[1])) + + return len(sizes) == 1 |