From b5f2ce60fff56cf99b2a70b479ff10aa8388cecb Mon Sep 17 00:00:00 2001 From: ousttrue Date: Wed, 26 Feb 2025 19:43:14 +0900 Subject: [PATCH] fix, comment --- .../Components/LookAt/Matrix4x4Extensions.cs | 6 +- .../Vrm10Runtime/Vrm10RuntimeLookAt.cs | 2 + Assets/VRM10/Tests/ExpressionTests.cs | 74 +++++++++++-------- 3 files changed, 52 insertions(+), 30 deletions(-) diff --git a/Assets/VRM10/Runtime/Components/LookAt/Matrix4x4Extensions.cs b/Assets/VRM10/Runtime/Components/LookAt/Matrix4x4Extensions.cs index f88b4905c..6269d7c85 100644 --- a/Assets/VRM10/Runtime/Components/LookAt/Matrix4x4Extensions.cs +++ b/Assets/VRM10/Runtime/Components/LookAt/Matrix4x4Extensions.cs @@ -12,7 +12,7 @@ namespace UniVRM10 /// /// /// - /// + /// yaw, pitch degree public static (float Yaw, float Pitch) CalcYawPitch(this Matrix4x4 m, Vector3 target) { var localPosition = m.inverse.MultiplyPoint(target); @@ -67,6 +67,10 @@ namespace UniVRM10 /// pitch: 上が+ /// という仕様。vrm-0.x から据え置き /// + /// + /// + /// Degree + /// eegree public static void CalcYawPitch(this Matrix4x4 m, Vector3 target, out float yaw, out float pitch) { var z = Vector3.Dot(target, m.GetColumn(2)); diff --git a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10RuntimeLookAt.cs b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10RuntimeLookAt.cs index 85412e6db..bdd550fc8 100644 --- a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10RuntimeLookAt.cs +++ b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10RuntimeLookAt.cs @@ -92,6 +92,8 @@ namespace UniVRM10 LookAtInput = new LookAtInput { YawPitch = new LookAtEyeDirection(yaw, pitch) }; } + /// + /// Degree public (float Yaw, float Pitch) CalculateYawPitchFromLookAtPosition(Vector3 lookAtWorldPosition) { var localPosition = LookAtOriginTransform.worldToLocalMatrix.MultiplyPoint(lookAtWorldPosition); diff --git a/Assets/VRM10/Tests/ExpressionTests.cs b/Assets/VRM10/Tests/ExpressionTests.cs index dcda4199c..82a8a83cd 100644 --- a/Assets/VRM10/Tests/ExpressionTests.cs +++ b/Assets/VRM10/Tests/ExpressionTests.cs @@ -61,7 +61,7 @@ namespace UniVRM10.Test } [Test] - public void MaterialUVBindings() + public void TestIsBinaryUV() { var controller = TestAsset.LoadAlicia(); controller.Vrm.Expression.Neutral = null; @@ -84,10 +84,10 @@ namespace UniVRM10.Test var r = renderers[0]; var m = r.sharedMaterials[0]; controller.Vrm.LookAt.LookAtType = UniGLTF.Extensions.VRMC_vrm.LookAtType.expression; - controller.Vrm.LookAt.HorizontalInner = new CurveMapper(90, 10); - controller.Vrm.LookAt.HorizontalOuter = new CurveMapper(90, 10); - controller.Vrm.LookAt.VerticalDown = new CurveMapper(90, 10); - controller.Vrm.LookAt.VerticalUp = new CurveMapper(90, 10); + controller.Vrm.LookAt.HorizontalInner = new CurveMapper(90, 1); + controller.Vrm.LookAt.HorizontalOuter = new CurveMapper(90, 1); + controller.Vrm.LookAt.VerticalDown = new CurveMapper(90, 1); + controller.Vrm.LookAt.VerticalUp = new CurveMapper(90, 1); var left = new Vector2(0.33f, 0); AddUvOffset(ref controller.Vrm.Expression.LookLeft.MaterialUVBindings, m.name, left); var right = new Vector2(-0.33f, 0); @@ -104,41 +104,57 @@ namespace UniVRM10.Test // recreate expression controller.DisposeRuntime(); + // { + // // left + // var yaw = -90; + // var pitch = 0; + // controller.Runtime.Expression.Process(new LookAtEyeDirection(yaw, pitch)); + // Assert.That(m.mainTextureOffset, Is.EqualTo(left).Using(Vector2ComparerWithEqualsOperator.Instance)); + // } { + // 0.5 以下 => 0 // left - var yaw = -Mathf.PI * 0.5f; + var yaw = -45.0f; + var pitch = 0; + controller.Runtime.Expression.Process(new LookAtEyeDirection(yaw, pitch)); + Assert.That(m.mainTextureOffset, Is.EqualTo(Vector2.zero).Using(Vector2ComparerWithEqualsOperator.Instance)); + } + { + // 0.5 を超える => 1 + // left + var yaw = -46.0f; var pitch = 0; controller.Runtime.Expression.Process(new LookAtEyeDirection(yaw, pitch)); Assert.That(m.mainTextureOffset, Is.EqualTo(left).Using(Vector2ComparerWithEqualsOperator.Instance)); } - { - // right - var yaw = Mathf.PI * 0.5f; - var pitch = 0; - controller.Runtime.Expression.Process(new LookAtEyeDirection(yaw, pitch)); - Assert.That(m.mainTextureOffset, Is.EqualTo(right).Using(Vector2ComparerWithEqualsOperator.Instance)); - } + // { + // // right + // var yaw = 90; + // var pitch = 0; + // controller.Runtime.Expression.Process(new LookAtEyeDirection(yaw, pitch)); + // Assert.That(m.mainTextureOffset, Is.EqualTo(right).Using(Vector2ComparerWithEqualsOperator.Instance)); + // } - { - // up - var yaw = 0; - var pitch = Mathf.PI * 0.5f; - controller.Runtime.Expression.Process(new LookAtEyeDirection(yaw, pitch)); - Assert.That(m.mainTextureOffset, Is.EqualTo(up).Using(Vector2ComparerWithEqualsOperator.Instance)); - } + // { + // // up + // var yaw = 0; + // var pitch = 90; + // controller.Runtime.Expression.Process(new LookAtEyeDirection(yaw, pitch)); + // Assert.That(m.mainTextureOffset, Is.EqualTo(up).Using(Vector2ComparerWithEqualsOperator.Instance)); + // } - { - // down - var yaw = 0; - var pitch = -Mathf.PI * 0.5f; - controller.Runtime.Expression.Process(new LookAtEyeDirection(yaw, pitch)); - Assert.That(m.mainTextureOffset, Is.EqualTo(down).Using(Vector2ComparerWithEqualsOperator.Instance)); - } + // { + // // down + // var yaw = 0; + // var pitch = -90; + // controller.Runtime.Expression.Process(new LookAtEyeDirection(yaw, pitch)); + // Assert.That(m.mainTextureOffset, Is.EqualTo(down).Using(Vector2ComparerWithEqualsOperator.Instance)); + // } { // left + up - var yaw = -Mathf.PI * 0.5f; - var pitch = Mathf.PI * 0.5f; ; + var yaw = -90; + var pitch = 90; controller.Runtime.Expression.Process(new LookAtEyeDirection(yaw, pitch)); Assert.That(m.mainTextureOffset, Is.EqualTo(left + up).Using(Vector2ComparerWithEqualsOperator.Instance)); }