update JsonSchema to VRM-1.0beta

This commit is contained in:
ousttrue
2021-08-06 16:27:50 +09:00
parent 5010c5384a
commit cc89cb104c
8 changed files with 52 additions and 15 deletions

View File

@@ -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"
),
};

View File

@@ -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();

View File

@@ -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();

View File

@@ -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);

View File

@@ -161,7 +161,7 @@ namespace UniVRM10
}
// GI
var giEqualization = mToon?.GiIntensityFactor;
var giEqualization = mToon?.GiEqualizationFactor;
if (giEqualization.HasValue)
{
// TODO: Update schema

View File

@@ -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);

View File

@@ -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;