From 877d611216abaaa8e2ef74f906d34b127d5afbb2 Mon Sep 17 00:00:00 2001 From: Masataka SUMI Date: Fri, 7 May 2021 21:19:38 +0900 Subject: [PATCH] GetTextureOffsetAndScale can get from transform ext object. --- .../IO/MaterialIO/GltfMaterialImporter.cs | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/GltfMaterialImporter.cs b/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/GltfMaterialImporter.cs index b038d6180..0ca115687 100644 --- a/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/GltfMaterialImporter.cs +++ b/Assets/UniGLTF/Runtime/UniGLTF/IO/MaterialIO/GltfMaterialImporter.cs @@ -53,21 +53,34 @@ namespace UniGLTF public static (Vector2, Vector2) GetTextureOffsetAndScale(glTFTextureInfo textureInfo) { - Vector2 offset = new Vector2(0, 0); - Vector2 scale = new Vector2(1, 1); - if (glTF_KHR_texture_transform.TryGet(textureInfo, out glTF_KHR_texture_transform textureTransform)) + if (glTF_KHR_texture_transform.TryGet(textureInfo, out var textureTransform)) + { + return GetTextureOffsetAndScale(textureTransform); + } + return (new Vector2(0, 0), new Vector2(1, 1)); + } + + public static (Vector2, Vector2) GetTextureOffsetAndScale(glTF_KHR_texture_transform textureTransform) + { + var offset = new Vector2(0, 0); + var scale = new Vector2(1, 1); + + if (textureTransform != null) { if (textureTransform.offset != null && textureTransform.offset.Length == 2) { offset = new Vector2(textureTransform.offset[0], textureTransform.offset[1]); } + if (textureTransform.scale != null && textureTransform.scale.Length == 2) { scale = new Vector2(textureTransform.scale[0], textureTransform.scale[1]); } - - offset.y = (offset.y + scale.y - 1.0f) * -1.0f; + + // Coordinate Conversion: GL (top-left origin) to DX (bottom-left origin) + offset.y = 1.0f - offset.y - scale.y; } + return (offset, scale); }