diff options
author | Julien Duroure <julien.duroure@gmail.com> | 2019-09-05 00:27:51 +0300 |
---|---|---|
committer | Julien Duroure <julien.duroure@gmail.com> | 2019-09-05 00:27:51 +0300 |
commit | 42f1e69458db9efcf61a79ea8ec0ba2bba2b74d9 (patch) | |
tree | 154b041f76d3499896398d744e18a8758f77347c | |
parent | e2311a730bce5b946af40bf4c9ed14eddf27ffcb (diff) |
glTF importer: manage KHR_texture_transform extension for all textures
5 files changed, 32 insertions, 1 deletions
diff --git a/io_scene_gltf2/__init__.py b/io_scene_gltf2/__init__.py index 56745a5f..468b845b 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, 55), + "version": (0, 9, 56), 'blender': (2, 81, 6), 'location': 'File > Import-Export', 'description': 'Import-Export as glTF 2.0', 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 b60045aa..11fae883 100755 --- a/io_scene_gltf2/blender/imp/gltf2_blender_map_emissive.py +++ b/io_scene_gltf2/blender/imp/gltf2_blender_map_emissive.py @@ -15,6 +15,7 @@ import bpy from .gltf2_blender_texture import BlenderTextureInfo from ..com.gltf2_blender_material_helpers import get_preoutput_node_output +from ..com.gltf2_blender_conversion import texture_transform_gltf_to_blender class BlenderEmissiveMap(): @@ -82,6 +83,13 @@ class BlenderEmissiveMap(): ].blender_image_name] text.label = 'EMISSIVE' 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] # 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 506f7305..631c68d1 100755 --- a/io_scene_gltf2/blender/imp/gltf2_blender_map_normal.py +++ b/io_scene_gltf2/blender/imp/gltf2_blender_map_normal.py @@ -14,6 +14,7 @@ import bpy from .gltf2_blender_texture import BlenderTextureInfo +from ..com.gltf2_blender_conversion import texture_transform_gltf_to_blender class BlenderNormalMap(): @@ -69,6 +70,13 @@ class BlenderNormalMap(): if text.image: text.image.colorspace_settings.is_data = True 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] 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 6ee26962..0426ca54 100755 --- a/io_scene_gltf2/blender/imp/gltf2_blender_map_occlusion.py +++ b/io_scene_gltf2/blender/imp/gltf2_blender_map_occlusion.py @@ -15,6 +15,7 @@ import bpy from .gltf2_blender_texture import BlenderTextureInfo from ..com.gltf2_blender_material_helpers import get_gltf_node_name +from ..com.gltf2_blender_conversion import texture_transform_gltf_to_blender class BlenderOcclusionMap(): @@ -99,6 +100,13 @@ class BlenderOcclusionMap(): gltf.data.textures[pymaterial.occlusion_texture.index].source ].blender_image_name] 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] # 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 62c3fb62..e60a557c 100755 --- a/io_scene_gltf2/blender/imp/gltf2_blender_pbrMetallicRoughness.py +++ b/io_scene_gltf2/blender/imp/gltf2_blender_pbrMetallicRoughness.py @@ -249,6 +249,13 @@ class BlenderPbr(): metallic_mapping = node_tree.nodes.new('ShaderNodeMapping') 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_uvmap = node_tree.nodes.new('ShaderNodeUVMap') metallic_uvmap.location = -1500, 0 |