Updated JsonSchema

This commit is contained in:
ousttrue 2018-08-21 23:25:48 +09:00
parent ef69bc0328
commit 87d82fd794
22 changed files with 568 additions and 200 deletions

View File

@ -61,6 +61,41 @@ namespace VRM
return "";
}
static void TraverseItem(JsonNode node, JsonFormatter f, UnityPath dir)
{
var title = GetTitle(node);
if (string.IsNullOrEmpty(title))
{
Traverse(node, f, dir);
}
else
{
// ref
f.BeginMap();
f.Key("$ref");
var fileName = string.Format("{0}.schema.json", title);
f.Value(fileName);
f.EndMap();
// new formatter
{
var subFormatter = new JsonFormatter(4);
subFormatter.BeginMap();
foreach (var _kv in node.ObjectItems)
{
subFormatter.Key(_kv.Key);
Traverse(_kv.Value, subFormatter, dir);
}
subFormatter.EndMap();
var subJson = subFormatter.ToString();
var path = dir.Child(fileName);
File.WriteAllText(path.FullPath, subJson, Encoding.UTF8);
}
}
}
static void Traverse(JsonNode node, JsonFormatter f, UnityPath dir)
{
switch(node.Value.ValueType)
@ -69,7 +104,7 @@ namespace VRM
f.BeginList();
foreach(var x in node.ArrayItems)
{
Traverse(x, f, dir);
TraverseItem(x, f, dir);
}
f.EndList();
break;
@ -81,37 +116,7 @@ namespace VRM
foreach (var kv in node.ObjectItems)
{
f.Key(kv.Key);
var title = GetTitle(kv.Value);
if (string.IsNullOrEmpty(title))
{
Traverse(kv.Value, f, dir);
}
else
{
// ref
f.BeginMap();
f.Key("$ref");
var fileName = string.Format("{0}.schema.json", title);
f.Value(fileName);
f.EndMap();
// new formatter
{
var subFormatter = new JsonFormatter(4);
subFormatter.BeginMap();
foreach (var _kv in kv.Value.ObjectItems)
{
subFormatter.Key(_kv.Key);
Traverse(_kv.Value, subFormatter, dir);
}
subFormatter.EndMap();
var subJson = subFormatter.ToString();
var path = dir.Child(fileName);
File.WriteAllText(path.FullPath, subJson, Encoding.UTF8);
}
}
TraverseItem(kv.Value, f, dir);
}
f.EndMap();
}

View File

@ -38,7 +38,7 @@ VRM extension is for 3d humanoid avatars (and models) in VR applications.
")]
public class glTF_VRM_extensions : JsonSerializableBase
{
[JsonSchema(Description = @"Version of exporter that vrm created. UniVRM-0.41")]
[JsonSchema(Description = @"Version of exporter that vrm created. " + VRMVersion.VRM_VERSION)]
public string exporterVersion = "UniVRM-" + VRMVersion.VERSION;
public glTF_VRM_Meta meta = new glTF_VRM_Meta();

View File

@ -8,6 +8,7 @@ using UniJSON;
namespace VRM
{
[Serializable]
[JsonSchema(Title = "vrm.materialbind")]
public class glTF_VRM_MaterialValueBind : UniGLTF.JsonSerializableBase
{
public string materialName;
@ -23,6 +24,7 @@ namespace VRM
}
[Serializable]
[JsonSchema(Title = "vrm.blendshapebind")]
public class glTF_VRM_BlendShapeBind : UniGLTF.JsonSerializableBase
{
public int mesh = -1;
@ -83,11 +85,37 @@ namespace VRM
}
[Serializable]
[JsonSchema(Title = "vrm.blendshapegroup", Description = "BlendShapeClip of UniVRM")]
public class glTF_VRM_BlendShapeGroup : UniGLTF.JsonSerializableBase
{
[JsonSchema(Description = "Expression name")]
public string name;
[JsonSchema(Description = "Predefined Expression name", EnumValues =new object[] {
"Neutral",
"A",
"I",
"U",
"E",
"O",
"Blink",
"Joy",
"Angry",
"Sorrow",
"Fun",
"LookUp",
"LookDown",
"LookLeft",
"LookRight",
"Blink_L",
"Blink_R",
})]
public string presetName;
[JsonSchema(Description = "Low level blendshape references. ")]
public List<glTF_VRM_BlendShapeBind> binds = new List<glTF_VRM_BlendShapeBind>();
[JsonSchema(Description = "Material animation references.")]
public List<glTF_VRM_MaterialValueBind> materialValues = new List<glTF_VRM_MaterialValueBind>();
protected override void SerializeMembers(GLTFJsonFormatter f)
@ -100,7 +128,7 @@ namespace VRM
}
[Serializable]
[JsonSchema(Title = "vrm.blendshapemaster")]
[JsonSchema(Title = "vrm.blendshapemaster", Description = "BlendShapeAvatar of UniVRM")]
public class glTF_VRM_BlendShapeMaster : UniGLTF.JsonSerializableBase
{
public List<glTF_VRM_BlendShapeGroup> blendShapeGroups = new List<glTF_VRM_BlendShapeGroup>();

View File

@ -8,11 +8,16 @@ using UniJSON;
namespace VRM
{
[Serializable]
[JsonSchema(Title = "vrm.degreemap")]
public class glTF_VRM_DegreeMap : UniGLTF.JsonSerializableBase
{
// time, value, inTangent, outTangent
[JsonSchema(Description = "None linear mapping params. time, value, inTangent, outTangent")]
public float[] curve;
[JsonSchema(Description = "Look at input clamp range degree.")]
public float xRange = 90.0f;
[JsonSchema(Description = "Look at map range degree from xRange.")]
public float yRange = 10.0f;
protected override void SerializeMembers(GLTFJsonFormatter f)
@ -66,13 +71,20 @@ namespace VRM
[JsonSchema(Title = "vrm.firstperson")]
public class glTF_VRM_Firstperson : UniGLTF.JsonSerializableBase
{
[JsonSchema(Description = "Switch to Head bone when model is rendered in first-person view.")]
public int firstPersonBone = -1;
[JsonSchema(Description = "The target headset position in first-person view. Assuming the head bone is offset from the headset.")]
public Vector3 firstPersonBoneOffset;
[JsonSchema(Description = "Switch on / off mesh for display in first-person view, third-person view, or the others.")]
public List<glTF_VRM_MeshAnnotation> meshAnnotations = new List<glTF_VRM_MeshAnnotation>();
// lookat
[JsonSchema(Description = "Eye controller mode.", EnumValues = new object[] {
"Bone",
"BlendShape",
})]
public string lookAtTypeName = "Bone";
public LookAtType lookAtType
{
@ -82,9 +94,17 @@ namespace VRM
}
set { lookAtTypeName = value.ToString(); }
}
[JsonSchema(Description = "Eye controller setting.")]
public glTF_VRM_DegreeMap lookAtHorizontalInner = new glTF_VRM_DegreeMap();
[JsonSchema(Description = "Eye controller setting.")]
public glTF_VRM_DegreeMap lookAtHorizontalOuter = new glTF_VRM_DegreeMap();
[JsonSchema(Description = "Eye controller setting.")]
public glTF_VRM_DegreeMap lookAtVerticalDown = new glTF_VRM_DegreeMap();
[JsonSchema(Description = "Eye controller setting.")]
public glTF_VRM_DegreeMap lookAtVerticalUp = new glTF_VRM_DegreeMap();
protected override void SerializeMembers(GLTFJsonFormatter f)

View File

@ -2,9 +2,9 @@
using System.Collections.Generic;
using System.Linq;
using UniGLTF;
using UnityEngine;
using UniHumanoid;
using UniJSON;
using UnityEngine;
namespace VRM
{
@ -89,8 +89,66 @@ namespace VRM
}
[Serializable]
[JsonSchema(Title = "vrm.humanoidbone")]
public class glTF_VRM_HumanoidBone : JsonSerializableBase
{
[JsonSchema(Description = "Human bone name.", EnumValues = new object[] {
"hips",
"leftUpperLeg",
"rightUpperLeg",
"leftLowerLeg",
"rightLowerLeg",
"leftFoot",
"rightFoot",
"spine",
"chest",
"neck",
"head",
"leftShoulder",
"rightShoulder",
"leftUpperArm",
"rightUpperArm",
"leftLowerArm",
"rightLowerArm",
"leftHand",
"rightHand",
"leftToes",
"rightToes",
"leftEye",
"rightEye",
"jaw",
"leftThumbProximal",
"leftThumbIntermediate",
"leftThumbDistal",
"leftIndexProximal",
"leftIndexIntermediate",
"leftIndexDistal",
"leftMiddleProximal",
"leftMiddleIntermediate",
"leftMiddleDistal",
"leftRingProximal",
"leftRingIntermediate",
"leftRingDistal",
"leftLittleProximal",
"leftLittleIntermediate",
"leftLittleDistal",
"rightThumbProximal",
"rightThumbIntermediate",
"rightThumbDistal",
"rightIndexProximal",
"rightIndexIntermediate",
"rightIndexDistal",
"rightMiddleProximal",
"rightMiddleIntermediate",
"rightMiddleDistal",
"rightRingProximal",
"rightRingIntermediate",
"rightRingDistal",
"rightLittleProximal",
"rightLittleIntermediate",
"rightLittleDistal",
"upperChest",
})]
public string bone;
public VRMBone vrmBone
{
@ -103,12 +161,23 @@ namespace VRM
return EnumUtil.TryParseOrDefault<VRMBone>(bone);
}
}
[JsonSchema(Description = "Reference node index")]
public int node = -1;
[JsonSchema(Description = "Unity's HumanLimit.useDefaultValues")]
public bool useDefaultValues = true;
[JsonSchema(Description = "Unity's HumanLimit.min")]
public Vector3 min;
[JsonSchema(Description = "Unity's HumanLimit.max")]
public Vector3 max;
[JsonSchema(Description = "Unity's HumanLimit.center")]
public Vector3 center;
[JsonSchema(Description = "Unity's HumanLimit.axisLength")]
public float axisLength;
protected override void SerializeMembers(GLTFJsonFormatter f)
@ -131,13 +200,29 @@ namespace VRM
public class glTF_VRM_Humanoid : JsonSerializableBase
{
public List<glTF_VRM_HumanoidBone> humanBones = new List<glTF_VRM_HumanoidBone>();
[JsonSchema(Description = "Unity's HumanDescription.armStretch")]
public float armStretch = 0.05f;
[JsonSchema(Description = "Unity's HumanDescription.legStretch")]
public float legStretch = 0.05f;
[JsonSchema(Description = "Unity's HumanDescription.upperArmTwist")]
public float upperArmTwist = 0.5f;
[JsonSchema(Description = "Unity's HumanDescription.lowerArmTwist")]
public float lowerArmTwist = 0.5f;
[JsonSchema(Description = "Unity's HumanDescription.upperLegTwist")]
public float upperLegTwist = 0.5f;
[JsonSchema(Description = "Unity's HumanDescription.lowerLegTwist")]
public float lowerLegTwist = 0.5f;
[JsonSchema(Description = "Unity's HumanDescription.feetSpacing")]
public float feetSpacing = 0;
[JsonSchema(Description = "Unity's HumanDescription.hasTranslationDoF")]
public bool hasTranslationDoF = false;
public void SetNodeIndex(HumanBodyBones _key, int node)

@ -1 +1 @@
Subproject commit 4aaf80cadb0692f0bc05f15f958b40f7be47309b
Subproject commit d5ab49333e76bf91b347360eae468d81a345e4e7

View File

@ -0,0 +1,15 @@
{
"title": "vrm.blendshapebind",
"type": "object",
"properties": {
"mesh": {
"type": "integer"
},
"index": {
"type": "integer"
},
"weight": {
"type": "number"
}
}
}

View File

@ -0,0 +1,29 @@
{
"title": "vrm.blendshapegroup",
"type": "object",
"properties": {
"name": {
"description": "Expression name",
"type": "string"
},
"presetName": {
"description": "Predefined Expression name",
"type": "string",
"enum": ["Neutral","A","I","U","E","O","Blink","Joy","Angry","Sorrow","Fun","LookUp","LookDown","LookLeft","LookRight","Blink_L","Blink_R"]
},
"binds": {
"description": "Low level blendshape references.",
"type": "array",
"items": {
"$ref": "vrm.blendshapebind.schema.json"
}
},
"materialValues": {
"description": "Material animation references.",
"type": "array",
"items": {
"$ref": "vrm.materialbind.schema.json"
}
}
}
}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: da54af2780f620241a8cb8dac933fa15
timeCreated: 1534861231
licenseType: Free
TextScriptImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,9 +1,12 @@
{
"title":"vrm.blendshapemaster",
"type":"object",
"properties":{
"blendShapeGroups":{
"type":"array"
"title": "vrm.blendshapemaster",
"type": "object",
"properties": {
"blendShapeGroups": {
"type": "array",
"items": {
"$ref": "vrm.blendshapegroup.schema.json"
}
}
}
}

View File

@ -0,0 +1,22 @@
{
"title": "vrm.degreemap",
"description": "Eye controller setting.",
"type": "object",
"properties": {
"curve": {
"description": "None linear mapping params. time, value, inTangent, outTangent",
"type": "array",
"items": {
"type": "number"
}
},
"xRange": {
"description": "Look at input clamp range degree.",
"type": "number"
},
"yRange": {
"description": "Look at map range degree from xRange.",
"type": "number"
}
}
}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 7539ff50c232c5d469ec72bb3e0b05e6
timeCreated: 1534859666
licenseType: Free
TextScriptImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,74 +1,46 @@
{
"title":"vrm.firstperson",
"type":"object",
"properties":{
"firstPersonBone":{
"type":"integer"
"title": "vrm.firstperson",
"type": "object",
"properties": {
"firstPersonBone": {
"description": "Switch to Head bone when model is rendered in first-person view.",
"type": "integer"
},
"firstPersonBoneOffset":{
"type":"array"
"firstPersonBoneOffset": {
"description": "The target headset position in first-person view. Assuming the head bone is offset from the headset.",
"type": "array"
},
"meshAnnotations":{
"type":"array"
},
"lookAtTypeName":{
"type":"string"
},
"lookAtHorizontalInner":{
"type":"object",
"properties":{
"curve":{
"type":"array"
},
"xRange":{
"type":"number"
},
"yRange":{
"type":"number"
"meshAnnotations": {
"description": "Switch on \/ off mesh for display in first-person view, third-person view, or the others.",
"type": "array",
"items": {
"type": "object",
"properties": {
"mesh": {
"type": "integer"
},
"firstPersonFlag": {
"type": "string"
}
}
}
},
"lookAtHorizontalOuter":{
"type":"object",
"properties":{
"curve":{
"type":"array"
},
"xRange":{
"type":"number"
},
"yRange":{
"type":"number"
}
}
"lookAtTypeName": {
"description": "Eye controller mode.",
"type": "string",
"enum": ["Bone","BlendShape"]
},
"lookAtVerticalDown":{
"type":"object",
"properties":{
"curve":{
"type":"array"
},
"xRange":{
"type":"number"
},
"yRange":{
"type":"number"
}
}
"lookAtHorizontalInner": {
"$ref": "vrm.degreemap.schema.json"
},
"lookAtVerticalUp":{
"type":"object",
"properties":{
"curve":{
"type":"array"
},
"xRange":{
"type":"number"
},
"yRange":{
"type":"number"
}
}
"lookAtHorizontalOuter": {
"$ref": "vrm.degreemap.schema.json"
},
"lookAtVerticalDown": {
"$ref": "vrm.degreemap.schema.json"
},
"lookAtVerticalUp": {
"$ref": "vrm.degreemap.schema.json"
}
}
}

View File

@ -1,33 +1,44 @@
{
"title":"vrm.humanoid",
"type":"object",
"properties":{
"humanBones":{
"type":"array"
"title": "vrm.humanoid",
"type": "object",
"properties": {
"humanBones": {
"type": "array",
"items": {
"$ref": "vrm.humanoidbone.schema.json"
}
},
"armStretch":{
"type":"number"
"armStretch": {
"description": "Unity's HumanDescription.armStretch",
"type": "number"
},
"legStretch":{
"type":"number"
"legStretch": {
"description": "Unity's HumanDescription.legStretch",
"type": "number"
},
"upperArmTwist":{
"type":"number"
"upperArmTwist": {
"description": "Unity's HumanDescription.upperArmTwist",
"type": "number"
},
"lowerArmTwist":{
"type":"number"
"lowerArmTwist": {
"description": "Unity's HumanDescription.lowerArmTwist",
"type": "number"
},
"upperLegTwist":{
"type":"number"
"upperLegTwist": {
"description": "Unity's HumanDescription.upperLegTwist",
"type": "number"
},
"lowerLegTwist":{
"type":"number"
"lowerLegTwist": {
"description": "Unity's HumanDescription.lowerLegTwist",
"type": "number"
},
"feetSpacing":{
"type":"number"
"feetSpacing": {
"description": "Unity's HumanDescription.feetSpacing",
"type": "number"
},
"hasTranslationDoF":{
"type":"bool"
"hasTranslationDoF": {
"description": "Unity's HumanDescription.hasTranslationDoF",
"type": "bool"
}
}
}

View File

@ -0,0 +1,35 @@
{
"title": "vrm.humanoidbone",
"type": "object",
"properties": {
"bone": {
"description": "Human bone name.",
"type": "string",
"enum": ["hips","leftUpperLeg","rightUpperLeg","leftLowerLeg","rightLowerLeg","leftFoot","rightFoot","spine","chest","neck","head","leftShoulder","rightShoulder","leftUpperArm","rightUpperArm","leftLowerArm","rightLowerArm","leftHand","rightHand","leftToes","rightToes","leftEye","rightEye","jaw","leftThumbProximal","leftThumbIntermediate","leftThumbDistal","leftIndexProximal","leftIndexIntermediate","leftIndexDistal","leftMiddleProximal","leftMiddleIntermediate","leftMiddleDistal","leftRingProximal","leftRingIntermediate","leftRingDistal","leftLittleProximal","leftLittleIntermediate","leftLittleDistal","rightThumbProximal","rightThumbIntermediate","rightThumbDistal","rightIndexProximal","rightIndexIntermediate","rightIndexDistal","rightMiddleProximal","rightMiddleIntermediate","rightMiddleDistal","rightRingProximal","rightRingIntermediate","rightRingDistal","rightLittleProximal","rightLittleIntermediate","rightLittleDistal","upperChest"]
},
"node": {
"description": "Reference node index",
"type": "integer"
},
"useDefaultValues": {
"description": "Unity's HumanLimit.useDefaultValues",
"type": "bool"
},
"min": {
"description": "Unity's HumanLimit.min",
"type": "array"
},
"max": {
"description": "Unity's HumanLimit.max",
"type": "array"
},
"center": {
"description": "Unity's HumanLimit.center",
"type": "array"
},
"axisLength": {
"description": "Unity's HumanLimit.axisLength",
"type": "number"
}
}
}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 00a1e5901b4fb3a468ea24d05ff77855
timeCreated: 1534861231
licenseType: Free
TextScriptImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,30 @@
{
"title": "vrm.material",
"type": "object",
"properties": {
"name": {
"type": "string"
},
"shader": {
"type": "string"
},
"renderQueue": {
"type": "integer"
},
"floatProperties": {
"type": "object"
},
"vectorProperties": {
"type": "object"
},
"textureProperties": {
"type": "object"
},
"keywordMap": {
"type": "object"
},
"tagMap": {
"type": "object"
}
}
}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 7eecf3c1135646e41a4961f0fcfec056
timeCreated: 1534861231
licenseType: Free
TextScriptImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,18 @@
{
"title": "vrm.materialbind",
"type": "object",
"properties": {
"materialName": {
"type": "string"
},
"propertyName": {
"type": "string"
},
"targetValue": {
"type": "array",
"items": {
"type": "number"
}
}
}
}

View File

@ -1,63 +1,63 @@
{
"title":"vrm.meta",
"type":"object",
"properties":{
"title":{
"description":"Title of VRM model",
"type":"string"
"title": "vrm.meta",
"type": "object",
"properties": {
"title": {
"description": "Title of VRM model",
"type": "string"
},
"version":{
"description":"Version of VRM model",
"type":"string"
"version": {
"description": "Version of VRM model",
"type": "string"
},
"author":{
"description":"Author of VRM model",
"type":"string"
"author": {
"description": "Author of VRM model",
"type": "string"
},
"contactInformation":{
"description":"Contact Information of VRM model author",
"type":"string"
"contactInformation": {
"description": "Contact Information of VRM model author",
"type": "string"
},
"reference":{
"description":"Reference of VRM model",
"type":"string"
"reference": {
"description": "Reference of VRM model",
"type": "string"
},
"texture":{
"description":"Thumbnail of VRM model",
"type":"integer"
"texture": {
"description": "Thumbnail of VRM model",
"type": "integer"
},
"allowedUserName":{
"description":"A person who can perform with this avatar",
"type":"string",
"enum":["OnlyAuthor","ExplicitlyLicensedPerson","Everyone"]
"allowedUserName": {
"description": "A person who can perform with this avatar",
"type": "string",
"enum": ["OnlyAuthor","ExplicitlyLicensedPerson","Everyone"]
},
"violentUssageName":{
"description":"Permission to perform violent acts with this avatar",
"type":"string",
"enum":["Disallow","Allow"]
"violentUssageName": {
"description": "Permission to perform violent acts with this avatar",
"type": "string",
"enum": ["Disallow","Allow"]
},
"sexualUssageName":{
"description":"Permission to perform sexual acts with this avatar",
"type":"string",
"enum":["Disallow","Allow"]
"sexualUssageName": {
"description": "Permission to perform sexual acts with this avatar",
"type": "string",
"enum": ["Disallow","Allow"]
},
"commercialUssageName":{
"description":"For commercial use",
"type":"string",
"enum":["Disallow","Allow"]
"commercialUssageName": {
"description": "For commercial use",
"type": "string",
"enum": ["Disallow","Allow"]
},
"otherPermissionUrl":{
"description":"If there are any conditions not mentioned above, put the URL link of the license document here.",
"type":"string"
"otherPermissionUrl": {
"description": "If there are any conditions not mentioned above, put the URL link of the license document here.",
"type": "string"
},
"licenseName":{
"description":"License type",
"type":"string",
"enum":["Redistribution_Prohibited","CC0","CC_BY","CC_BY_NC","CC_BY_SA","CC_BY_NC_SA","CC_BY_ND","CC_BY_NC_ND","Other"]
"licenseName": {
"description": "License type",
"type": "string",
"enum": ["Redistribution_Prohibited","CC0","CC_BY","CC_BY_NC","CC_BY_SA","CC_BY_NC_SA","CC_BY_ND","CC_BY_NC_ND","Other"]
},
"otherLicenseUrl":{
"description":"If “Other” is selected, put the URL link of the license document here.",
"type":"string"
"otherLicenseUrl": {
"description": "If “Other” is selected, put the URL link of the license document here.",
"type": "string"
}
}
}

View File

@ -1,29 +1,32 @@
{
"title":"vrm",
"description":"VRM extension is for 3d humanoid avatars (and models) in VR applications.",
"type":"object",
"properties":{
"exporterVersion":{
"description":"Version of exporter that vrm created. UniVRM-0.41",
"type":"string"
"title": "vrm",
"description": "VRM extension is for 3d humanoid avatars (and models) in VR applications.",
"type": "object",
"properties": {
"exporterVersion": {
"description": "Version of exporter that vrm created. UniVRM-0.42",
"type": "string"
},
"meta":{
"$ref":"vrm.meta.schema.json"
"meta": {
"$ref": "vrm.meta.schema.json"
},
"humanoid":{
"$ref":"vrm.humanoid.schema.json"
"humanoid": {
"$ref": "vrm.humanoid.schema.json"
},
"firstPerson":{
"$ref":"vrm.firstperson.schema.json"
"firstPerson": {
"$ref": "vrm.firstperson.schema.json"
},
"blendShapeMaster":{
"$ref":"vrm.blendshapemaster.schema.json"
"blendShapeMaster": {
"$ref": "vrm.blendshapemaster.schema.json"
},
"secondaryAnimation":{
"$ref":"vrm.secondaryanimation.schema.json"
"secondaryAnimation": {
"$ref": "vrm.secondaryanimation.schema.json"
},
"materialProperties":{
"type":"array"
"materialProperties": {
"type": "array",
"items": {
"$ref": "vrm.material.schema.json"
}
}
}
}

View File

@ -1,12 +1,72 @@
{
"title":"vrm.secondaryanimation",
"type":"object",
"properties":{
"boneGroups":{
"type":"array"
"title": "vrm.secondaryanimation",
"type": "object",
"properties": {
"boneGroups": {
"type": "array",
"items": {
"type": "object",
"properties": {
"comment": {
"type": "string"
},
"stiffiness": {
"type": "number"
},
"gravityPower": {
"type": "number"
},
"gravityDir": {
"type": "array"
},
"dragForce": {
"type": "number"
},
"center": {
"type": "integer"
},
"hitRadius": {
"type": "number"
},
"bones": {
"type": "array",
"items": {
"type": "integer"
}
},
"colliderGroups": {
"type": "array",
"items": {
"type": "integer"
}
}
}
}
},
"colliderGroups":{
"type":"array"
"colliderGroups": {
"type": "array",
"items": {
"type": "object",
"properties": {
"node": {
"type": "integer"
},
"colliders": {
"type": "array",
"items": {
"type": "object",
"properties": {
"offset": {
"type": "array"
},
"radius": {
"type": "number"
}
}
}
}
}
}
}
}
}