mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-07-22 02:00:59 -05:00
fix, comment
This commit is contained in:
parent
0dc81ba7a1
commit
b5f2ce60ff
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user