From a332c0aba7d310ade9d69ac2077e9511df96ce90 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Tue, 8 Jun 2021 13:25:02 +0900 Subject: [PATCH 1/3] TextureEnumerationInUnknownShader --- Assets/VRM/Tests/VRMTextureEnumerateTests.cs | 55 ++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/Assets/VRM/Tests/VRMTextureEnumerateTests.cs b/Assets/VRM/Tests/VRMTextureEnumerateTests.cs index 80a9d80cf..f7d602a61 100644 --- a/Assets/VRM/Tests/VRMTextureEnumerateTests.cs +++ b/Assets/VRM/Tests/VRMTextureEnumerateTests.cs @@ -76,5 +76,60 @@ namespace VRM Assert.AreEqual(1, items.Length); } } + + [Test] + public void TextureEnumerationInUnknownShader() + { + var parser = new GltfParser + { + GLTF = new glTF + { + images = new List + { + new glTFImage{ + mimeType = "image/png", + } + }, + textures = new List + { + new glTFTexture{ + name = "texture0", + source = 0, + } + }, + materials = new List + { + new glTFMaterial{ + pbrMetallicRoughness = new glTFPbrMetallicRoughness{ + baseColorTexture = new glTFMaterialBaseColorTextureInfo{ + index = 0, + } + } + }, + } + } + }; + var vrm = new glTF_VRM_extensions + { + materialProperties = new List + { + new glTF_VRM_Material + { + shader = "UnknownShader", + textureProperties = new Dictionary + { + {"_MainTex", 0}, + } + }, + } + }; + + // 2系統ある? + Assert.IsTrue(VRMMToonMaterialImporter.TryCreateParam(parser, vrm, 0, out VRMShaders.MaterialDescriptor matDesc)); + Assert.AreEqual(1, matDesc.TextureSlots.Count); + + var items = new VrmTextureDescriptorGenerator(parser, vrm).Get().GetEnumerable().ToArray(); + Assert.AreEqual(1, items.Length); + } } } From 90b78b1add3c179e5b6d30333cf698c61f580efc Mon Sep 17 00:00:00 2001 From: ousttrue Date: Tue, 8 Jun 2021 13:25:38 +0900 Subject: [PATCH 2/3] =?UTF-8?q?GltfPbrTextureImporter=20=E3=81=AB=20fallba?= =?UTF-8?q?ck=20=E3=81=99=E3=82=8B=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/VRM/Runtime/IO/VrmTextureDescriptorGenerator.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Assets/VRM/Runtime/IO/VrmTextureDescriptorGenerator.cs b/Assets/VRM/Runtime/IO/VrmTextureDescriptorGenerator.cs index babf987cd..4d1266dff 100644 --- a/Assets/VRM/Runtime/IO/VrmTextureDescriptorGenerator.cs +++ b/Assets/VRM/Runtime/IO/VrmTextureDescriptorGenerator.cs @@ -40,18 +40,18 @@ namespace VRM var material = parser.GLTF.materials[materialIdx]; var vrmMaterial = vrm.materialProperties[materialIdx]; - if (vrmMaterial.shader == MToon.Utils.ShaderName) + if (vrmMaterial.shader == VRM.glTF_VRM_Material.VRM_USE_GLTFSHADER) { - // MToon - foreach (var kv in VRMMToonTextureImporter.EnumerateAllTextures(parser, vrm, materialIdx)) + // Unlit or PBR + foreach (var kv in GltfPbrTextureImporter.EnumerateAllTextures(parser, materialIdx)) { yield return kv; } } else { - // Unlit or PBR - foreach (var kv in GltfPbrTextureImporter.EnumerateAllTextures(parser, materialIdx)) + // MToon など任意の shader + foreach (var kv in VRMMToonTextureImporter.EnumerateAllTextures(parser, vrm, materialIdx)) { yield return kv; } From 5f2afbfbcf19c605c1bba636e53841f4311fba01 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Tue, 8 Jun 2021 13:31:41 +0900 Subject: [PATCH 3/3] =?UTF-8?q?=E5=BE=8C=E6=96=B9=E4=BA=92=E6=8F=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/VRM/Runtime/IO/VRMMToonTextureImporter.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Assets/VRM/Runtime/IO/VRMMToonTextureImporter.cs b/Assets/VRM/Runtime/IO/VRMMToonTextureImporter.cs index c051745c2..22aa29c64 100644 --- a/Assets/VRM/Runtime/IO/VRMMToonTextureImporter.cs +++ b/Assets/VRM/Runtime/IO/VRMMToonTextureImporter.cs @@ -22,7 +22,8 @@ namespace VRM public static bool TryGetTextureFromMaterialProperty(GltfParser parser, glTF_VRM_extensions vrm, int materialIdx, string textureKey, out (SubAssetKey, TextureDescriptor) texture) { var vrmMaterial = vrm.materialProperties[materialIdx]; - if (vrmMaterial.shader == MToon.Utils.ShaderName && vrmMaterial.textureProperties.TryGetValue(textureKey, out var textureIdx)) + // 任意の shader の import を許容する + if (/*vrmMaterial.shader == MToon.Utils.ShaderName &&*/ vrmMaterial.textureProperties.TryGetValue(textureKey, out var textureIdx)) { var (offset, scale) = (new Vector2(0, 0), new Vector2(1, 1)); if (TryGetTextureOffsetAndScale(vrm, materialIdx, textureKey, out var os))