diff options
Diffstat (limited to 'io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py')
-rwxr-xr-x | io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py index e8c6baf1..ccfd42e5 100755 --- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py +++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py @@ -26,24 +26,26 @@ def gather_texture( """ if not __filter_texture(blender_shader_sockets, export_settings): - return None + return None, None + + source, factor = __gather_source(blender_shader_sockets, export_settings) texture = gltf2_io.Texture( extensions=__gather_extensions(blender_shader_sockets, export_settings), extras=__gather_extras(blender_shader_sockets, export_settings), name=__gather_name(blender_shader_sockets, export_settings), sampler=__gather_sampler(blender_shader_sockets, export_settings), - source=__gather_source(blender_shader_sockets, export_settings) + source= source ) # although valid, most viewers can't handle missing source properties # This can have None source for "keep original", when original can't be found if texture.source is None: - return None + return None, None export_user_extensions('gather_texture_hook', export_settings, texture, blender_shader_sockets) - return texture + return texture, factor def __filter_texture(blender_shader_sockets, export_settings): @@ -66,13 +68,14 @@ def __gather_name(blender_shader_sockets, export_settings): def __gather_sampler(blender_shader_sockets, export_settings): - shader_nodes = [__get_tex_from_socket(socket).shader_node for socket in blender_shader_sockets] + shader_nodes = [__get_tex_from_socket(socket) for socket in blender_shader_sockets] if len(shader_nodes) > 1: gltf2_io_debug.print_console("WARNING", "More than one shader node tex image used for a texture. " "The resulting glTF sampler will behave like the first shader node tex image.") + first_valid_shader_node = next(filter(lambda x: x is not None, shader_nodes)).shader_node return gltf2_blender_gather_sampler.gather_sampler( - shader_nodes[0], + first_valid_shader_node, export_settings) @@ -81,7 +84,7 @@ def __gather_source(blender_shader_sockets, export_settings): # Helpers - +# TODOExt deduplicate def __get_tex_from_socket(socket): result = gltf2_blender_search_node_tree.from_socket( socket, |