mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-05-23 03:16:12 -05:00
Updated JsonSchema
This commit is contained in:
parent
ef69bc0328
commit
87d82fd794
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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>();
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
2
UniGLTF
2
UniGLTF
|
|
@ -1 +1 @@
|
|||
Subproject commit 4aaf80cadb0692f0bc05f15f958b40f7be47309b
|
||||
Subproject commit d5ab49333e76bf91b347360eae468d81a345e4e7
|
||||
15
specification/0.0/schema/vrm.blendshapebind.schema.json
Normal file
15
specification/0.0/schema/vrm.blendshapebind.schema.json
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"title": "vrm.blendshapebind",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"mesh": {
|
||||
"type": "integer"
|
||||
},
|
||||
"index": {
|
||||
"type": "integer"
|
||||
},
|
||||
"weight": {
|
||||
"type": "number"
|
||||
}
|
||||
}
|
||||
}
|
||||
29
specification/0.0/schema/vrm.blendshapegroup.schema.json
Normal file
29
specification/0.0/schema/vrm.blendshapegroup.schema.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: da54af2780f620241a8cb8dac933fa15
|
||||
timeCreated: 1534861231
|
||||
licenseType: Free
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
22
specification/0.0/schema/vrm.degreemap.schema.json
Normal file
22
specification/0.0/schema/vrm.degreemap.schema.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
8
specification/0.0/schema/vrm.degreemap.schema.json.meta
Normal file
8
specification/0.0/schema/vrm.degreemap.schema.json.meta
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 7539ff50c232c5d469ec72bb3e0b05e6
|
||||
timeCreated: 1534859666
|
||||
licenseType: Free
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
35
specification/0.0/schema/vrm.humanoidbone.schema.json
Normal file
35
specification/0.0/schema/vrm.humanoidbone.schema.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 00a1e5901b4fb3a468ea24d05ff77855
|
||||
timeCreated: 1534861231
|
||||
licenseType: Free
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
30
specification/0.0/schema/vrm.material.schema.json
Normal file
30
specification/0.0/schema/vrm.material.schema.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
8
specification/0.0/schema/vrm.material.schema.json.meta
Normal file
8
specification/0.0/schema/vrm.material.schema.json.meta
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 7eecf3c1135646e41a4961f0fcfec056
|
||||
timeCreated: 1534861231
|
||||
licenseType: Free
|
||||
TextScriptImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
18
specification/0.0/schema/vrm.materialbind.schema.json
Normal file
18
specification/0.0/schema/vrm.materialbind.schema.json
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"title": "vrm.materialbind",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"materialName": {
|
||||
"type": "string"
|
||||
},
|
||||
"propertyName": {
|
||||
"type": "string"
|
||||
},
|
||||
"targetValue": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "number"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user