diff --git a/Assets/VRM10/Editor/GeneratorMenu.cs b/Assets/VRM10/Editor/GeneratorMenu.cs index f1c57b7d3..1b4294680 100644 --- a/Assets/VRM10/Editor/GeneratorMenu.cs +++ b/Assets/VRM10/Editor/GeneratorMenu.cs @@ -47,6 +47,8 @@ namespace UniVRM10 } } + const string SPEC_DIR = "vrm-specification/specification"; + static void Run(bool debug) { var projectRoot = new DirectoryInfo(Path.GetFullPath(Path.Combine(Application.dataPath, "../"))); @@ -57,32 +59,32 @@ namespace UniVRM10 { // VRMC_hdr_emissiveMultiplier new GenerateInfo( - "vrm-specification/specification/VRMC_materials_hdr_emissiveMultiplier-1.0_draft/schema/VRMC_materials_hdr_emissiveMultiplier.json", + $"{SPEC_DIR}/VRMC_materials_hdr_emissiveMultiplier-1.0/schema/VRMC_materials_hdr_emissiveMultiplier.json", "Assets/UniGLTF/Runtime/UniGLTF/Format/ExtensionsAndExtras/EmissiveMultiplier" ), // VRMC_vrm new GenerateInfo( - "vrm-specification/specification/VRMC_vrm-1.0_draft/schema/VRMC_vrm.schema.json", + $"{SPEC_DIR}/VRMC_vrm-1.0-beta/schema/VRMC_vrm.schema.json", "Assets/VRM10/Runtime/Format/Vrm" ), // VRMC_materials_mtoon new GenerateInfo( - "vrm-specification/specification/VRMC_materials_mtoon-1.0_draft/schema/VRMC_materials_mtoon.schema.json", + $"{SPEC_DIR}/VRMC_materials_mtoon-1.0-beta/schema/VRMC_materials_mtoon.schema.json", "Assets/VRMShaders/VRM10/Format/Runtime/MaterialsMToon", "Assets/VRM10/Runtime/Format/MaterialsMToon" ), // VRMC_springBone new GenerateInfo( - "vrm-specification/specification/VRMC_springBone-1.0_draft/schema/VRMC_springBone.schema.json", + $"{SPEC_DIR}/VRMC_springBone-1.0-beta/schema/VRMC_springBone.schema.json", "Assets/VRM10/Runtime/Format/SpringBone" ), // VRMC_node_constraint new GenerateInfo( - "vrm-specification/specification/VRMC_node_constraint-1.0_draft/schema/VRMC_node_constraint.schema.json", + $"{SPEC_DIR}/VRMC_node_constraint-1.0_draft/schema/VRMC_node_constraint.schema.json", "Assets/VRM10/Runtime/Format/Constraints" ), }; diff --git a/Assets/VRM10/Runtime/Format/MaterialsMToon/Deserializer.g.cs b/Assets/VRM10/Runtime/Format/MaterialsMToon/Deserializer.g.cs index 55d07b1d5..6130bfe00 100644 --- a/Assets/VRM10/Runtime/Format/MaterialsMToon/Deserializer.g.cs +++ b/Assets/VRM10/Runtime/Format/MaterialsMToon/Deserializer.g.cs @@ -87,8 +87,13 @@ public static VRMC_materials_mtoon Deserialize(JsonNode parsed) continue; } - if(key=="giIntensityFactor"){ - value.GiIntensityFactor = kv.Value.GetSingle(); + if(key=="giEqualizationFactor"){ + value.GiEqualizationFactor = kv.Value.GetSingle(); + continue; + } + + if(key=="matcapFactor"){ + value.MatcapFactor = Deserialize_MatcapFactor(kv.Value); continue; } @@ -251,6 +256,17 @@ public static ShadingShiftTextureInfo Deserialize_ShadingShiftTexture(JsonNode p return value; } +public static float[] Deserialize_MatcapFactor(JsonNode parsed) +{ + var value = new float[parsed.GetArrayCount()]; + int i=0; + foreach(var x in parsed.ArrayItems()) + { + value[i++] = x.GetSingle(); + } + return value; +} + public static TextureInfo Deserialize_MatcapTexture(JsonNode parsed) { var value = new TextureInfo(); diff --git a/Assets/VRM10/Runtime/Format/MaterialsMToon/Serializer.g.cs b/Assets/VRM10/Runtime/Format/MaterialsMToon/Serializer.g.cs index f1e087dc6..48bf768c8 100644 --- a/Assets/VRM10/Runtime/Format/MaterialsMToon/Serializer.g.cs +++ b/Assets/VRM10/Runtime/Format/MaterialsMToon/Serializer.g.cs @@ -83,9 +83,14 @@ public static void Serialize(JsonFormatter f, VRMC_materials_mtoon value) f.Value(value.ShadingToonyFactor.GetValueOrDefault()); } - if(value.GiIntensityFactor.HasValue){ - f.Key("giIntensityFactor"); - f.Value(value.GiIntensityFactor.GetValueOrDefault()); + if(value.GiEqualizationFactor.HasValue){ + f.Key("giEqualizationFactor"); + f.Value(value.GiEqualizationFactor.GetValueOrDefault()); + } + + if(value.MatcapFactor!=null&&value.MatcapFactor.Count()>=3){ + f.Key("matcapFactor"); + Serialize_MatcapFactor(f, value.MatcapFactor); } if(value.MatcapTexture!=null){ @@ -239,6 +244,18 @@ public static void Serialize_ShadingShiftTexture(JsonFormatter f, ShadingShiftTe f.EndMap(); } +public static void Serialize_MatcapFactor(JsonFormatter f, float[] value) +{ + f.BeginList(); + + foreach(var item in value) + { + f.Value(item); + + } + f.EndList(); +} + public static void Serialize_MatcapTexture(JsonFormatter f, TextureInfo value) { f.BeginMap(); diff --git a/Assets/VRM10/Runtime/IO/Material/Vrm10MToonMaterialExporter.cs b/Assets/VRM10/Runtime/IO/Material/Vrm10MToonMaterialExporter.cs index c0a9eb9c6..59fe122e3 100644 --- a/Assets/VRM10/Runtime/IO/Material/Vrm10MToonMaterialExporter.cs +++ b/Assets/VRM10/Runtime/IO/Material/Vrm10MToonMaterialExporter.cs @@ -84,7 +84,7 @@ namespace UniVRM10 // GI // TODO: update schema - mtoon.GiIntensityFactor = context.GiEqualizationFactor; + mtoon.GiEqualizationFactor = context.GiEqualizationFactor; // Emission dst.emissiveFactor = context.EmissiveFactorLinear.ToFloat3(ColorSpace.Linear, ColorSpace.Linear); diff --git a/Assets/VRM10/Runtime/IO/Material/Vrm10MToonMaterialImporter.cs b/Assets/VRM10/Runtime/IO/Material/Vrm10MToonMaterialImporter.cs index 7eb8fd58b..7b4b1d8ab 100644 --- a/Assets/VRM10/Runtime/IO/Material/Vrm10MToonMaterialImporter.cs +++ b/Assets/VRM10/Runtime/IO/Material/Vrm10MToonMaterialImporter.cs @@ -161,7 +161,7 @@ namespace UniVRM10 } // GI - var giEqualization = mToon?.GiIntensityFactor; + var giEqualization = mToon?.GiEqualizationFactor; if (giEqualization.HasValue) { // TODO: Update schema diff --git a/Assets/VRM10/Runtime/Migration/MigrationMToon.cs b/Assets/VRM10/Runtime/Migration/MigrationMToon.cs index 8788d7fca..b719592e4 100644 --- a/Assets/VRM10/Runtime/Migration/MigrationMToon.cs +++ b/Assets/VRM10/Runtime/Migration/MigrationMToon.cs @@ -463,7 +463,7 @@ namespace UniVRM10 ); // GI - dst.GiIntensityFactor = MToon10Migrator.MigrateToGiEqualization(mtoon.Definition.Lighting.LightingInfluence.GiIntensityValue); + dst.GiEqualizationFactor = MToon10Migrator.MigrateToGiEqualization(mtoon.Definition.Lighting.LightingInfluence.GiIntensityValue); // Emission gltfMaterial.emissiveFactor = mtoon.Definition.Emission.EmissionColor.ToFloat3(ColorSpace.Linear, ColorSpace.Linear); diff --git a/Assets/VRMShaders/VRM10/Format/Runtime/MaterialsMToon/Format.g.cs b/Assets/VRMShaders/VRM10/Format/Runtime/MaterialsMToon/Format.g.cs index 4efe595ba..709f0d64f 100644 --- a/Assets/VRMShaders/VRM10/Format/Runtime/MaterialsMToon/Format.g.cs +++ b/Assets/VRMShaders/VRM10/Format/Runtime/MaterialsMToon/Format.g.cs @@ -77,7 +77,9 @@ namespace UniGLTF.Extensions.VRMC_materials_mtoon public float? ShadingToonyFactor; - public float? GiIntensityFactor; + public float? GiEqualizationFactor; + + public float[] MatcapFactor; // MatCap public TextureInfo MatcapTexture; diff --git a/vrm-specification b/vrm-specification index a099e8de0..04e3bb252 160000 --- a/vrm-specification +++ b/vrm-specification @@ -1 +1 @@ -Subproject commit a099e8de0158cb200bf87ba343709ac60dcf85e3 +Subproject commit 04e3bb25258670c2460c554dfe3db2e05543b87c