diff options
author | Julien Duroure <julien.duroure@gmail.com> | 2019-09-05 23:15:08 +0300 |
---|---|---|
committer | Julien Duroure <julien.duroure@gmail.com> | 2019-09-05 23:15:08 +0300 |
commit | 8953c208ad1be0145f97c070f8479ac1d7768b67 (patch) | |
tree | a8db98adb0558585c52bb605dc9db15d9178d784 | |
parent | d8e78e3cdcd2adba905b1729c859753df90a9632 (diff) |
glTF exporter: export texture transform for any texture
4 files changed, 24 insertions, 9 deletions
diff --git a/io_scene_gltf2/__init__.py b/io_scene_gltf2/__init__.py index 0cf417c8..eb79bb23 100755 --- a/io_scene_gltf2/__init__.py +++ b/io_scene_gltf2/__init__.py @@ -15,7 +15,7 @@ bl_info = { 'name': 'glTF 2.0 format', 'author': 'Julien Duroure, Norbert Nopper, Urs Hanselmann, Moritz Becher, Benjamin Schmithüsen, Jim Eckerlein, and many external contributors', - "version": (0, 9, 59), + "version": (0, 9, 60), 'blender': (2, 81, 6), 'location': 'File > Import-Export', 'description': 'Import-Export as glTF 2.0', diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_material_normal_texture_info_class.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_material_normal_texture_info_class.py index a2480787..ee948ff2 100755 --- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_material_normal_texture_info_class.py +++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_material_normal_texture_info_class.py @@ -57,15 +57,13 @@ def __filter_texture_info(blender_shader_sockets_or_texture_slots, export_settin def __gather_extensions(blender_shader_sockets_or_texture_slots, export_settings): - normal_map_node = blender_shader_sockets_or_texture_slots[0].links[0].from_node - if not isinstance(normal_map_node, bpy.types.ShaderNodeNormalMap): + if not hasattr(blender_shader_sockets_or_texture_slots[0], 'links'): return None - texture_socket = normal_map_node.inputs["Color"] - if len(texture_socket.links) == 0: + tex_nodes = [__get_tex_from_socket(socket).shader_node for socket in blender_shader_sockets_or_texture_slots] + texture_node = tex_nodes[0] if (tex_nodes is not None and len(tex_nodes) > 0) else None + if texture_node is None: return None - - texture_node = texture_socket.links[0].from_node texture_transform = gltf2_blender_get.get_texture_transform_from_texture_node(texture_node) if texture_transform is None: return None diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_material_occlusion_texture_info_class.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_material_occlusion_texture_info_class.py index 6fb543c0..4c4297ce 100755 --- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_material_occlusion_texture_info_class.py +++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_material_occlusion_texture_info_class.py @@ -18,6 +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_get +from io_scene_gltf2.io.com.gltf2_io_extensions import Extension @cached @@ -54,7 +56,19 @@ def __filter_texture_info(blender_shader_sockets_or_texture_slots, export_settin def __gather_extensions(blender_shader_sockets_or_texture_slots, export_settings): - return None + if not hasattr(blender_shader_sockets_or_texture_slots[0], 'links'): + return None + + tex_nodes = [__get_tex_from_socket(socket).shader_node for socket in blender_shader_sockets_or_texture_slots] + texture_node = tex_nodes[0] if (tex_nodes is not None and len(tex_nodes) > 0) else None + if texture_node is None: + return None + texture_transform = gltf2_blender_get.get_texture_transform_from_texture_node(texture_node) + if texture_transform is None: + return None + + extension = Extension("KHR_texture_transform", texture_transform) + return {"KHR_texture_transform": extension} def __gather_extras(blender_shader_sockets_or_texture_slots, export_settings): 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 9a713062..124c8ba0 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 @@ -73,7 +73,10 @@ def __gather_extensions(blender_shader_sockets_or_texture_slots, export_settings if not hasattr(blender_shader_sockets_or_texture_slots[0], 'links'): return None - texture_node = blender_shader_sockets_or_texture_slots[0].links[0].from_node + tex_nodes = [__get_tex_from_socket(socket).shader_node for socket in blender_shader_sockets_or_texture_slots] + texture_node = tex_nodes[0] if (tex_nodes is not None and len(tex_nodes) > 0) else None + if texture_node is None: + return None texture_transform = gltf2_blender_get.get_texture_transform_from_texture_node(texture_node) if texture_transform is None: return None |