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>2022-08-08 18:03:41 +0300
committerJulien Duroure <julien.duroure@gmail.com>2022-08-08 18:03:41 +0300
commitae29cfd1860e53e61d1b58d9c406638927a8ab40 (patch)
tree862c23104a62173a9c9c4387ecfd589920362fd9 /io_scene_gltf2/blender/exp
parenteca1bdeb88a35deeaec8f2969953dd6d503315a3 (diff)
glTF: Merge glTF Material Output nodes into a single one
Diffstat (limited to 'io_scene_gltf2/blender/exp')
-rwxr-xr-xio_scene_gltf2/blender/exp/gltf2_blender_gather_image.py4
-rw-r--r--io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_specular.py4
-rwxr-xr-xio_scene_gltf2/blender/exp/gltf2_blender_get.py20
3 files changed, 5 insertions, 23 deletions
diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_image.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_image.py
index 69900c1b..81e79a50 100755
--- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_image.py
+++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_image.py
@@ -188,7 +188,7 @@ def __get_image_data(sockets, export_settings) -> ExportImage:
results = [__get_tex_from_socket(socket, export_settings) for socket in sockets]
# Check if we need a simple mapping or more complex calculation
- if any([socket.name == "Specular" for socket in sockets]):
+ if any([socket.name == "Specular" and socket.node.type == "BSDF_PRINCIPLED" for socket in sockets]):
return __get_image_data_specular(sockets, results, export_settings)
else:
return __get_image_data_mapping(sockets, results, export_settings)
@@ -238,7 +238,7 @@ def __get_image_data_mapping(sockets, results, export_settings) -> ExportImage:
dst_chan = Channel.G
elif socket.name == 'Thickness': # For KHR_materials_volume
dst_chan = Channel.G
- elif socket.name == "specular glTF": # For original KHR_material_specular
+ elif socket.name == "Specular": # For original KHR_material_specular
dst_chan = Channel.A
elif socket.name == "Sigma": # For KHR_materials_sheen
dst_chan = Channel.A
diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_specular.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_specular.py
index 30b32198..22414b13 100644
--- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_specular.py
+++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_materials_specular.py
@@ -13,8 +13,8 @@ from io_scene_gltf2.blender.exp import gltf2_blender_gather_texture_info
def export_original_specular(blender_material, export_settings):
specular_extension = {}
- original_specular_socket = gltf2_blender_get.get_socket_original(blender_material, 'specular glTF')
- original_specularcolor_socket = gltf2_blender_get.get_socket_original(blender_material, 'specularColor glTF')
+ original_specular_socket = gltf2_blender_get.get_socket_old(blender_material, 'Specular')
+ original_specularcolor_socket = gltf2_blender_get.get_socket_old(blender_material, 'Specular Color')
if original_specular_socket is None or original_specularcolor_socket is None:
return None, None
diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_get.py b/io_scene_gltf2/blender/exp/gltf2_blender_get.py
index da6e9b57..9e468186 100755
--- a/io_scene_gltf2/blender/exp/gltf2_blender_get.py
+++ b/io_scene_gltf2/blender/exp/gltf2_blender_get.py
@@ -4,7 +4,7 @@
import bpy
from mathutils import Vector, Matrix
-from ..com.gltf2_blender_material_helpers import get_gltf_node_name, get_gltf_node_old_name, get_gltf_pbr_non_converted_name
+from ..com.gltf2_blender_material_helpers import get_gltf_node_name, get_gltf_node_old_name
from ...blender.com.gltf2_blender_conversion import texture_transform_blender_to_gltf
from io_scene_gltf2.io.com import gltf2_io_debug
from io_scene_gltf2.blender.exp import gltf2_blender_search_node_tree
@@ -105,24 +105,6 @@ def get_socket_old(blender_material: bpy.types.Material, name: str):
return None
-def get_socket_original(blender_material: bpy.types.Material, name: str):
- """
- For a given material input name, retrieve the corresponding node tree socket in the special glTF node group.
-
- :param blender_material: a blender material for which to get the socket
- :param name: the name of the socket
- :return: a blender NodeSocket
- """
- gltf_node_group_name = get_gltf_pbr_non_converted_name().lower()
- if blender_material.node_tree and blender_material.use_nodes:
- nodes = [n for n in blender_material.node_tree.nodes if \
- isinstance(n, bpy.types.ShaderNodeGroup) and n.node_tree.name.lower() == gltf_node_group_name]
- inputs = sum([[input for input in node.inputs if input.name == name] for node in nodes], [])
- if inputs:
- return inputs[0]
-
- return None
-
def check_if_is_linked_to_active_output(shader_socket):
for link in shader_socket.links:
if isinstance(link.to_node, bpy.types.ShaderNodeOutputMaterial) and link.to_node.is_active_output is True: