glTF expoter: check image sizes when merging images

This commit is contained in:
Julien Duroure 2019-03-16 15:56:01 +01:00
parent 41699ae84a
commit 4b1dd1ea5f
1 changed files with 15 additions and 1 deletions

View File

@ -18,8 +18,8 @@ from io_scene_gltf2.blender.exp.gltf2_blender_gather_cache import cached
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_export_keys
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
@ -49,6 +49,20 @@ def __filter_texture_info(blender_shader_sockets_or_texture_slots, export_settin
if any([__get_tex_from_socket(socket) is None for socket in blender_shader_sockets_or_texture_slots]):
# 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(__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.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