diff options
author | Julien Duroure <julien.duroure@gmail.com> | 2019-04-19 19:06:25 +0300 |
---|---|---|
committer | Julien Duroure <julien.duroure@gmail.com> | 2019-04-19 19:06:25 +0300 |
commit | e4165cee8b34b216db5ff41b20b9a05991a4b4b7 (patch) | |
tree | f3aeacf78fa2fd94772e36f3407c63c112c3faf8 /io_scene_gltf2/blender/imp/gltf2_blender_pbrMetallicRoughness.py | |
parent | 022fb9d09aac59f5df055e879002573daa597efc (diff) |
glTF importer: Manage KHR_texture_transform extension
Diffstat (limited to 'io_scene_gltf2/blender/imp/gltf2_blender_pbrMetallicRoughness.py')
-rwxr-xr-x | io_scene_gltf2/blender/imp/gltf2_blender_pbrMetallicRoughness.py | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/io_scene_gltf2/blender/imp/gltf2_blender_pbrMetallicRoughness.py b/io_scene_gltf2/blender/imp/gltf2_blender_pbrMetallicRoughness.py index 72a75880..05e6f580 100755 --- a/io_scene_gltf2/blender/imp/gltf2_blender_pbrMetallicRoughness.py +++ b/io_scene_gltf2/blender/imp/gltf2_blender_pbrMetallicRoughness.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 BlenderPbr(): @@ -101,7 +102,7 @@ class BlenderPbr(): vc_mult_node.blend_type = 'MULTIPLY' vc_mult_node.inputs['Fac'].default_value = 1.0 - BlenderTextureInfo.create(gltf, pypbr.base_color_texture.index) + BlenderTextureInfo.create(gltf, pypbr.base_color_texture) # create UV Map / Mapping / Texture nodes / separate & math and combine text_node = node_tree.nodes.new('ShaderNodeTexImage') @@ -126,6 +127,14 @@ class BlenderPbr(): mapping = node_tree.nodes.new('ShaderNodeMapping') mapping.location = -1500, 500 + mapping.vector_type = 'POINT' + 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] + uvmap = node_tree.nodes.new('ShaderNodeUVMap') uvmap.location = -2000, 500 @@ -151,7 +160,7 @@ class BlenderPbr(): elif pypbr.color_type == gltf.TEXTURE: - BlenderTextureInfo.create(gltf, pypbr.base_color_texture.index) + BlenderTextureInfo.create(gltf, pypbr.base_color_texture) # TODO alpha ? if vertex_color: @@ -183,6 +192,13 @@ class BlenderPbr(): mapping.location = -2500, 500 else: mapping.location = -1500, 500 + mapping.vector_type = 'POINT' + 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] uvmap = node_tree.nodes.new('ShaderNodeUVMap') if vertex_color: @@ -216,7 +232,7 @@ class BlenderPbr(): main_node.inputs[7].default_value = pypbr.roughness_factor elif pypbr.metallic_type == gltf.TEXTURE: - BlenderTextureInfo.create(gltf, pypbr.metallic_roughness_texture.index) + BlenderTextureInfo.create(gltf, pypbr.metallic_roughness_texture) metallic_text = node_tree.nodes.new('ShaderNodeTexImage') metallic_text.image = bpy.data.images[gltf.data.images[ gltf.data.textures[pypbr.metallic_roughness_texture.index].source @@ -249,7 +265,7 @@ class BlenderPbr(): elif pypbr.metallic_type == gltf.TEXTURE_FACTOR: - BlenderTextureInfo.create(gltf, pypbr.metallic_roughness_texture.index) + BlenderTextureInfo.create(gltf, pypbr.metallic_roughness_texture) metallic_text = node_tree.nodes.new('ShaderNodeTexImage') metallic_text.image = bpy.data.images[gltf.data.images[ gltf.data.textures[pypbr.metallic_roughness_texture.index].source @@ -273,6 +289,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 |