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)
{