54 lines
2.1 KiB
C#
54 lines
2.1 KiB
C#
using System.IO;
|
|
using System.Linq;
|
|
using NUnit.Framework;
|
|
using UniGLTF;
|
|
using UnityEngine;
|
|
using VRMShaders;
|
|
|
|
namespace UniVRM10
|
|
{
|
|
public class MaterialImporterTests
|
|
{
|
|
static string AliciaPath
|
|
{
|
|
get
|
|
{
|
|
return Path.GetFullPath(Application.dataPath + "/../Tests/Models/Alicia_vrm-0.51/AliciaSolid_vrm-0.51.vrm")
|
|
.Replace("\\", "/");
|
|
}
|
|
}
|
|
|
|
[Test]
|
|
public void MaterialImporterTest()
|
|
{
|
|
var migratedBytes = MigrationVrm.Migrate(File.ReadAllBytes(AliciaPath));
|
|
using (var data = new GlbLowLevelParser(AliciaPath, migratedBytes).Parse())
|
|
{
|
|
|
|
var matDesc = new BuiltInVrm10MaterialDescriptorGenerator().Get(data, 0);
|
|
Assert.AreEqual("Alicia_body", matDesc.Name);
|
|
Assert.AreEqual("VRM10/MToon10", matDesc.Shader.name);
|
|
Assert.AreEqual("Alicia_body", matDesc.TextureSlots["_MainTex"].UnityObjectName);
|
|
Assert.AreEqual("Alicia_body", matDesc.TextureSlots["_ShadeTex"].UnityObjectName);
|
|
|
|
AreColorEqualApproximately(new Color(1, 1, 1, 1), matDesc.Colors["_Color"]);
|
|
ColorUtility.TryParseHtmlString("#FFDDD6", out var shadeColor);
|
|
AreColorEqualApproximately(shadeColor, matDesc.Colors["_ShadeColor"]);
|
|
|
|
Assert.AreEqual(1.0f - 0.1f, matDesc.FloatValues["_GiEqualization"]);
|
|
|
|
var (key, value) = matDesc.EnumerateSubAssetKeyValue().First();
|
|
Assert.AreEqual(new SubAssetKey(typeof(Texture2D), "Alicia_body"), key);
|
|
}
|
|
}
|
|
|
|
private void AreColorEqualApproximately(Color expected, Color actual)
|
|
{
|
|
Assert.AreEqual(Mathf.RoundToInt(expected.r * 255), Mathf.RoundToInt(actual.r * 255));
|
|
Assert.AreEqual(Mathf.RoundToInt(expected.g * 255), Mathf.RoundToInt(actual.g * 255));
|
|
Assert.AreEqual(Mathf.RoundToInt(expected.b * 255), Mathf.RoundToInt(actual.b * 255));
|
|
Assert.AreEqual(Mathf.RoundToInt(expected.a * 255), Mathf.RoundToInt(actual.a * 255));
|
|
}
|
|
}
|
|
}
|