fix, comment

This commit is contained in:
ousttrue 2025-02-26 19:43:14 +09:00
parent 0dc81ba7a1
commit b5f2ce60ff
3 changed files with 52 additions and 30 deletions

View File

@ -12,7 +12,7 @@ namespace UniVRM10
/// <param name="Yaw"></param>
/// <param name="m"></param>
/// <param name="target"></param>
/// <returns></returns>
/// <returns>yaw, pitch degree</returns>
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 から据え置き
/// </summary>
/// <param name="m"></param>
/// <param name="target"></param>
/// <param name="yaw">Degree</param>
/// <param name="pitch">eegree</param>
public static void CalcYawPitch(this Matrix4x4 m, Vector3 target, out float yaw, out float pitch)
{
var z = Vector3.Dot(target, m.GetColumn(2));

View File

@ -92,6 +92,8 @@ namespace UniVRM10
LookAtInput = new LookAtInput { YawPitch = new LookAtEyeDirection(yaw, pitch) };
}
/// <param name="lookAtWorldPosition"></param>
/// <returns>Degree</returns>
public (float Yaw, float Pitch) CalculateYawPitchFromLookAtPosition(Vector3 lookAtWorldPosition)
{
var localPosition = LookAtOriginTransform.worldToLocalMatrix.MultiplyPoint(lookAtWorldPosition);

View File

@ -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));
}