From 4003baf03d7d6d78ef4c16be79c73edadf87759c Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Sat, 12 Feb 2022 14:06:54 +0100 Subject: glTF exporter: Option to not export texture images --- io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py | 5 ++++- .../gltf2_blender_gather_materials_pbr_metallic_roughness.py | 10 ++++++++-- io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py | 4 ++++ io_scene_gltf2/blender/exp/gltf2_blender_get.py | 9 +++++++++ 4 files changed, 25 insertions(+), 3 deletions(-) (limited to 'io_scene_gltf2/blender/exp') diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py index a15f0f8d..ff0c2cfe 100755 --- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py +++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py @@ -114,7 +114,10 @@ def __gather_emissive_factor(blender_material, export_settings): if emissive_socket is None: emissive_socket = gltf2_blender_get.get_socket_old(blender_material, "EmissiveFactor") if isinstance(emissive_socket, bpy.types.NodeSocket): - factor = gltf2_blender_get.get_factor_from_socket(emissive_socket, kind='RGB') + if export_settings['gltf_image_format'] != "NONE": + factor = gltf2_blender_get.get_factor_from_socket(emissive_socket, kind='RGB') + else: + factor = gltf2_blender_get.get_const_from_default_value_socket(emissive_socket, kind='RGB') if factor is None and emissive_socket.is_linked: # In glTF, the default emissiveFactor is all zeros, so if an emission texture is connected, diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_pbr_metallic_roughness.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_pbr_metallic_roughness.py index 88f3eb69..e885b21b 100755 --- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_pbr_metallic_roughness.py +++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_pbr_metallic_roughness.py @@ -53,7 +53,10 @@ def __gather_base_color_factor(blender_material, export_settings): alpha_socket = gltf2_blender_get.get_socket(blender_material, "Alpha") if isinstance(alpha_socket, bpy.types.NodeSocket): - alpha = gltf2_blender_get.get_factor_from_socket(alpha_socket, kind='VALUE') + if export_settings['gltf_image_format'] != "NONE": + alpha = gltf2_blender_get.get_factor_from_socket(alpha_socket, kind='VALUE') + else: + alpha = gltf2_blender_get.get_const_from_default_value_socket(alpha_socket, kind='VALUE') base_color_socket = gltf2_blender_get.get_socket(blender_material, "Base Color") if base_color_socket is None: @@ -61,7 +64,10 @@ def __gather_base_color_factor(blender_material, export_settings): if base_color_socket is None: base_color_socket = gltf2_blender_get.get_socket_old(blender_material, "BaseColorFactor") if isinstance(base_color_socket, bpy.types.NodeSocket): - rgb = gltf2_blender_get.get_factor_from_socket(base_color_socket, kind='RGB') + if export_settings['gltf_image_format'] != "NONE": + rgb = gltf2_blender_get.get_factor_from_socket(base_color_socket, kind='RGB') + else: + rgb = gltf2_blender_get.get_const_from_default_value_socket(base_color_socket, kind='RGB') if rgb is None: rgb = [1.0, 1.0, 1.0] if alpha is None: alpha = 1.0 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 a8ec7f79..96146523 100755 --- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py +++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_texture.py @@ -35,6 +35,7 @@ def gather_texture( :param export_settings: configuration of the export :return: a glTF 2.0 texture with sampler and source embedded (will be converted to references by the exporter) """ + if not __filter_texture(blender_shader_sockets, export_settings): return None @@ -56,6 +57,9 @@ def gather_texture( def __filter_texture(blender_shader_sockets, export_settings): + # User doesn't want to export textures + if export_settings['gltf_image_format'] == "NONE": + return None return True diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_get.py b/io_scene_gltf2/blender/exp/gltf2_blender_get.py index e925bf25..0b1946e5 100755 --- a/io_scene_gltf2/blender/exp/gltf2_blender_get.py +++ b/io_scene_gltf2/blender/exp/gltf2_blender_get.py @@ -250,6 +250,15 @@ def get_factor_from_socket(socket, kind): return None +def get_const_from_default_value_socket(socket, kind): + if kind == 'RGB': + if socket.type != 'RGBA': return None + return list(socket.default_value)[:3] + if kind == 'VALUE': + if socket.type != 'VALUE': return None + return socket.default_value + return None + def get_const_from_socket(socket, kind): if not socket.is_linked: -- cgit v1.2.3