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-09-18 19:55:57 +0300
committerJulien Duroure <julien.duroure@gmail.com>2020-09-18 19:55:57 +0300
commit1f043682f9568fed02e3b877b31e8244b1b7a5c2 (patch)
tree69ec40cb2a9905db8f78749d7275b336d77dbf24 /io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py
parentdf0fa2341e1a7bb69ee52f13d89f656f362cb426 (diff)
glTF exporter: support KHR_materials_unlit
Diffstat (limited to 'io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py')
-rwxr-xr-xio_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py53
1 files changed, 44 insertions, 9 deletions
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 c346a831..f1260940 100755
--- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py
+++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py
@@ -21,6 +21,7 @@ from io_scene_gltf2.blender.exp import gltf2_blender_gather_texture_info, gltf2_
from io_scene_gltf2.blender.exp import gltf2_blender_search_node_tree
from io_scene_gltf2.blender.exp import gltf2_blender_gather_materials_pbr_metallic_roughness
+from io_scene_gltf2.blender.exp import gltf2_blender_gather_materials_unlit
from ..com.gltf2_blender_extras import generate_extras
from io_scene_gltf2.blender.exp import gltf2_blender_get
from io_scene_gltf2.io.exp.gltf2_io_user_extensions import export_user_extensions
@@ -28,7 +29,7 @@ from io_scene_gltf2.io.com.gltf2_io_debug import print_console
@cached
-def gather_material(blender_material, mesh_double_sided, export_settings):
+def gather_material(blender_material, export_settings):
"""
Gather the material used by the blender primitive.
@@ -39,12 +40,16 @@ def gather_material(blender_material, mesh_double_sided, export_settings):
if not __filter_material(blender_material, export_settings):
return None
+ mat_unlit = __gather_material_unlit(blender_material, export_settings)
+ if mat_unlit is not None:
+ return mat_unlit
+
orm_texture = __gather_orm_texture(blender_material, export_settings)
material = gltf2_io.Material(
alpha_cutoff=__gather_alpha_cutoff(blender_material, export_settings),
alpha_mode=__gather_alpha_mode(blender_material, export_settings),
- double_sided=__gather_double_sided(blender_material, mesh_double_sided, export_settings),
+ double_sided=__gather_double_sided(blender_material, export_settings),
emissive_factor=__gather_emissive_factor(blender_material, export_settings),
emissive_texture=__gather_emissive_texture(blender_material, export_settings),
extensions=__gather_extensions(blender_material, export_settings),
@@ -92,8 +97,8 @@ def __gather_alpha_mode(blender_material, export_settings):
return None
-def __gather_double_sided(blender_material, mesh_double_sided, export_settings):
- if mesh_double_sided:
+def __gather_double_sided(blender_material, export_settings):
+ if not blender_material.use_backface_culling:
return True
old_double_sided_socket = gltf2_blender_get.get_socket_old(blender_material, "DoubleSided")
@@ -152,11 +157,6 @@ def __gather_emissive_texture(blender_material, export_settings):
def __gather_extensions(blender_material, export_settings):
extensions = {}
- # KHR_materials_unlit
-
- if gltf2_blender_get.get_socket(blender_material, "Background") is not None:
- extensions["KHR_materials_unlit"] = Extension("KHR_materials_unlit", {}, False)
-
# KHR_materials_clearcoat
clearcoat_extension = __gather_clearcoat_extension(blender_material, export_settings)
@@ -351,3 +351,38 @@ def __gather_transmission_extension(blender_material, export_settings):
transmission_extension['transmissionTexture'] = combined_texture
return Extension('KHR_materials_transmission', transmission_extension, False)
+
+
+def __gather_material_unlit(blender_material, export_settings):
+ gltf2_unlit = gltf2_blender_gather_materials_unlit
+
+ info = gltf2_unlit.detect_shadeless_material(blender_material, export_settings)
+ if info is None:
+ return None
+
+ material = gltf2_io.Material(
+ alpha_cutoff=__gather_alpha_cutoff(blender_material, export_settings),
+ alpha_mode=__gather_alpha_mode(blender_material, export_settings),
+ double_sided=__gather_double_sided(blender_material, export_settings),
+ extensions={"KHR_materials_unlit": Extension("KHR_materials_unlit", {}, required=False)},
+ extras=__gather_extras(blender_material, export_settings),
+ name=__gather_name(blender_material, export_settings),
+ emissive_factor=None,
+ emissive_texture=None,
+ normal_texture=None,
+ occlusion_texture=None,
+
+ pbr_metallic_roughness=gltf2_io.MaterialPBRMetallicRoughness(
+ base_color_factor=gltf2_unlit.gather_base_color_factor(info, export_settings),
+ base_color_texture=gltf2_unlit.gather_base_color_texture(info, export_settings),
+ metallic_factor=0.0,
+ roughness_factor=0.9,
+ metallic_roughness_texture=None,
+ extensions=None,
+ extras=None,
+ )
+ )
+
+ export_user_extensions('gather_material_unlit_hook', export_settings, material, blender_material)
+
+ return material