[Bf-extensions-cvs] [0dca80fd] master: glTF: manage KHR_materials_unlit
Julien Duroure
noreply at git.blender.org
Sat Sep 5 15:15:05 CEST 2020
Commit: 0dca80fdc4e81ee7163d46366ab0905c6d2b8ef9
Author: Julien Duroure
Date: Sat Sep 5 15:14:40 2020 +0200
Branches: master
https://developer.blender.org/rBA0dca80fdc4e81ee7163d46366ab0905c6d2b8ef9
glTF: manage KHR_materials_unlit
===================================================================
M io_scene_gltf2/__init__.py
M io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py
M io_scene_gltf2/blender/imp/gltf2_blender_KHR_materials_unlit.py
===================================================================
diff --git a/io_scene_gltf2/__init__.py b/io_scene_gltf2/__init__.py
index 74338ef0..d3a247de 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, Scurest, Norbert Nopper, Urs Hanselmann, Moritz Becher, Benjamin Schmithüsen, Jim Eckerlein, and many external contributors',
- "version": (1, 4, 7),
+ "version": (1, 4, 8),
'blender': (2, 90, 0),
'location': 'File > Import-Export',
'description': 'Import-Export as glTF 2.0',
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 ea597f90..3ad17fe2 100755
--- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py
+++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials.py
@@ -89,7 +89,7 @@ def __gather_alpha_cutoff(blender_material, export_settings):
def __gather_alpha_mode(blender_material, export_settings):
if blender_material.blend_method == 'CLIP':
return 'MASK'
- elif blender_material.blend_method == 'BLEND':
+ elif blender_material.blend_method in ['BLEND', 'HASHED']:
return 'BLEND'
return None
@@ -141,7 +141,11 @@ def __gather_extensions(blender_material, export_settings):
if clearcoat_extension:
extensions["KHR_materials_clearcoat"] = clearcoat_extension
- # TODO KHR_materials_pbrSpecularGlossiness
+ # KHR_materials_transmission
+
+ transmission_extension = __gather_transmission_extension(blender_material, export_settings)
+ if transmission_extension:
+ extensions["KHR_materials_transmission"] = transmission_extension
return extensions if extensions else None
@@ -284,3 +288,34 @@ def __gather_clearcoat_extension(blender_material, export_settings):
)
return Extension('KHR_materials_clearcoat', clearcoat_extension, False)
+
+def __gather_transmission_extension(blender_material, export_settings):
+ transmission_enabled = False
+ has_transmission_texture = False
+
+ transmission_extension = {}
+ transmission_slots = ()
+
+ transmission_socket = gltf2_blender_get.get_socket(blender_material, 'Transmission')
+
+ if isinstance(transmission_socket, bpy.types.NodeSocket) and not transmission_socket.is_linked:
+ transmission_extension['transmissionFactor'] = transmission_socket.default_value
+ transmission_enabled = transmission_extension['transmissionFactor'] > 0
+ elif __has_image_node_from_socket(transmission_socket):
+ transmission_extension['transmissionFactor'] = 1
+ has_transmission_texture = True
+ transmission_enabled = True
+
+ if not transmission_enabled:
+ return None
+
+ # Pack transmission channel (R).
+ if has_transmission_texture:
+ transmission_slots = (transmission_socket,)
+
+ if len(transmission_slots) > 0:
+ combined_texture = gltf2_blender_gather_texture_info.gather_texture_info(transmission_slots, export_settings)
+ if has_transmission_texture:
+ transmission_extension['transmissionTexture'] = combined_texture
+
+ return Extension('KHR_materials_transmission', transmission_extension, False)
diff --git a/io_scene_gltf2/blender/imp/gltf2_blender_KHR_materials_unlit.py b/io_scene_gltf2/blender/imp/gltf2_blender_KHR_materials_unlit.py
index cd0a8568..d2366454 100644
--- a/io_scene_gltf2/blender/imp/gltf2_blender_KHR_materials_unlit.py
+++ b/io_scene_gltf2/blender/imp/gltf2_blender_KHR_materials_unlit.py
@@ -34,9 +34,6 @@ def unlit(mh):
mh.node_tree.links.new(mix_node.inputs['Fac'], lightpath_node.outputs['Is Camera Ray'])
mh.node_tree.links.new(mix_node.inputs[1], transparent_node.outputs[0])
mh.node_tree.links.new(mix_node.inputs[2], emission_node.outputs[0])
- # Using transparency requires alpha blending for Eevee
- if mh.is_opaque():
- mh.mat.blend_method = 'HASHED' # TODO check best result in eevee
_emission_socket, alpha_socket = make_output_nodes(
mh,
More information about the Bf-extensions-cvs
mailing list