diff --git a/io_scene_gltf2/__init__.py b/io_scene_gltf2/__init__.py index 56745a5fa6cd4243a24dabc8c3ad41ec9614301a..468b845b973445ffe35bc46a19311ffc5d94f63b 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 b60045aae473af3bb63cd1dd91e8b41b82a064f9..11fae88358cbe2bb41263837dc54225bd909ed09 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 506f73053b66c1567b965e5015e656324739824a..631c68d1dfb9bdf21f9655b18f580bfdb1d097ed 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 6ee26962b63bc54278f964735bff9b517ffc3db9..0426ca54759f72ea068e93724e00f8c78c1f6d9b 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 62c3fb628db8d417f3e9c28804934d1076738798..e60a557ccd2250f4c026dbfb719daff9bd8532d1 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