From 405253e6f7f37ec0de4b91bbd2648413893955d2 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Tue, 24 Nov 2020 15:32:50 +0900 Subject: [PATCH] fix MaterialTests --- .../VRM/UniGLTF/Editor/Tests/MaterialTests.cs | 69 ++++++++++++++++--- .../ExtensionsAndExtras/gltfExtension.cs | 6 +- .../Scripts/Format/VRMImporterContext.cs | 3 - 3 files changed, 61 insertions(+), 17 deletions(-) diff --git a/Assets/VRM/UniGLTF/Editor/Tests/MaterialTests.cs b/Assets/VRM/UniGLTF/Editor/Tests/MaterialTests.cs index b2575fbdd..6f8a83353 100644 --- a/Assets/VRM/UniGLTF/Editor/Tests/MaterialTests.cs +++ b/Assets/VRM/UniGLTF/Editor/Tests/MaterialTests.cs @@ -1,7 +1,8 @@ using System.Collections.Generic; using NUnit.Framework; using UnityEngine; - +using UniJSON; +using System.Linq; namespace UniGLTF { @@ -29,7 +30,7 @@ namespace UniGLTF var materialExporter = new MaterialExporter(); var gltfMaterial = materialExporter.ExportMaterial(srcMaterial, textureManager); - gltfMaterial.pbrMetallicRoughness.baseColorTexture.extensions.Parse(); + gltfMaterial.pbrMetallicRoughness.baseColorTexture.extensions = gltfMaterial.pbrMetallicRoughness.baseColorTexture.extensions.Parse(); var shaderStore = new ShaderStore(null); var materialImporter = new MaterialImporter(shaderStore, (int index) => { return null; }); @@ -41,6 +42,52 @@ namespace UniGLTF Assert.AreEqual(dstMaterial.mainTextureScale.y, scale.y, 0.001f); } + [Test] + public void glTF_KHR_materials_unlit_Test() + { + { + var value = "{}".ParseAsJson(); + Assert.AreEqual(value.Value.ValueType, ValueNodeType.Object); + Assert.AreEqual(0, value.GetObjectCount()); + var list = value.ObjectItems().ToArray(); + Assert.AreEqual(0, list.Length); + } + + { + var value = "{\"unlit\":{}}".ParseAsJson(); + Assert.AreEqual(value.Value.ValueType, ValueNodeType.Object); + Assert.AreEqual(1, value.GetObjectCount()); + var list = value.ObjectItems().ToArray(); + Assert.AreEqual(1, list.Length); + Assert.AreEqual("unlit", list[0].Key.GetString()); + Assert.AreEqual(0, list[0].Value.GetObjectCount()); + } + + { + var extension = glTF_KHR_materials_unlit.Serialize().Parse(); + var list = extension.ObjectItems().ToArray(); + Assert.AreEqual(1, list.Length); + Assert.AreEqual(glTF_KHR_materials_unlit.ExtensionNameUtf8, list[0].Key.GetUtf8String()); + Assert.AreEqual(0, list[0].Value.GetObjectCount()); + + var material = new glTFMaterial + { + alphaMode = "OPAQUE", + pbrMetallicRoughness = new glTFPbrMetallicRoughness + { + baseColorFactor = new float[] { 1, 0, 0, 1 }, + }, + extensions = extension, + }; + + Assert.IsTrue(glTF_KHR_materials_unlit.IsEnable(material)); + + var shaderStore = new ShaderStore(null); + var shader = shaderStore.GetShader(material); + Assert.AreEqual("UniGLTF/UniUnlit", shader.name); + } + } + [Test] public void UnlitShaderImportTest() { @@ -55,7 +102,7 @@ namespace UniGLTF { baseColorFactor = new float[] { 1, 0, 0, 1 }, }, - extensions = glTF_KHR_materials_unlit.Serialize(), + extensions = glTF_KHR_materials_unlit.Serialize().Parse(), }); Assert.AreEqual("UniGLTF/UniUnlit", shader.name); } @@ -69,7 +116,7 @@ namespace UniGLTF { baseColorTexture = new glTFMaterialBaseColorTextureInfo(), }, - extensions = glTF_KHR_materials_unlit.Serialize(), + extensions = glTF_KHR_materials_unlit.Serialize().Parse(), }); Assert.AreEqual("UniGLTF/UniUnlit", shader.name); } @@ -84,7 +131,7 @@ namespace UniGLTF baseColorFactor = new float[] { 1, 0, 0, 1 }, baseColorTexture = new glTFMaterialBaseColorTextureInfo(), }, - extensions = glTF_KHR_materials_unlit.Serialize(), + extensions = glTF_KHR_materials_unlit.Serialize().Parse(), }); Assert.AreEqual("UniGLTF/UniUnlit", shader.name); } @@ -98,7 +145,7 @@ namespace UniGLTF { baseColorFactor = new float[] { 1, 0, 0, 1 }, }, - extensions = glTF_KHR_materials_unlit.Serialize(), + extensions = glTF_KHR_materials_unlit.Serialize().Parse(), }); Assert.AreEqual("UniGLTF/UniUnlit", shader.name); } @@ -112,7 +159,7 @@ namespace UniGLTF { baseColorTexture = new glTFMaterialBaseColorTextureInfo(), }, - extensions = glTF_KHR_materials_unlit.Serialize(), + extensions = glTF_KHR_materials_unlit.Serialize().Parse(), }); Assert.AreEqual("UniGLTF/UniUnlit", shader.name); } @@ -127,7 +174,7 @@ namespace UniGLTF baseColorFactor = new float[] { 1, 0, 0, 1 }, baseColorTexture = new glTFMaterialBaseColorTextureInfo(), }, - extensions = glTF_KHR_materials_unlit.Serialize(), + extensions = glTF_KHR_materials_unlit.Serialize().Parse(), }); Assert.AreEqual("UniGLTF/UniUnlit", shader.name); } @@ -141,7 +188,7 @@ namespace UniGLTF { baseColorTexture = new glTFMaterialBaseColorTextureInfo(), }, - extensions = glTF_KHR_materials_unlit.Serialize(), + extensions = glTF_KHR_materials_unlit.Serialize().Parse(), }); Assert.AreEqual("UniGLTF/UniUnlit", shader.name); } @@ -156,7 +203,7 @@ namespace UniGLTF baseColorFactor = new float[] { 1, 0, 0, 1 }, baseColorTexture = new glTFMaterialBaseColorTextureInfo(), }, - extensions = glTF_KHR_materials_unlit.Serialize(), + extensions = glTF_KHR_materials_unlit.Serialize().Parse(), }); Assert.AreEqual("UniGLTF/UniUnlit", shader.name); } @@ -165,7 +212,7 @@ namespace UniGLTF // default var shader = shaderStore.GetShader(new glTFMaterial { - extensions = glTF_KHR_materials_unlit.Serialize(), + extensions = glTF_KHR_materials_unlit.Serialize().Parse(), }); Assert.AreEqual("UniGLTF/UniUnlit", shader.name); } diff --git a/Assets/VRM/UniGLTF/Scripts/Format/ExtensionsAndExtras/gltfExtension.cs b/Assets/VRM/UniGLTF/Scripts/Format/ExtensionsAndExtras/gltfExtension.cs index 075de1ce1..f315ffd28 100644 --- a/Assets/VRM/UniGLTF/Scripts/Format/ExtensionsAndExtras/gltfExtension.cs +++ b/Assets/VRM/UniGLTF/Scripts/Format/ExtensionsAndExtras/gltfExtension.cs @@ -28,7 +28,7 @@ namespace UniGLTF #endregion #region for Import - ListTreeNode m_json; + readonly ListTreeNode m_json; public glTFExtension(ListTreeNode json) { m_json = json; @@ -51,7 +51,7 @@ namespace UniGLTF /// /// parse exported value /// - public void Parse() + public glTFExtension Parse() { var f = new JsonFormatter(); f.BeginMap(); @@ -64,7 +64,7 @@ namespace UniGLTF var b = f.GetStoreBytes(); var json = Encoding.UTF8.GetString(b.Array, b.Offset, b.Count); - m_json = json.ParseAsJson(); + return new glTFExtension(json.ParseAsJson()); } } diff --git a/Assets/VRM/UniVRM/Scripts/Format/VRMImporterContext.cs b/Assets/VRM/UniVRM/Scripts/Format/VRMImporterContext.cs index ad2ce3969..52a1d16d8 100644 --- a/Assets/VRM/UniVRM/Scripts/Format/VRMImporterContext.cs +++ b/Assets/VRM/UniVRM/Scripts/Format/VRMImporterContext.cs @@ -11,9 +11,6 @@ namespace VRM { public class VRMImporterContext : ImporterContext { - const string HUMANOID_KEY = "humanoid"; - const string MATERIAL_KEY = "materialProperties"; - public VRM.glTF_VRM_extensions VRM { get; private set; } public VRMImporterContext()