From 864415f614fc31e44fff8d6f42a23abfa9ae0b6a Mon Sep 17 00:00:00 2001 From: ousttrue Date: Wed, 28 Apr 2021 19:15:21 +0900 Subject: [PATCH] impl DstDrawModelCoords --- .../VRM10RotationConstraintEditor.cs | 5 ++++- .../Constraint/VRM10RotationConstraint.cs | 21 +++++++++++++++---- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/Assets/VRM10/Editor/Components/Constraint/VRM10RotationConstraintEditor.cs b/Assets/VRM10/Editor/Components/Constraint/VRM10RotationConstraintEditor.cs index 605e000a9..f12f39e1d 100644 --- a/Assets/VRM10/Editor/Components/Constraint/VRM10RotationConstraintEditor.cs +++ b/Assets/VRM10/Editor/Components/Constraint/VRM10RotationConstraintEditor.cs @@ -59,7 +59,10 @@ namespace UniVRM10 void DstDrawModelCoords() { + var s = m_target.transform.lossyScale.x; + // init + Coords.Write(m_target.GetDstModelCoords(), 0.2f / s); } void DstDrawLocalCoords() @@ -67,7 +70,7 @@ namespace UniVRM10 var s = m_target.transform.lossyScale.x; // init - Coords.Write(m_target.GetDstLocalInit(), 0.2f / s); + Coords.Write(m_target.GetDstLocalCoords(), 0.2f / s); } #endregion diff --git a/Assets/VRM10/Runtime/Components/Constraint/VRM10RotationConstraint.cs b/Assets/VRM10/Runtime/Components/Constraint/VRM10RotationConstraint.cs index f2e507821..6aea64770 100644 --- a/Assets/VRM10/Runtime/Components/Constraint/VRM10RotationConstraint.cs +++ b/Assets/VRM10/Runtime/Components/Constraint/VRM10RotationConstraint.cs @@ -41,15 +41,19 @@ namespace UniVRM10 /// public Matrix4x4 GetSourceModelCoords() { + Matrix4x4 m = Matrix4x4.identity; if (Source != null) { if (ModelRoot != null) { - return ModelRoot.localToWorldMatrix * Matrix4x4.Translate(Source.position); + m = Matrix4x4.Rotate(ModelRoot.rotation); } } - - return Matrix4x4.identity; + if (Source != null) + { + m *= Matrix4x4.Translate(Source.position); + } + return m; } /// @@ -86,7 +90,16 @@ namespace UniVRM10 } ConstraintDestination m_dst; - public Matrix4x4 GetDstLocalInit() + public Matrix4x4 GetDstModelCoords() + { + Matrix4x4 m = Matrix4x4.identity; + if (ModelRoot != null) + { + m = Matrix4x4.Rotate(ModelRoot.rotation); + } + return m * Matrix4x4.Translate(transform.position); + } + public Matrix4x4 GetDstLocalCoords() { if (m_src != null) {