diff options
author | Peter Kim <pk15950@gmail.com> | 2022-09-08 07:00:43 +0300 |
---|---|---|
committer | Peter Kim <pk15950@gmail.com> | 2022-09-08 07:00:43 +0300 |
commit | e83f88c951e26b01893acee4f24b40a46062a41c (patch) | |
tree | 09f60bf7d4fc2ae1ef50668823e416fc675b252e /io_scene_gltf2/blender/exp/gltf2_blender_get.py | |
parent | ec84e3294593e2e26475f18c81e847bf00dc201e (diff) | |
parent | 0cd92169d40ae1c7e103ff269e850eaf1b901646 (diff) |
Merge branch 'master' into xr-devxr-dev
Diffstat (limited to 'io_scene_gltf2/blender/exp/gltf2_blender_get.py')
-rwxr-xr-x | io_scene_gltf2/blender/exp/gltf2_blender_get.py | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_get.py b/io_scene_gltf2/blender/exp/gltf2_blender_get.py index e38906e6..9e468186 100755 --- a/io_scene_gltf2/blender/exp/gltf2_blender_get.py +++ b/io_scene_gltf2/blender/exp/gltf2_blender_get.py @@ -4,9 +4,10 @@ import bpy from mathutils import Vector, Matrix -from ..com.gltf2_blender_material_helpers import get_gltf_node_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 def get_animation_target(action_group: bpy.types.ActionGroup): @@ -47,7 +48,7 @@ def get_node_socket(blender_material, type, name): return None -def get_socket(blender_material: bpy.types.Material, name: str): +def get_socket(blender_material: bpy.types.Material, name: str, volume=False): """ For a given material input name, retrieve the corresponding node tree socket. @@ -70,8 +71,15 @@ def get_socket(blender_material: bpy.types.Material, name: str): elif name == "Background": type = bpy.types.ShaderNodeBackground name = "Color" + elif name == "sheenColor": + return get_node_socket(blender_material, bpy.types.ShaderNodeBsdfVelvet, "Color") + elif name == "sheenRoughness": + return get_node_socket(blender_material, bpy.types.ShaderNodeBsdfVelvet, "Sigma") else: - type = bpy.types.ShaderNodeBsdfPrincipled + if volume is False: + type = bpy.types.ShaderNodeBsdfPrincipled + else: + type = bpy.types.ShaderNodeVolumeAbsorption return get_node_socket(blender_material, type, name) @@ -86,11 +94,11 @@ def get_socket_old(blender_material: bpy.types.Material, name: str): :param name: the name of the socket :return: a blender NodeSocket """ - gltf_node_group_name = get_gltf_node_name().lower() + gltf_node_group_names = [get_gltf_node_name().lower(), get_gltf_node_old_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.startswith('glTF Metallic Roughness') or n.node_tree.name.lower() == gltf_node_group_name)] + (n.node_tree.name.startswith('glTF Metallic Roughness') or n.node_tree.name.lower() in gltf_node_group_names)] inputs = sum([[input for input in node.inputs if input.name == name] for node in nodes], []) if inputs: return inputs[0] @@ -297,3 +305,12 @@ def previous_node(socket): if prev_socket is not None: return prev_socket.node return None + +#TODOExt is this the same as __get_tex_from_socket from gather_image ? +def has_image_node_from_socket(socket): + result = gltf2_blender_search_node_tree.from_socket( + socket, + gltf2_blender_search_node_tree.FilterByType(bpy.types.ShaderNodeTexImage)) + if not result: + return False + return True |