Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Duroure <julien.duroure@gmail.com>2018-12-07 22:08:53 +0300
committerJulien Duroure <julien.duroure@gmail.com>2018-12-07 22:08:53 +0300
commitc90525d7bd77b8d5a5375dc7a031228dc72f90ba (patch)
tree4a1a1ebe05fee7e1f190d98513ecc075db21d778 /io_scene_gltf2/blender/exp/gltf2_blender_get.py
parent1ac8a720609d92deba4d91d91a3a8b907a7ad6a8 (diff)
glTF exporter: Manage texture transforms
Diffstat (limited to 'io_scene_gltf2/blender/exp/gltf2_blender_get.py')
-rwxr-xr-xio_scene_gltf2/blender/exp/gltf2_blender_get.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_get.py b/io_scene_gltf2/blender/exp/gltf2_blender_get.py
index 03078225..6d025980 100755
--- a/io_scene_gltf2/blender/exp/gltf2_blender_get.py
+++ b/io_scene_gltf2/blender/exp/gltf2_blender_get.py
@@ -322,6 +322,38 @@ def get_texcoord_index_from_shader_node(glTF, name, shader_node):
return 0
+def get_texture_transform_from_texture_node(texture_node):
+ if not isinstance(texture_node, bpy.types.ShaderNodeTexImage):
+ return None
+
+ mapping_socket = texture_node.inputs["Vector"]
+ if len(mapping_socket.links) == 0:
+ return None
+
+ mapping_node = mapping_socket.links[0].from_node
+ if not isinstance(mapping_node, bpy.types.ShaderNodeMapping):
+ return None
+
+ texture_transform = {}
+ if mapping_node.vector_type == 'TEXTURE':
+ texture_transform["offset"] = [-mapping_node.translation[0], -mapping_node.translation[1]]
+ texture_transform["rotation"] = -mapping_node.rotation[2]
+ texture_transform["scale"] = [1.0 / mapping_node.scale[0], 1.0 / mapping_node.scale[1]]
+ elif mapping_node.vector_type == 'POINT':
+ texture_transform["offset"] = [mapping_node.translation[0], mapping_node.translation[1]]
+ texture_transform["rotation"] = mapping_node.rotation[2]
+ texture_transform["scale"] = [mapping_node.scale[0], mapping_node.scale[1]]
+
+ if all([component == 0 for component in texture_transform["offset"]]):
+ del(texture_transform["offset"])
+ if all([component == 1 for component in texture_transform["scale"]]):
+ del(texture_transform["scale"])
+ if texture_transform["rotation"] == 0:
+ del(texture_transform["rotation"])
+
+ return texture_transform
+
+
def get_image_uri(export_settings, blender_image):
"""Return the final URI depending on a file path."""
file_format = get_image_format(export_settings, blender_image)