From 22dbe1576d332a4040d7cc7e56f298c60b79fa92 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Thu, 24 Feb 2022 15:42:57 +0900 Subject: [PATCH] System.Numerics.Matrix4x4 to UnityEngine.Matrix4x4 --- .../Runtime/Extensions/UnityExtensions.cs | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/Assets/UniGLTF/Runtime/Extensions/UnityExtensions.cs b/Assets/UniGLTF/Runtime/Extensions/UnityExtensions.cs index 456643548..dff50b2b4 100644 --- a/Assets/UniGLTF/Runtime/Extensions/UnityExtensions.cs +++ b/Assets/UniGLTF/Runtime/Extensions/UnityExtensions.cs @@ -85,9 +85,7 @@ namespace UniGLTF public static (Vector3, Quaternion, Vector3) Decompose(this Matrix4x4 m) { - var s = m.ExtractScale(); - var mm = Matrix4x4.Scale(new Vector3(1.0f / s.x, 1.0f / s.y, 1.0f / s.z)) * m; - return (mm.ExtractPosition(), mm.ExtractRotation(), s); + return (m.ExtractPosition(), m.ExtractRotation(), m.ExtractScale()); } public static Vector2 UVVerticalFlip(this Vector2 src) @@ -201,20 +199,9 @@ namespace UniGLTF return m; } - // https://forum.unity.com/threads/how-to-assign-matrix4x4-to-transform.121966/ public static Quaternion ExtractRotation(this Matrix4x4 matrix) { - Vector3 forward; - forward.x = matrix.m02; - forward.y = matrix.m12; - forward.z = matrix.m22; - - Vector3 upwards; - upwards.x = matrix.m01; - upwards.y = matrix.m11; - upwards.z = matrix.m21; - - return Quaternion.LookRotation(forward, upwards); + return matrix.rotation; } public static Vector3 ExtractPosition(this Matrix4x4 matrix)