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>2019-02-22 20:34:02 +0300
committerJulien Duroure <julien.duroure@gmail.com>2019-02-22 20:34:02 +0300
commit14c202c04cd225192f23d1ea61d5b1dd8c76e266 (patch)
treea3b840f32f097cdd5e7d0ed1a41a4f1207ecb4c3 /io_scene_gltf2/blender/com
parent26330ab14347cef00d67e2e4335c9609082e227b (diff)
glTF exporter: Fix texture transform conversion
Diffstat (limited to 'io_scene_gltf2/blender/com')
-rwxr-xr-xio_scene_gltf2/blender/com/gltf2_blender_conversion.py29
1 files changed, 22 insertions, 7 deletions
diff --git a/io_scene_gltf2/blender/com/gltf2_blender_conversion.py b/io_scene_gltf2/blender/com/gltf2_blender_conversion.py
index 7adb3c9b..81340b3d 100755
--- a/io_scene_gltf2/blender/com/gltf2_blender_conversion.py
+++ b/io_scene_gltf2/blender/com/gltf2_blender_conversion.py
@@ -47,22 +47,37 @@ def correction_rotation():
# and lamps has no vertices :)
return Quaternion((sqrt(2)/2, -sqrt(2)/2, 0.0, 0.0)).to_matrix().to_4x4()
-def convert_texture_transform(texture_transform):
+def texture_transform_blender_to_gltf(mapping_transform):
"""
- Converts a KHR_texture_transform object in one UV space (glTF or Blender)
- into the equivalent in the other UV space. The returned transform is the
- same as switching UV spaces (with u,v -> u,1-v), applying texture_transform,
- then switching back.
+ Converts the offset/rotation/scale from a Mapping node applied in Blender's
+ UV space to the equivalent KHR_texture_transform.
+ """
+ offset = mapping_transform.get('offset', [0, 0])
+ rotation = mapping_transform.get('rotation', 0)
+ scale = mapping_transform.get('scale', [1, 1])
+ return {
+ 'offset': [
+ offset[0] - scale[1] * sin(rotation),
+ 1 - offset[1] - scale[1] * cos(rotation),
+ ],
+ 'rotation': rotation,
+ 'scale': [scale[0], scale[1]],
+ }
+
+def texture_transform_gltf_to_blender(texture_transform):
+ """
+ Converts a KHR_texture_transform into the equivalent offset/rotation/scale
+ for a Mapping node applied in Blender's UV space.
"""
offset = texture_transform.get('offset', [0, 0])
rotation = texture_transform.get('rotation', 0)
scale = texture_transform.get('scale', [1, 1])
return {
'offset': [
- offset[0] - scale[1] * sin(rotation),
+ offset[0] + scale[1] * sin(rotation),
1 - offset[1] - scale[1] * cos(rotation),
],
- 'rotation': -rotation,
+ 'rotation': rotation,
'scale': [scale[0], scale[1]],
}