Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Duroure <julien.duroure@gmail.com>2020-06-16 22:32:57 +0300
committerJulien Duroure <julien.duroure@gmail.com>2020-06-16 22:32:57 +0300
commit09508f2dcf2a6af149b7817d9337333e9a0f2d4b (patch)
tree746bd531d5d6f952ee81d0a70c0f3efd2565d12a /io_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py
parentca6405bac34ebf2122bd37a5ad40c03b4bb30f33 (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-xio_scene_gltf2/blender/exp/gltf2_blender_gather_texture_info.py32
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