From 03664e02063ed18c507e607f656e369d3adead05 Mon Sep 17 00:00:00 2001 From: Juan Jose Casafranca Date: Tue, 16 Jul 2019 12:08:34 +0200 Subject: [PATCH] Implement KHR_materials_unlit with user extensions --- .../exp/gltf2_blender_gather_materials.py | 7 -- .../io/exp/extensions/KHR_materials_unlit.py | 65 +++++++++++++++++++ 2 files changed, 65 insertions(+), 7 deletions(-) create mode 100644 addons/io_scene_gltf2/io/exp/extensions/KHR_materials_unlit.py diff --git a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py index 04cb5c8ea..83cb53a1a 100644 --- a/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py +++ b/addons/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py @@ -135,13 +135,6 @@ def __gather_extensions(blender_material, export_settings): extension_wrapper = GLTF2ExtensionMaterials(blender_material) extensions = export_user_extensions(extension_wrapper, export_settings) - if bpy.app.version < (2, 80, 0): - if blender_material.use_shadeless: - extensions["KHR_materials_unlit"] = Extension("KHR_materials_unlit", {}, False) - else: - if gltf2_blender_get.get_socket_or_texture_slot(blender_material, "Background") is not None: - extensions["KHR_materials_unlit"] = Extension("KHR_materials_unlit", {}, False) - # TODO specular glossiness extension return extensions if extensions else None diff --git a/addons/io_scene_gltf2/io/exp/extensions/KHR_materials_unlit.py b/addons/io_scene_gltf2/io/exp/extensions/KHR_materials_unlit.py new file mode 100644 index 000000000..d18de81df --- /dev/null +++ b/addons/io_scene_gltf2/io/exp/extensions/KHR_materials_unlit.py @@ -0,0 +1,65 @@ +import bpy +from io_scene_gltf2.io.com.gltf2_io_extensions import Extension +from io_scene_gltf2.io.exp.gltf2_io_user_extensions import UserExtensionBase +from io_scene_gltf2.blender.exp import gltf2_blender_get +from io_scene_gltf2.io.exp.gltf2_io_user_extensions import GLTF2ExtensionMaterials + +class GLTF_PT_export_KHR_materials_unlit(bpy.types.Panel): + bl_space_type = 'FILE_BROWSER' + bl_region_type = 'TOOL_PROPS' + bl_label = "KHR_materials_unlit" + bl_parent_id = "GLTF_PT_export_user_extensions" + bl_options = {'DEFAULT_CLOSED'} + + @classmethod + def poll(cls, context): + sfile = context.space_data + operator = sfile.active_operator + if operator.is_draco_available: + return operator.bl_idname == "EXPORT_SCENE_OT_gltf" + + def draw_header(self, context): + sfile = context.space_data + operator = sfile.active_operator + self.layout.prop(operator, "export_KHR_materials_unlit_enabled", text="") + + def draw(self, context): + layout = self.layout + layout.use_property_split = True + layout.use_property_decorate = False # No animation. + +class KHR_materials_unlit(UserExtensionBase): + meta = { + 'name': 'KHR_materials_unlit', + 'isDraft': False, + 'enable': True, + 'url': ( + 'https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit' + ) + } + + enabled = bpy.props.BoolProperty( + name='KHR_materials_unlit_enabled', + description='Enable/disable this extension', + default=True + ) + + def export(self, extension_wrapper, export_settings): + + extension = None + if isinstance(extension_wrapper, GLTF2ExtensionMaterials): + blender_material = extension_wrapper.blender_material + if bpy.app.version < (2, 80, 0): + if blender_material.use_shadeless: + extension = Extension("KHR_materials_unlit", {}, False) + else: + if gltf2_blender_get.get_socket_or_texture_slot(blender_material, "Background") is not None: + extension = Extension("KHR_materials_unlit", {}, False) + return extension + + def register_extension(self): + bpy.utils.register_class(GLTF_PT_export_KHR_materials_unlit) + + def properties(self): + return {"enabled": self.enabled} + \ No newline at end of file