diff options
author | Julien Duroure <julien.duroure@gmail.com> | 2019-09-05 23:12:53 +0300 |
---|---|---|
committer | Julien Duroure <julien.duroure@gmail.com> | 2019-09-05 23:12:53 +0300 |
commit | d8e78e3cdcd2adba905b1729c859753df90a9632 (patch) | |
tree | 922ef0b35c02e6e4c3418cb8b2265cc4805142fb /io_scene_gltf2 | |
parent | 19819fb1ce7e3a3a603a32e6eac7f548cfbcf866 (diff) |
glTF importer & exporter: fix texture transform after recent API change
Diffstat (limited to 'io_scene_gltf2')
7 files changed, 66 insertions, 55 deletions
diff --git a/io_scene_gltf2/__init__.py b/io_scene_gltf2/__init__.py index dedbce30..0cf417c8 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, Norbert Nopper, Urs Hanselmann, Moritz Becher, Benjamin Schmithüsen, Jim Eckerlein, and many external contributors', - "version": (0, 9, 58), + "version": (0, 9, 59), 'blender': (2, 81, 6), 'location': 'File > Import-Export', 'description': 'Import-Export as glTF 2.0', diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_get.py b/io_scene_gltf2/blender/exp/gltf2_blender_get.py index 4916d5af..a16811d8 100755 --- a/io_scene_gltf2/blender/exp/gltf2_blender_get.py +++ b/io_scene_gltf2/blender/exp/gltf2_blender_get.py @@ -133,7 +133,9 @@ def get_texture_transform_from_texture_node(texture_node): ) return None - if mapping_node.rotation[0] or mapping_node.rotation[1]: + + rotation_0, rotation_1 = mapping_node.inputs['Rotation'].default_value[0], mapping_node.inputs['Rotation'].default_value[1] + if rotation_0 or rotation_1: # TODO: can we handle this? gltf2_io_debug.print_console("WARNING", "Skipping exporting texture transform because it had non-zero " @@ -142,9 +144,9 @@ def get_texture_transform_from_texture_node(texture_node): return None mapping_transform = {} - mapping_transform["offset"] = [mapping_node.translation[0], mapping_node.translation[1]] - mapping_transform["rotation"] = mapping_node.rotation[2] - mapping_transform["scale"] = [mapping_node.scale[0], mapping_node.scale[1]] + mapping_transform["offset"] = [mapping_node.inputs['Location'].default_value[0], mapping_node.inputs['Location'].default_value[1]] + mapping_transform["rotation"] = mapping_node.inputs['Rotation'].default_value[2] + mapping_transform["scale"] = [mapping_node.inputs['Scale'].default_value[0], mapping_node.inputs['Scale'].default_value[1]] if mapping_node.vector_type == "TEXTURE": # This means use the inverse of the TRS transform. diff --git a/io_scene_gltf2/blender/imp/gltf2_blender_KHR_materials_pbrSpecularGlossiness.py b/io_scene_gltf2/blender/imp/gltf2_blender_KHR_materials_pbrSpecularGlossiness.py index d5cf8c14..95427ccd 100755 --- a/io_scene_gltf2/blender/imp/gltf2_blender_KHR_materials_pbrSpecularGlossiness.py +++ b/io_scene_gltf2/blender/imp/gltf2_blender_KHR_materials_pbrSpecularGlossiness.py @@ -125,11 +125,11 @@ class BlenderKHR_materials_pbrSpecularGlossiness(): mapping.location = -1500, 500 mapping.vector_type = 'POINT' tex_transform = text_node.image['tex_transform'][str(pbrSG['diffuseTexture']['index'])] - mapping.translation[0] = texture_transform_gltf_to_blender(tex_transform)['offset'][0] - mapping.translation[1] = texture_transform_gltf_to_blender(tex_transform)['offset'][1] - mapping.rotation[2] = texture_transform_gltf_to_blender(tex_transform)['rotation'] - mapping.scale[0] = texture_transform_gltf_to_blender(tex_transform)['scale'][0] - mapping.scale[1] = texture_transform_gltf_to_blender(tex_transform)['scale'][1] + mapping.inputs['Location'].default_value[0] = texture_transform_gltf_to_blender(tex_transform)['offset'][0] + mapping.inputs['Location'].default_value[1] = texture_transform_gltf_to_blender(tex_transform)['offset'][1] + mapping.inputs['Rotation'].default_value[2] = texture_transform_gltf_to_blender(tex_transform)['rotation'] + mapping.inputs['Scale'].default_value[0] = texture_transform_gltf_to_blender(tex_transform)['scale'][0] + mapping.inputs['Scale'].default_value[1] = texture_transform_gltf_to_blender(tex_transform)['scale'][1] uvmap = node_tree.nodes.new('ShaderNodeUVMap') uvmap.location = -2000, 500 @@ -219,11 +219,12 @@ class BlenderKHR_materials_pbrSpecularGlossiness(): mapping.location = -1500, 500 mapping.vector_type = 'POINT' tex_transform = text_node.image['tex_transform'][str(pbrSG['diffuseTexture']['index'])] - mapping.translation[0] = texture_transform_gltf_to_blender(tex_transform)['offset'][0] - mapping.translation[1] = texture_transform_gltf_to_blender(tex_transform)['offset'][1] - mapping.rotation[2] = texture_transform_gltf_to_blender(tex_transform)['rotation'] - mapping.scale[0] = texture_transform_gltf_to_blender(tex_transform)['scale'][0] - mapping.scale[1] = texture_transform_gltf_to_blender(tex_transform)['scale'][1] + mapping.inputs['Location'].default_value[0] = texture_transform_gltf_to_blender(tex_transform)['offset'][0] + mapping.inputs['Location'].default_value[1] = texture_transform_gltf_to_blender(tex_transform)['offset'][1] + mapping.inputs['Rotation'].default_value[2] = texture_transform_gltf_to_blender(tex_transform)['rotation'] + mapping.inputs['Scale'].default_value[0] = texture_transform_gltf_to_blender(tex_transform)['scale'][0] + mapping.inputs['Scale'].default_value[1] = texture_transform_gltf_to_blender(tex_transform)['scale'][1] + uvmap = node_tree.nodes.new('ShaderNodeUVMap') if vertex_color: @@ -293,11 +294,12 @@ class BlenderKHR_materials_pbrSpecularGlossiness(): spec_mapping.location = -1000, 0 spec_mapping.vector_type = 'POINT' tex_transform = spec_text.image['tex_transform'][str(pbrSG['specularGlossinessTexture']['index'])] - spec_mapping.translation[0] = texture_transform_gltf_to_blender(tex_transform)['offset'][0] - spec_mapping.translation[1] = texture_transform_gltf_to_blender(tex_transform)['offset'][1] - spec_mapping.rotation[2] = texture_transform_gltf_to_blender(tex_transform)['rotation'] - spec_mapping.scale[0] = texture_transform_gltf_to_blender(tex_transform)['scale'][0] - spec_mapping.scale[1] = texture_transform_gltf_to_blender(tex_transform)['scale'][1] + spec_mapping.inputs['Location'].default_value[0] = texture_transform_gltf_to_blender(tex_transform)['offset'][0] + spec_mapping.inputs['Location'].default_value[1] = texture_transform_gltf_to_blender(tex_transform)['offset'][1] + spec_mapping.inputs['Rotation'].default_value[2] = texture_transform_gltf_to_blender(tex_transform)['rotation'] + spec_mapping.inputs['Scale'].default_value[0] = texture_transform_gltf_to_blender(tex_transform)['scale'][0] + spec_mapping.inputs['Scale'].default_value[1] = texture_transform_gltf_to_blender(tex_transform)['scale'][1] + spec_uvmap = node_tree.nodes.new('ShaderNodeUVMap') spec_uvmap.location = -1500, 0 @@ -337,11 +339,12 @@ class BlenderKHR_materials_pbrSpecularGlossiness(): spec_mapping.location = -1000, 0 spec_mapping.vector_type = 'POINT' tex_transform = spec_text.image['tex_transform'][str(pbrSG['specularGlossinessTexture']['index'])] - spec_mapping.translation[0] = texture_transform_gltf_to_blender(tex_transform)['offset'][0] - spec_mapping.translation[1] = texture_transform_gltf_to_blender(tex_transform)['offset'][1] - spec_mapping.rotation[2] = texture_transform_gltf_to_blender(tex_transform)['rotation'] - spec_mapping.scale[0] = texture_transform_gltf_to_blender(tex_transform)['scale'][0] - spec_mapping.scale[1] = texture_transform_gltf_to_blender(tex_transform)['scale'][1] + spec_mapping.inputs['Location'].default_value[0] = texture_transform_gltf_to_blender(tex_transform)['offset'][0] + spec_mapping.inputs['Location'].default_value[1] = texture_transform_gltf_to_blender(tex_transform)['offset'][1] + spec_mapping.inputs['Rotation'].default_value[2] = texture_transform_gltf_to_blender(tex_transform)['rotation'] + spec_mapping.inputs['Scale'].default_value[0] = texture_transform_gltf_to_blender(tex_transform)['scale'][0] + spec_mapping.inputs['Scale'].default_value[1] = texture_transform_gltf_to_blender(tex_transform)['scale'][1] + spec_uvmap = node_tree.nodes.new('ShaderNodeUVMap') diff --git a/io_scene_gltf2/blender/imp/gltf2_blender_map_emissive.py b/io_scene_gltf2/blender/imp/gltf2_blender_map_emissive.py index 11fae883..4214d340 100755 --- a/io_scene_gltf2/blender/imp/gltf2_blender_map_emissive.py +++ b/io_scene_gltf2/blender/imp/gltf2_blender_map_emissive.py @@ -85,11 +85,12 @@ class BlenderEmissiveMap(): text.location = -1000, 1000 if text.image is not None: # Sometimes images can't be retrieved (bad gltf file ...) tex_transform = text.image['tex_transform'][str(pymaterial.emissive_texture.index)] - mapping.translation[0] = texture_transform_gltf_to_blender(tex_transform)['offset'][0] - mapping.translation[1] = texture_transform_gltf_to_blender(tex_transform)['offset'][1] - mapping.rotation[2] = texture_transform_gltf_to_blender(tex_transform)['rotation'] - mapping.scale[0] = texture_transform_gltf_to_blender(tex_transform)['scale'][0] - mapping.scale[1] = texture_transform_gltf_to_blender(tex_transform)['scale'][1] + mapping.inputs['Location'].default_value[0] = texture_transform_gltf_to_blender(tex_transform)['offset'][0] + mapping.inputs['Location'].default_value[1] = texture_transform_gltf_to_blender(tex_transform)['offset'][1] + mapping.inputs['Rotation'].default_value[2] = texture_transform_gltf_to_blender(tex_transform)['rotation'] + mapping.inputs['Scale'].default_value[0] = texture_transform_gltf_to_blender(tex_transform)['scale'][0] + mapping.inputs['Scale'].default_value[1] = texture_transform_gltf_to_blender(tex_transform)['scale'][1] + # create links node_tree.links.new(mapping.inputs[0], uvmap.outputs[0]) diff --git a/io_scene_gltf2/blender/imp/gltf2_blender_map_normal.py b/io_scene_gltf2/blender/imp/gltf2_blender_map_normal.py index 631c68d1..ce7336ab 100755 --- a/io_scene_gltf2/blender/imp/gltf2_blender_map_normal.py +++ b/io_scene_gltf2/blender/imp/gltf2_blender_map_normal.py @@ -72,11 +72,12 @@ class BlenderNormalMap(): text.location = -500, -500 if text.image is not None: # Sometimes images can't be retrieved (bad gltf file ...) tex_transform = text.image['tex_transform'][str(pymaterial.normal_texture.index)] - mapping.translation[0] = texture_transform_gltf_to_blender(tex_transform)['offset'][0] - mapping.translation[1] = texture_transform_gltf_to_blender(tex_transform)['offset'][1] - mapping.rotation[2] = texture_transform_gltf_to_blender(tex_transform)['rotation'] - mapping.scale[0] = texture_transform_gltf_to_blender(tex_transform)['scale'][0] - mapping.scale[1] = texture_transform_gltf_to_blender(tex_transform)['scale'][1] + mapping.inputs['Location'].default_value[0] = texture_transform_gltf_to_blender(tex_transform)['offset'][0] + mapping.inputs['Location'].default_value[1] = texture_transform_gltf_to_blender(tex_transform)['offset'][1] + mapping.inputs['Rotation'].default_value[2] = texture_transform_gltf_to_blender(tex_transform)['rotation'] + mapping.inputs['Scale'].default_value[0] = texture_transform_gltf_to_blender(tex_transform)['scale'][0] + mapping.inputs['Scale'].default_value[1] = texture_transform_gltf_to_blender(tex_transform)['scale'][1] + normalmap_node = node_tree.nodes.new('ShaderNodeNormalMap') normalmap_node.location = -250, -500 diff --git a/io_scene_gltf2/blender/imp/gltf2_blender_map_occlusion.py b/io_scene_gltf2/blender/imp/gltf2_blender_map_occlusion.py index 0426ca54..376010fc 100755 --- a/io_scene_gltf2/blender/imp/gltf2_blender_map_occlusion.py +++ b/io_scene_gltf2/blender/imp/gltf2_blender_map_occlusion.py @@ -102,11 +102,12 @@ class BlenderOcclusionMap(): text.label = 'OCCLUSION' if text.image is not None: # Sometimes images can't be retrieved (bad gltf file ...) tex_transform = text.image['tex_transform'][str(pymaterial.occlusion_texture.index)] - mapping.translation[0] = texture_transform_gltf_to_blender(tex_transform)['offset'][0] - mapping.translation[1] = texture_transform_gltf_to_blender(tex_transform)['offset'][1] - mapping.rotation[2] = texture_transform_gltf_to_blender(tex_transform)['rotation'] - mapping.scale[0] = texture_transform_gltf_to_blender(tex_transform)['scale'][0] - mapping.scale[1] = texture_transform_gltf_to_blender(tex_transform)['scale'][1] + mapping.inputs['Location'].default_value[0] = texture_transform_gltf_to_blender(tex_transform)['offset'][0] + mapping.inputs['Location'].default_value[1] = texture_transform_gltf_to_blender(tex_transform)['offset'][1] + mapping.inputs['Rotation'].default_value[2] = texture_transform_gltf_to_blender(tex_transform)['rotation'] + mapping.inputs['Scale'].default_value[0] = texture_transform_gltf_to_blender(tex_transform)['scale'][0] + mapping.inputs['Scale'].default_value[1] = texture_transform_gltf_to_blender(tex_transform)['scale'][1] + # Links node_tree.links.new(mapping.inputs[0], uvmap.outputs[0]) diff --git a/io_scene_gltf2/blender/imp/gltf2_blender_pbrMetallicRoughness.py b/io_scene_gltf2/blender/imp/gltf2_blender_pbrMetallicRoughness.py index e60a557c..86eb4be4 100755 --- a/io_scene_gltf2/blender/imp/gltf2_blender_pbrMetallicRoughness.py +++ b/io_scene_gltf2/blender/imp/gltf2_blender_pbrMetallicRoughness.py @@ -130,11 +130,12 @@ class BlenderPbr(): mapping.vector_type = 'POINT' if text_node.image is not None: # Sometimes images can't be retrieved (bad gltf file ...) tex_transform = text_node.image['tex_transform'][str(pypbr.base_color_texture.index)] - mapping.translation[0] = texture_transform_gltf_to_blender(tex_transform)['offset'][0] - mapping.translation[1] = texture_transform_gltf_to_blender(tex_transform)['offset'][1] - mapping.rotation[2] = texture_transform_gltf_to_blender(tex_transform)['rotation'] - mapping.scale[0] = texture_transform_gltf_to_blender(tex_transform)['scale'][0] - mapping.scale[1] = texture_transform_gltf_to_blender(tex_transform)['scale'][1] + mapping.inputs['Location'].default_value[0] = texture_transform_gltf_to_blender(tex_transform)['offset'][0] + mapping.inputs['Location'].default_value[1] = texture_transform_gltf_to_blender(tex_transform)['offset'][1] + mapping.inputs['Rotation'].default_value[2] = texture_transform_gltf_to_blender(tex_transform)['rotation'] + mapping.inputs['Scale'].default_value[0] = texture_transform_gltf_to_blender(tex_transform)['scale'][0] + mapping.inputs['Scale'].default_value[1] = texture_transform_gltf_to_blender(tex_transform)['scale'][1] + uvmap = node_tree.nodes.new('ShaderNodeUVMap') @@ -196,11 +197,12 @@ class BlenderPbr(): mapping.vector_type = 'POINT' if text_node.image is not None: # Sometimes images can't be retrieved (bad gltf file ...) tex_transform = text_node.image['tex_transform'][str(pypbr.base_color_texture.index)] - mapping.translation[0] = texture_transform_gltf_to_blender(tex_transform)['offset'][0] - mapping.translation[1] = texture_transform_gltf_to_blender(tex_transform)['offset'][1] - mapping.rotation[2] = texture_transform_gltf_to_blender(tex_transform)['rotation'] - mapping.scale[0] = texture_transform_gltf_to_blender(tex_transform)['scale'][0] - mapping.scale[1] = texture_transform_gltf_to_blender(tex_transform)['scale'][1] + mapping.inputs['Location'].default_value[0] = texture_transform_gltf_to_blender(tex_transform)['offset'][0] + mapping.inputs['Location'].default_value[1] = texture_transform_gltf_to_blender(tex_transform)['offset'][1] + mapping.inputs['Rotation'].default_value[2] = texture_transform_gltf_to_blender(tex_transform)['rotation'] + mapping.inputs['Scale'].default_value[0] = texture_transform_gltf_to_blender(tex_transform)['scale'][0] + mapping.inputs['Scale'].default_value[1] = texture_transform_gltf_to_blender(tex_transform)['scale'][1] + uvmap = node_tree.nodes.new('ShaderNodeUVMap') if vertex_color: @@ -251,11 +253,12 @@ class BlenderPbr(): metallic_mapping.location = -1000, 0 metallic_mapping.vector_type = 'POINT' tex_transform = metallic_text.image['tex_transform'][str(pypbr.metallic_roughness_texture.index)] - metallic_mapping.translation[0] = texture_transform_gltf_to_blender(tex_transform)['offset'][0] - metallic_mapping.translation[1] = texture_transform_gltf_to_blender(tex_transform)['offset'][1] - metallic_mapping.rotation[2] = texture_transform_gltf_to_blender(tex_transform)['rotation'] - metallic_mapping.scale[0] = texture_transform_gltf_to_blender(tex_transform)['scale'][0] - metallic_mapping.scale[1] = texture_transform_gltf_to_blender(tex_transform)['scale'][1] + metallic_mapping.inputs['Location'].default_value[0] = texture_transform_gltf_to_blender(tex_transform)['offset'][0] + metallic_mapping.inputs['Location'].default_value[1] = texture_transform_gltf_to_blender(tex_transform)['offset'][1] + metallic_mapping.inputs['Rotation'].default_value[2] = texture_transform_gltf_to_blender(tex_transform)['rotation'] + metallic_mapping.inputs['Scale'].default_value[0] = texture_transform_gltf_to_blender(tex_transform)['scale'][0] + metallic_mapping.inputs['Scale'].default_value[1] = texture_transform_gltf_to_blender(tex_transform)['scale'][1] + metallic_uvmap = node_tree.nodes.new('ShaderNodeUVMap') metallic_uvmap.location = -1500, 0 |