From b8f8aeb98b9d052dd47438cbaa2ddf47f8bf43a5 Mon Sep 17 00:00:00 2001 From: Aaron Franke Date: Tue, 9 Jul 2024 00:05:57 -0700 Subject: [PATCH] Upgrade schemas to draft 2020-12 --- .../2.0/Archived/OMI_collider/README.md | 2 +- ...=> glTF.OMI_collider.collider.schema.json} | 12 +- .../schema/glTF.OMI_collider.schema.json | 12 +- .../schema/node.OMI_collider.schema.json | 18 +- extensions/2.0/KHR_audio_emitter/README.md | 2 +- ... glTF.KHR_audio_emitter.audio.schema.json} | 11 +- ...io_emitter.emitter.positional.schema.json} | 22 +- ...lTF.KHR_audio_emitter.emitter.schema.json} | 23 +- .../schema/glTF.KHR_audio_emitter.schema.json | 16 +- ...glTF.KHR_audio_emitter.source.schema.json} | 19 +- .../schema/node.KHR_audio_emitter.schema.json | 12 +- .../scene.KHR_audio_emitter.schema.json | 6 +- extensions/2.0/OMI_audio_ogg_vorbis/README.md | 4 + ...er.source.OMI_audio_ogg_vorbis.schema.json | 15 -- ...er.source.OMI_audio_ogg_vorbis.schema.json | 16 ++ extensions/2.0/OMI_audio_opus/README.md | 4 + ..._emitter.source.OMI_audio_opus.schema.json | 15 -- ..._emitter.source.OMI_audio_opus.schema.json | 16 ++ extensions/2.0/OMI_personality/README.md | 70 ++--- .../examples/complex/indirect_children.gltf | 246 +++++++++--------- ...node.OMI_physics_body.collider.schema.json | 16 +- .../node.OMI_physics_body.motion.schema.json | 13 +- .../schema/node.OMI_physics_body.schema.json | 5 +- .../node.OMI_physics_body.trigger.schema.json | 10 +- .../glTF.OMI_physics_gravity.schema.json | 13 +- ...MI_physics_gravity.directional.schema.json | 5 +- .../node.OMI_physics_gravity.disc.schema.json | 5 +- .../node.OMI_physics_gravity.line.schema.json | 13 +- ...node.OMI_physics_gravity.point.schema.json | 5 +- .../node.OMI_physics_gravity.schema.json | 13 +- ...ode.OMI_physics_gravity.shaped.schema.json | 13 +- ...node.OMI_physics_gravity.torus.schema.json | 5 +- extensions/2.0/OMI_physics_joint/README.md | 2 +- ...hysics_joint.joint_constraint.schema.json} | 8 +- .../schema/glTF.OMI_physics_joint.schema.json | 18 +- .../schema/node.OMI_physics_joint.schema.json | 18 +- .../examples/box_collider.gltf | 4 +- .../examples/capsule_collider.gltf | 4 +- .../examples/convex/convex_hull.gltf | 4 +- .../examples/convex/convex_hull_only.gltf | 4 +- .../examples/cylinder_collider.gltf | 4 +- .../examples/default_box.gltf | 4 +- .../examples/sphere_collider.gltf | 4 +- .../examples/trimesh/concave_trimesh.gltf | 4 +- .../trimesh/concave_trimesh_only.gltf | 4 +- .../schema/glTF.OMI_physics_shape.schema.json | 12 +- ...TF.OMI_physics_shape.shape.box.schema.json | 5 +- ...MI_physics_shape.shape.capsule.schema.json | 5 +- ...OMI_physics_shape.shape.convex.schema.json | 13 +- ...I_physics_shape.shape.cylinder.schema.json | 5 +- .../glTF.OMI_physics_shape.shape.schema.json | 11 +- ...OMI_physics_shape.shape.sphere.schema.json | 5 +- ...MI_physics_shape.shape.trimesh.schema.json | 13 +- extensions/2.0/OMI_seat/README.md | 32 --- .../OMI_seat/schema/node.OMI_seat.schema.json | 17 +- extensions/2.0/OMI_spawn_point/README.md | 97 +++---- .../schema/node.OMI_spawn_point.schema.json | 27 ++ .../schema/spawn_point.schema.json | 25 -- 58 files changed, 494 insertions(+), 512 deletions(-) rename extensions/2.0/Archived/OMI_collider/schema/{collider.schema.json => glTF.OMI_collider.collider.schema.json} (93%) rename extensions/2.0/KHR_audio_emitter/schema/{audio.schema.json => glTF.KHR_audio_emitter.audio.schema.json} (83%) rename extensions/2.0/KHR_audio_emitter/schema/{emitter.positional.schema.json => glTF.KHR_audio_emitter.emitter.positional.schema.json} (92%) rename extensions/2.0/KHR_audio_emitter/schema/{emitter.schema.json => glTF.KHR_audio_emitter.emitter.schema.json} (78%) rename extensions/2.0/KHR_audio_emitter/schema/{source.schema.json => glTF.KHR_audio_emitter.source.schema.json} (79%) delete mode 100644 extensions/2.0/OMI_audio_ogg_vorbis/schema/KHR_audio_emitter.source.OMI_audio_ogg_vorbis.schema.json create mode 100644 extensions/2.0/OMI_audio_ogg_vorbis/schema/glTF.KHR_audio_emitter.source.OMI_audio_ogg_vorbis.schema.json delete mode 100644 extensions/2.0/OMI_audio_opus/schema/KHR_audio_emitter.source.OMI_audio_opus.schema.json create mode 100644 extensions/2.0/OMI_audio_opus/schema/glTF.KHR_audio_emitter.source.OMI_audio_opus.schema.json rename extensions/2.0/OMI_physics_joint/schema/{joint_constraint.schema.json => glTF.OMI_physics_joint.joint_constraint.schema.json} (82%) create mode 100644 extensions/2.0/OMI_spawn_point/schema/node.OMI_spawn_point.schema.json delete mode 100644 extensions/2.0/OMI_spawn_point/schema/spawn_point.schema.json diff --git a/extensions/2.0/Archived/OMI_collider/README.md b/extensions/2.0/Archived/OMI_collider/README.md index e83047f..8c48d1f 100644 --- a/extensions/2.0/Archived/OMI_collider/README.md +++ b/extensions/2.0/Archived/OMI_collider/README.md @@ -141,7 +141,7 @@ Trigger shapes are not solid to other objects and will not collide with them. Tr ### JSON Schema -See [schema/collider.schema.json](schema/collider.schema.json) for the main collider schema, [schema/glTF.OMI_collider.schema.json](schema/glTF.OMI_collider.schema.json) for the document-level list of colliders, and [schema/node.OMI_collider.schema.json](schema/node.OMI_collider.schema.json) for the node-level collider selection. +See [schema/glTF.OMI_collider.collider.schema.json](schema/glTF.OMI_collider.collider.schema.json) for the main collider schema, [schema/glTF.OMI_collider.schema.json](schema/glTF.OMI_collider.schema.json) for the document-level list of colliders, and [schema/node.OMI_collider.schema.json](schema/node.OMI_collider.schema.json) for the node-level collider selection. ## Known Implementations diff --git a/extensions/2.0/Archived/OMI_collider/schema/collider.schema.json b/extensions/2.0/Archived/OMI_collider/schema/glTF.OMI_collider.collider.schema.json similarity index 93% rename from extensions/2.0/Archived/OMI_collider/schema/collider.schema.json rename to extensions/2.0/Archived/OMI_collider/schema/glTF.OMI_collider.collider.schema.json index 18a4d55..e535c2a 100644 --- a/extensions/2.0/Archived/OMI_collider/schema/collider.schema.json +++ b/extensions/2.0/Archived/OMI_collider/schema/glTF.OMI_collider.collider.schema.json @@ -1,10 +1,10 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "glTF.OMI_collider.collider.schema.json", "title": "OMI_collider Collider", "type": "object", - "required": [ - "type" - ], + "description": "Parameters describing a collider physics shape.", + "allOf": [ { "$ref": "glTFChildOfRootProperty.schema.json" } ], "properties": { "type": { "type": "string", @@ -23,9 +23,13 @@ "description": "When true this collider will not be solid to physics bodies in the scene, and instead the shape will act as a trigger detection area.", "default": false }, + "name": { }, "extensions": { }, "extras": { } }, + "required": [ + "type" + ], "oneOf": [ { "required": [ diff --git a/extensions/2.0/Archived/OMI_collider/schema/glTF.OMI_collider.schema.json b/extensions/2.0/Archived/OMI_collider/schema/glTF.OMI_collider.schema.json index 5b37e24..e62f634 100644 --- a/extensions/2.0/Archived/OMI_collider/schema/glTF.OMI_collider.schema.json +++ b/extensions/2.0/Archived/OMI_collider/schema/glTF.OMI_collider.schema.json @@ -1,19 +1,17 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "glTF.OMI_collider.schema.json", "title": "OMI_collider glTF Document Extension", "type": "object", - "allOf": [ - { - "$ref": "glTFProperty.schema.json" - } - ], + "description": "Top level collider resources.", + "allOf": [ { "$ref": "glTFProperty.schema.json" } ], "properties": { "colliders": { "description": "An array of colliders that can be referenced by nodes.", "type": "array", "items": { "type": "object", - "$ref": "collider.schema.json" + "$ref": "glTF.OMI_collider.collider.schema.json" }, "minItems": 1 }, diff --git a/extensions/2.0/Archived/OMI_collider/schema/node.OMI_collider.schema.json b/extensions/2.0/Archived/OMI_collider/schema/node.OMI_collider.schema.json index 1ff34ef..01937df 100644 --- a/extensions/2.0/Archived/OMI_collider/schema/node.OMI_collider.schema.json +++ b/extensions/2.0/Archived/OMI_collider/schema/node.OMI_collider.schema.json @@ -1,20 +1,14 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "node.OMI_collider.schema.json", "title": "OMI_collider glTF Node Extension", "type": "object", - "allOf": [ - { - "$ref": "glTFProperty.schema.json" - } - ], + "description": "Node extension that references a collider.", + "allOf": [ { "$ref": "glTFProperty.schema.json" } ], "properties": { "collider": { - "description": "The id of the collider referenced by this node.", - "allOf": [ - { - "$ref": "glTFid.schema.json" - } - ] + "allOf": [{"$ref": "glTFid.schema.json"}], + "description": "The id of the collider referenced by this node." }, "extensions": {}, "extras": {} diff --git a/extensions/2.0/KHR_audio_emitter/README.md b/extensions/2.0/KHR_audio_emitter/README.md index cf25657..5b7d9dc 100644 --- a/extensions/2.0/KHR_audio_emitter/README.md +++ b/extensions/2.0/KHR_audio_emitter/README.md @@ -354,7 +354,7 @@ Radians are used for angles matching glTF2. ### JSON Schema -[glTF.KHR_audio_emitter.schema.json](/extensions/2.0/KHR_audio_emitter/schema/glTF.KHR_audio_emitter.schema.json) +See [glTF.KHR_audio_emitter.schema.json](schema/glTF.KHR_audio_emitter.schema.json) for the main document-level schema. ## Known Implementations diff --git a/extensions/2.0/KHR_audio_emitter/schema/audio.schema.json b/extensions/2.0/KHR_audio_emitter/schema/glTF.KHR_audio_emitter.audio.schema.json similarity index 83% rename from extensions/2.0/KHR_audio_emitter/schema/audio.schema.json rename to extensions/2.0/KHR_audio_emitter/schema/glTF.KHR_audio_emitter.audio.schema.json index b284926..bb4b45d 100644 --- a/extensions/2.0/KHR_audio_emitter/schema/audio.schema.json +++ b/extensions/2.0/KHR_audio_emitter/schema/glTF.KHR_audio_emitter.audio.schema.json @@ -1,9 +1,10 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "glTF.KHR_audio_emitter.audio.schema.json", "title": "KHR_audio_emitter Audio Data", "type": "object", "description": "Audio data objects define where audio data is located and what format the data is in. The data is either accessed via a bufferView or uri. `mimeType` is required when `bufferView` is used.", - "allOf": [{ "$ref": "glTFProperty.schema.json" }], + "allOf": [{ "$ref": "glTFChildOfRootProperty.schema.json" }], "properties": { "uri": { "type": "string", @@ -17,10 +18,10 @@ "description": "The audio's MIME type. Required if `bufferView` is defined. Unless specified by another extension, the only supported mimeTypes are `audio/mpeg` and `audio/wav`.", "anyOf": [ { - "enum": ["audio/mpeg"] + "const": "audio/mpeg" }, { - "enum": ["audio/wav"] + "const": "audio/wav" }, { "type": "string" @@ -35,7 +36,7 @@ "extensions": {}, "extras": {} }, - "dependencies": { + "dependentRequired": { "bufferView": ["mimeType"] }, "oneOf": [{ "required": ["uri"] }, { "required": ["bufferView"] }] diff --git a/extensions/2.0/KHR_audio_emitter/schema/emitter.positional.schema.json b/extensions/2.0/KHR_audio_emitter/schema/glTF.KHR_audio_emitter.emitter.positional.schema.json similarity index 92% rename from extensions/2.0/KHR_audio_emitter/schema/emitter.positional.schema.json rename to extensions/2.0/KHR_audio_emitter/schema/glTF.KHR_audio_emitter.emitter.positional.schema.json index 467b64f..d078d30 100644 --- a/extensions/2.0/KHR_audio_emitter/schema/emitter.positional.schema.json +++ b/extensions/2.0/KHR_audio_emitter/schema/glTF.KHR_audio_emitter.emitter.positional.schema.json @@ -1,27 +1,28 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "glTF.KHR_audio_emitter.emitter.positional.schema.json", "title": "KHR_audio_emitter Positional Audio Emitter", "type": "object", "description": "Positional audio emitter properties.", "allOf": [{ "$ref": "glTFProperty.schema.json" }], "properties": { "coneInnerAngle": { - "description": "The angle, in radians, of a cone inside of which there will be no volume reduction. This angle represents the angular diameter of the cone, from side to side. If not specified, the angle of Tau radians (360 degrees) is used, which means the audio emits in all directions (not in a cone).", "type": "number", + "description": "The angle, in radians, of a cone inside of which there will be no volume reduction. This angle represents the angular diameter of the cone, from side to side. If not specified, the angle of Tau radians (360 degrees) is used, which means the audio emits in all directions (not in a cone).", "minimum": 0.0, "maximum": 6.2831853071795864, "default": 6.2831853071795864 }, "coneOuterAngle": { - "description": "The angle, in radians, of a cone outside of which the volume will be reduced to a constant value of `coneOuterGain`. This angle represents the angular diameter of the cone, from side to side. If not specified, the angle of Tau radians (360 degrees) is used, which means some audio will emit in all directions.", "type": "number", + "description": "The angle, in radians, of a cone outside of which the volume will be reduced to a constant value of `coneOuterGain`. This angle represents the angular diameter of the cone, from side to side. If not specified, the angle of Tau radians (360 degrees) is used, which means some audio will emit in all directions.", "minimum": 0.0, "maximum": 6.2831853071795864, "default": 6.2831853071795864 }, "coneOuterGain": { - "description": "The linear volume gain of the audio emitter set when outside the cone defined by the `coneOuterAngle` property. It is a linear value (not dB). If not specified, the cone outer gain is `0.0`, meaning the audio will be silent outside of the cone.", "type": "number", + "description": "The linear volume gain of the audio emitter set when outside the cone defined by the `coneOuterAngle` property. It is a linear value (not dB). If not specified, the cone outer gain is `0.0`, meaning the audio will be silent outside of the cone.", "minimum": 0.0, "default": 0.0 }, @@ -30,31 +31,30 @@ "description": "Specifies the distance model for the audio emitter.", "anyOf": [ { - "enum": ["linear"], + "const": "linear", "description": "A linear distance model calculating the gain induced by the distance according to: 1.0 - rolloffFactor * (distance - refDistance) / (maxDistance - refDistance)" }, { - "enum": ["inverse"], + "const": "inverse", "description": "An inverse distance model calculating the gain induced by the distance according to: refDistance / (refDistance + rolloffFactor * (Math.max(distance, refDistance) - refDistance))" }, { - "enum": ["exponential"], + "const": "exponential", "description": "An exponential distance model calculating the gain induced by the distance according to: pow((Math.max(distance, refDistance) / refDistance, -rolloffFactor))" } ], "default": "inverse" }, "maxDistance": { - "description": "The maximum distance between the emitter and listener, after which the volume will not be reduced any further. If zero or not specified, the audio emitter does not have a maximum distance, and it can be heard from any distance.", "type": "number", + "description": "The maximum distance between the emitter and listener, after which the volume will not be reduced any further. If zero or not specified, the audio emitter does not have a maximum distance, and it can be heard from any distance.", "minimum": 0.0, "default": 0.0 }, "refDistance": { - "description": "A reference distance for reducing volume as the emitter moves further from the listener. For distances less than this, the volume is not reduced. This value cannot be zero or a negative number. If not specified, the default value is `1.0`.", "type": "number", - "minimum": 0.0, - "exclusiveMinimum": true, + "description": "A reference distance for reducing volume as the emitter moves further from the listener. For distances less than this, the volume is not reduced. This value cannot be zero or a negative number. If not specified, the default value is `1.0`.", + "exclusiveMinimum": 0.0, "default": 1.0 }, "rolloffFactor": { diff --git a/extensions/2.0/KHR_audio_emitter/schema/emitter.schema.json b/extensions/2.0/KHR_audio_emitter/schema/glTF.KHR_audio_emitter.emitter.schema.json similarity index 78% rename from extensions/2.0/KHR_audio_emitter/schema/emitter.schema.json rename to extensions/2.0/KHR_audio_emitter/schema/glTF.KHR_audio_emitter.emitter.schema.json index 03550de..362ab69 100644 --- a/extensions/2.0/KHR_audio_emitter/schema/emitter.schema.json +++ b/extensions/2.0/KHR_audio_emitter/schema/glTF.KHR_audio_emitter.emitter.schema.json @@ -1,20 +1,21 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "glTF.KHR_audio_emitter.emitter.schema.json", "title": "KHR_audio_emitter Audio Emitter", "type": "object", "description": "Audio emitters define how audio sources are played back. Emitter properties are defined at the document level and are references by nodes. Audio may be played globally or positionally. Positional audio has further properties that define how audio volume scales with distance and angle.", - "allOf": [{ "$ref": "glTFProperty.schema.json" }], + "allOf": [{ "$ref": "glTFChildOfRootProperty.schema.json" }], "properties": { "type": { "type": "string", "description": "Specifies the audio emitter type.", "anyOf": [ { - "enum": ["global"], + "const": "global", "description": "Global audio emitters are not affected by the position of audio listeners. All `positional` properties may not be defined on global audio emitters." }, { - "enum": ["positional"], + "const": "positional", "description": "Positional audio emitters play audio at a position in the scene. The properties are defined in the `positional` object." }, { @@ -23,23 +24,21 @@ ] }, "gain": { - "description": "Unitless linear multiplier against original source volume for determining emitter loudness.", "type": "number", + "description": "Unitless linear multiplier against original source volume for determining emitter loudness.", "minimum": 0.0, "default": 1.0 }, "sources": { - "description": "An array of audio source indices used by the audio emitter. This array may be empty.", "type": "array", - "allOf": [ - { - "$ref": "glTFid.schema.json" - } - ] + "description": "An array of audio source indices used by the audio emitter. This array may be empty.", + "items": { + "allOf": [ { "$ref": "glTFid.schema.json" } ] + } }, "positional": { "type": "object", - "$ref": "emitter.positional.schema.json" + "$ref": "glTF.KHR_audio_emitter.emitter.positional.schema.json" }, "name": {}, "extensions": {}, diff --git a/extensions/2.0/KHR_audio_emitter/schema/glTF.KHR_audio_emitter.schema.json b/extensions/2.0/KHR_audio_emitter/schema/glTF.KHR_audio_emitter.schema.json index 2a3e8cb..31bba14 100644 --- a/extensions/2.0/KHR_audio_emitter/schema/glTF.KHR_audio_emitter.schema.json +++ b/extensions/2.0/KHR_audio_emitter/schema/glTF.KHR_audio_emitter.schema.json @@ -1,33 +1,35 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "glTF.KHR_audio_emitter.schema.json", "title": "KHR_audio_emitter glTF Document Extension", "type": "object", + "description": "Top level audio properties and resources.", "allOf": [{ "$ref": "glTFProperty.schema.json" }], "properties": { "sources": { - "description": "An array of audio sources to be used in audio emitters.", "type": "array", + "description": "An array of audio sources to be used in audio emitters.", "items": { "type": "object", - "$ref": "source.schema.json" + "$ref": "glTF.KHR_audio_emitter.source.schema.json" }, "minItems": 1 }, "emitters": { - "description": "An array of positional or global audio emitters that can be referenced by nodes or scenes.", "type": "array", + "description": "An array of positional or global audio emitters that can be referenced by nodes or scenes.", "items": { "type": "object", - "$ref": "emitter.schema.json" + "$ref": "glTF.KHR_audio_emitter.emitter.schema.json" }, "minItems": 1 }, "audio": { - "description": "An array of audio that can be referenced by nodes.", "type": "array", + "description": "An array of audio that can be referenced by nodes.", "items": { "type": "object", - "$ref": "audio.schema.json" + "$ref": "glTF.KHR_audio_emitter.audio.schema.json" }, "minItems": 1 }, diff --git a/extensions/2.0/KHR_audio_emitter/schema/source.schema.json b/extensions/2.0/KHR_audio_emitter/schema/glTF.KHR_audio_emitter.source.schema.json similarity index 79% rename from extensions/2.0/KHR_audio_emitter/schema/source.schema.json rename to extensions/2.0/KHR_audio_emitter/schema/glTF.KHR_audio_emitter.source.schema.json index 243214a..97b95bc 100644 --- a/extensions/2.0/KHR_audio_emitter/schema/source.schema.json +++ b/extensions/2.0/KHR_audio_emitter/schema/glTF.KHR_audio_emitter.source.schema.json @@ -1,33 +1,30 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "glTF.KHR_audio_emitter.source.schema.json", "title": "KHR_audio_emitter Audio Source", "type": "object", "description": "Audio sources reference audio data and define playback properties for it. Audio sources may be used by zero to many audio emitters.", - "allOf": [{ "$ref": "glTFProperty.schema.json" }], + "allOf": [{ "$ref": "glTFChildOfRootProperty.schema.json" }], "properties": { "autoPlay": { - "description": "Whether or not to play the specified audio when the glTF is loaded.", "type": "boolean", + "description": "Whether or not to play the specified audio when the glTF is loaded.", "default": false }, "gain": { - "description": "Unitless multiplier against original audio file volume for determining audio source loudness.", "type": "number", + "description": "Unitless multiplier against original audio file volume for determining audio source loudness.", "minimum": 0.0, "default": 1.0 }, "loop": { - "description": "Whether or not to loop the specified audio when finished.", "type": "boolean", + "description": "Whether or not to loop the specified audio when finished.", "default": false }, "audio": { - "description": "The index of the audio data assigned to this clip.", - "allOf": [ - { - "$ref": "glTFid.schema.json" - } - ] + "allOf": [ { "$ref": "glTFid.schema.json" } ], + "description": "The index of the audio data assigned to this clip." }, "name": {}, "extensions": {}, diff --git a/extensions/2.0/KHR_audio_emitter/schema/node.KHR_audio_emitter.schema.json b/extensions/2.0/KHR_audio_emitter/schema/node.KHR_audio_emitter.schema.json index 716ee6a..757162c 100644 --- a/extensions/2.0/KHR_audio_emitter/schema/node.KHR_audio_emitter.schema.json +++ b/extensions/2.0/KHR_audio_emitter/schema/node.KHR_audio_emitter.schema.json @@ -1,16 +1,14 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "node.KHR_audio_emitter.schema.json", "title": "KHR_audio_emitter glTF Node Extension", "type": "object", + "description": "Node extension that references an audio emitter.", "allOf": [{ "$ref": "glTFProperty.schema.json" }], "properties": { "emitter": { - "description": "The id of the positional audio emitter referenced by this node.", - "allOf": [ - { - "$ref": "glTFid.schema.json" - } - ] + "allOf": [ { "$ref": "glTFid.schema.json" } ], + "description": "The id of the audio emitter referenced by this node." }, "extensions": {}, "extras": {} diff --git a/extensions/2.0/KHR_audio_emitter/schema/scene.KHR_audio_emitter.schema.json b/extensions/2.0/KHR_audio_emitter/schema/scene.KHR_audio_emitter.schema.json index dd13b63..1148f63 100644 --- a/extensions/2.0/KHR_audio_emitter/schema/scene.KHR_audio_emitter.schema.json +++ b/extensions/2.0/KHR_audio_emitter/schema/scene.KHR_audio_emitter.schema.json @@ -1,14 +1,16 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "scene.KHR_audio_emitter.schema.json", "title": "KHR_audio_emitter glTF Scene Extension", "type": "object", + "description": "Scene extension that references global audio emitters.", "allOf": [{ "$ref": "glTFProperty.schema.json" }], "properties": { "emitters": { "type": "array", "description": "The indices of each global audio emitter. Positional audio emitters may not be added to the scene node.", "items": { - "$ref": "glTFid.schema.json" + "allOf": [ { "$ref": "glTFid.schema.json" } ] }, "uniqueItems": true, "minItems": 1 diff --git a/extensions/2.0/OMI_audio_ogg_vorbis/README.md b/extensions/2.0/OMI_audio_ogg_vorbis/README.md index a8e61e3..8bcc4e0 100644 --- a/extensions/2.0/OMI_audio_ogg_vorbis/README.md +++ b/extensions/2.0/OMI_audio_ogg_vorbis/README.md @@ -115,6 +115,10 @@ If a glTF contains an audio source using Ogg Vorbis audio with no fallback audio If a glTF contains an audio source using Ogg Vorbis audio with no fallback audio data, and `KHR_audio_emitter` is not a required extension, then do not add `OMI_audio_ogg_vorbis` to `extensionsRequired`. Clients supporting `KHR_audio_emitter` but not `OMI_audio_ogg_vorbis` will consider the lack of `"audio"` in a `KHR_audio_emitter` source to be an error, and either will not be able to play audio from that source, or will not load the `KHR_audio_emitter` extension. +### JSON Schema + +See [schema/glTF.KHR_audio_emitter.source.OMI_audio_ogg_vorbis.schema.json](schema/glTF.KHR_audio_emitter.source.OMI_audio_ogg_vorbis.schema.json) for the schema. + ## Known Implementations None diff --git a/extensions/2.0/OMI_audio_ogg_vorbis/schema/KHR_audio_emitter.source.OMI_audio_ogg_vorbis.schema.json b/extensions/2.0/OMI_audio_ogg_vorbis/schema/KHR_audio_emitter.source.OMI_audio_ogg_vorbis.schema.json deleted file mode 100644 index ec9c801..0000000 --- a/extensions/2.0/OMI_audio_ogg_vorbis/schema/KHR_audio_emitter.source.OMI_audio_ogg_vorbis.schema.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema", - "title": "OMI_audio_ogg_vorbis glTF KHR_audio_emitter Source Extension", - "type": "object", - "description": "glTF extension to specify audio data on audio sources using the Ogg Vorbis audio data format.", - "allOf": [{ "$ref": "glTFProperty.schema.json" }], - "properties": { - "audio": { - "allOf": [{ "$ref": "glTFid.schema.json" }], - "description": "The index of the item in the audio array with audio data in the Ogg Vorbis format." - }, - "extensions": {}, - "extras": {} - } -} diff --git a/extensions/2.0/OMI_audio_ogg_vorbis/schema/glTF.KHR_audio_emitter.source.OMI_audio_ogg_vorbis.schema.json b/extensions/2.0/OMI_audio_ogg_vorbis/schema/glTF.KHR_audio_emitter.source.OMI_audio_ogg_vorbis.schema.json new file mode 100644 index 0000000..e947cd2 --- /dev/null +++ b/extensions/2.0/OMI_audio_ogg_vorbis/schema/glTF.KHR_audio_emitter.source.OMI_audio_ogg_vorbis.schema.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "glTF.KHR_audio_emitter.source.OMI_audio_ogg_vorbis.schema.json", + "title": "OMI_audio_ogg_vorbis glTF KHR_audio_emitter Source Extension", + "type": "object", + "description": "glTF extension to specify audio data on audio sources using the Ogg Vorbis audio data format.", + "allOf": [{ "$ref": "glTFProperty.schema.json" }], + "properties": { + "audio": { + "allOf": [{ "$ref": "glTFid.schema.json" }], + "description": "The index of the item in the audio array with audio data in the Ogg Vorbis format." + }, + "extensions": {}, + "extras": {} + } +} diff --git a/extensions/2.0/OMI_audio_opus/README.md b/extensions/2.0/OMI_audio_opus/README.md index f5f30dd..b848ec0 100644 --- a/extensions/2.0/OMI_audio_opus/README.md +++ b/extensions/2.0/OMI_audio_opus/README.md @@ -121,6 +121,10 @@ If a glTF contains an audio source using Opus audio with no fallback audio data, If a glTF contains an audio source using Opus audio with no fallback audio data, and `KHR_audio_emitter` is not a required extension, then do not add `OMI_audio_opus` to `extensionsRequired`. Clients supporting `KHR_audio_emitter` but not `OMI_audio_opus` will consider the lack of `"audio"` in a `KHR_audio_emitter` source to be an error, and either will not be able to play audio from that source, or will not load the `KHR_audio_emitter` extension. +### JSON Schema + +See [schema/glTF.KHR_audio_emitter.source.OMI_audio_opus.schema.json](schema/glTF.KHR_audio_emitter.source.OMI_audio_opus.schema.json) for the schema. + ## Known Implementations None diff --git a/extensions/2.0/OMI_audio_opus/schema/KHR_audio_emitter.source.OMI_audio_opus.schema.json b/extensions/2.0/OMI_audio_opus/schema/KHR_audio_emitter.source.OMI_audio_opus.schema.json deleted file mode 100644 index 9388836..0000000 --- a/extensions/2.0/OMI_audio_opus/schema/KHR_audio_emitter.source.OMI_audio_opus.schema.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-04/schema", - "title": "OMI_audio_opus glTF KHR_audio_emitter Source Extension", - "type": "object", - "description": "glTF extension to specify audio data on audio sources using the Opus audio codec in either the Ogg or WebM container formats.", - "allOf": [{ "$ref": "glTFProperty.schema.json" }], - "properties": { - "audio": { - "allOf": [{ "$ref": "glTFid.schema.json" }], - "description": "The index of the item in the audio array with audio data in the Opus audio codec." - }, - "extensions": {}, - "extras": {} - } -} diff --git a/extensions/2.0/OMI_audio_opus/schema/glTF.KHR_audio_emitter.source.OMI_audio_opus.schema.json b/extensions/2.0/OMI_audio_opus/schema/glTF.KHR_audio_emitter.source.OMI_audio_opus.schema.json new file mode 100644 index 0000000..ec51825 --- /dev/null +++ b/extensions/2.0/OMI_audio_opus/schema/glTF.KHR_audio_emitter.source.OMI_audio_opus.schema.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "glTF.KHR_audio_emitter.source.OMI_audio_opus.schema.json", + "title": "OMI_audio_opus glTF KHR_audio_emitter Source Extension", + "type": "object", + "description": "glTF extension to specify audio data on audio sources using the Opus audio codec in either the Ogg or WebM container formats.", + "allOf": [{ "$ref": "glTFProperty.schema.json" }], + "properties": { + "audio": { + "allOf": [{ "$ref": "glTFid.schema.json" }], + "description": "The index of the item in the audio array with audio data in the Opus audio codec." + }, + "extensions": {}, + "extras": {} + } +} diff --git a/extensions/2.0/OMI_personality/README.md b/extensions/2.0/OMI_personality/README.md index 9972ccd..be24f08 100644 --- a/extensions/2.0/OMI_personality/README.md +++ b/extensions/2.0/OMI_personality/README.md @@ -20,7 +20,7 @@ To use the "OMI_personality" extension, you must first specify it in the extensi ```json { - "extensionsUsed": ["OMI_personality"] + "extensionsUsed": ["OMI_personality"] } ``` @@ -28,18 +28,18 @@ Next, apply the extension to a child node of the glTF file. The node's position ```json { - "nodes": [ - { - "name": "cat", - "extensions": { - "OMI_personality": { - "agent": "cat", - "personality": "#agent has a cheerful personality.", - "defaultMessage": "nya nya!" - } - } - } - ] + "nodes": [ + { + "name": "cat", + "extensions": { + "OMI_personality": { + "agent": "cat", + "personality": "#agent has a cheerful personality.", + "defaultMessage": "nya nya!" + } + } + } + ] } ``` @@ -60,26 +60,26 @@ The OMI_personality extension is defined by the following JSON schema: ```json { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "OMI_personality", - "description": "An extension for the glTF format that defines a personality for a node and an endpoint where additional information can be queried.", - "type": "object", - "properties": { - "agent": { - "type": "string", - "description": "The name of the agent associated with the node.", - "maxLength": 128 - }, - "personality": { - "type": "string", - "description": "A description of the agent's personality." - }, - "defaultMessage": { - "type": "string", - "description": "The default message that the agent will send on initialization." - } - }, - "required": ["agent", "personality"] + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "OMI_personality", + "description": "An extension for the glTF format that defines a personality for a node and an endpoint where additional information can be queried.", + "type": "object", + "properties": { + "agent": { + "type": "string", + "description": "The name of the agent associated with the node.", + "maxLength": 128 + }, + "personality": { + "type": "string", + "description": "A description of the agent's personality." + }, + "defaultMessage": { + "type": "string", + "description": "The default message that the agent will send on initialization." + } + }, + "required": ["agent", "personality"] } ``` @@ -88,7 +88,7 @@ The OMI_personality extension is defined by the following JSON schema: The OMI_personality extension allows users to inject a unique personality into their virtual representations and adheres to a simple set of properties that aim to be compatible with lots of AI software to come. In the below example implementation, the data for personality is used to combine with the input from the user talking to the NPC. The final prompt is being sent to the OpenAI Davinci model to allow for completion of the agent's response. ```js - // Request coming from three.js frontend that is querying this endpoint making a call to the GPT-3 model. Contains the Personality data embeded in the NPC file. + // Request coming from three.js frontend that is querying this endpoint making a call to the GPT-3 model. Contains the Personality data embeded in the NPC file. const data = await request.json(); let prompt = data.inputs.personality; let prompt = data.Input.personality; @@ -103,7 +103,7 @@ The OMI_personality extension allows users to inject a unique personality into t const token = authorization.split(' ')[1]; const postData = { - prompt: finalPrompt , + prompt: finalPrompt, max_tokens: 500, stop : ["###"], temperature: 0.7, diff --git a/extensions/2.0/OMI_physics_body/examples/complex/indirect_children.gltf b/extensions/2.0/OMI_physics_body/examples/complex/indirect_children.gltf index 881187d..18bc05e 100644 --- a/extensions/2.0/OMI_physics_body/examples/complex/indirect_children.gltf +++ b/extensions/2.0/OMI_physics_body/examples/complex/indirect_children.gltf @@ -1,125 +1,125 @@ { - "asset": { - "version": "2.0" - }, - "extensions": { - "OMI_physics_shape": { - "shapes": [ - { - "type": "box", - "box": { - "size": [1, 1, 1] - } - } - ] - } - }, - "extensionsUsed": ["OMI_physics_shape", "OMI_physics_body"], - "nodes": [ - { - "children": [1, 3, 5, 8, 11, 12], - "name": "IndirectColliders" - }, - { - "children": [2], - "extensions": { - "OMI_physics_body": { - "motion": { "type": "kinematic" } - } - }, - "name": "KinematicDirect", - "translation": [0, 0, 0] - }, - { - "extensions": { - "OMI_physics_body": { - "collider": { "shape": 0 } - } - }, - "name": "BoxShapeKinematicDirect" - }, - { - "children": [4], - "extensions": { - "OMI_physics_body": { - "trigger": {} - } - }, - "name": "TriggerDirect", - "translation": [0, 0, -2] - }, - { - "extensions": { - "OMI_physics_body": { - "trigger": { "shape": 0 } - } - }, - "name": "BoxShapeTriggerDirect" - }, - { - "children": [6], - "extensions": { - "OMI_physics_body": { - "motion": { "type": "kinematic" } - } - }, - "name": "KinematicIndirect", - "translation": [-2, 0, 0] - }, - { - "children": [7], - "name": "IntermediaryNodeKinematic" - }, - { - "extensions": { - "OMI_physics_body": { - "collider": { "shape": 0 } - } - }, - "name": "BoxShapeKinematicIndirect" - }, - { - "children": [9], - "extensions": { - "OMI_physics_body": { - "trigger": {} - } - }, - "name": "TriggerIndirect", - "translation": [-2, 0, -2] - }, - { - "children": [10], - "name": "IntermediaryNodeTrigger" - }, - { - "extensions": { - "OMI_physics_body": { - "trigger": { "shape": 0 } - } - }, - "name": "BoxShapeTriggerIndirect" - }, - { - "extensions": { - "OMI_physics_body": { - "motion": { "type": "kinematic" }, - "collider": { "shape": 0 } - } - }, - "name": "KinematicSameNode", - "translation": [2, 0, 0] - }, - { - "extensions": { - "OMI_physics_body": { - "trigger": { "shape": 0 } - } - }, - "name": "TriggerSameNode", - "translation": [2, 0, -2] - } - ], - "scene": 0, - "scenes": [{ "nodes": [0] }] + "asset": { + "version": "2.0" + }, + "extensions": { + "OMI_physics_shape": { + "shapes": [ + { + "type": "box", + "box": { + "size": [1, 1, 1] + } + } + ] + } + }, + "extensionsUsed": ["OMI_physics_shape", "OMI_physics_body"], + "nodes": [ + { + "children": [1, 3, 5, 8, 11, 12], + "name": "IndirectColliders" + }, + { + "children": [2], + "extensions": { + "OMI_physics_body": { + "motion": { "type": "kinematic" } + } + }, + "name": "KinematicDirect", + "translation": [0, 0, 0] + }, + { + "extensions": { + "OMI_physics_body": { + "collider": { "shape": 0 } + } + }, + "name": "BoxShapeKinematicDirect" + }, + { + "children": [4], + "extensions": { + "OMI_physics_body": { + "trigger": {} + } + }, + "name": "TriggerDirect", + "translation": [0, 0, -2] + }, + { + "extensions": { + "OMI_physics_body": { + "trigger": { "shape": 0 } + } + }, + "name": "BoxShapeTriggerDirect" + }, + { + "children": [6], + "extensions": { + "OMI_physics_body": { + "motion": { "type": "kinematic" } + } + }, + "name": "KinematicIndirect", + "translation": [-2, 0, 0] + }, + { + "children": [7], + "name": "IntermediaryNodeKinematic" + }, + { + "extensions": { + "OMI_physics_body": { + "collider": { "shape": 0 } + } + }, + "name": "BoxShapeKinematicIndirect" + }, + { + "children": [9], + "extensions": { + "OMI_physics_body": { + "trigger": {} + } + }, + "name": "TriggerIndirect", + "translation": [-2, 0, -2] + }, + { + "children": [10], + "name": "IntermediaryNodeTrigger" + }, + { + "extensions": { + "OMI_physics_body": { + "trigger": { "shape": 0 } + } + }, + "name": "BoxShapeTriggerIndirect" + }, + { + "extensions": { + "OMI_physics_body": { + "motion": { "type": "kinematic" }, + "collider": { "shape": 0 } + } + }, + "name": "KinematicSameNode", + "translation": [2, 0, 0] + }, + { + "extensions": { + "OMI_physics_body": { + "trigger": { "shape": 0 } + } + }, + "name": "TriggerSameNode", + "translation": [2, 0, -2] + } + ], + "scene": 0, + "scenes": [{ "nodes": [0] }] } diff --git a/extensions/2.0/OMI_physics_body/schema/node.OMI_physics_body.collider.schema.json b/extensions/2.0/OMI_physics_body/schema/node.OMI_physics_body.collider.schema.json index 52e3b3a..6bde046 100644 --- a/extensions/2.0/OMI_physics_body/schema/node.OMI_physics_body.collider.schema.json +++ b/extensions/2.0/OMI_physics_body/schema/node.OMI_physics_body.collider.schema.json @@ -1,20 +1,14 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "node.OMI_physics_body.collider.schema.json", "title": "OMI_physics_body Collider Property", "type": "object", - "allOf": [ - { - "$ref": "glTFProperty.schema.json" - } - ], + "description": "Parameters describing the geometric shape used for collisions.", + "allOf": [ { "$ref" : "glTFProperty.schema.json" } ], "properties": { "shape": { + "allOf": [ { "$ref": "glTFid.schema.json" } ], "description": "The id of the shape referenced by this node.", - "allOf": [ - { - "$ref": "glTFid.schema.json" - } - ], "default": -1 }, "extensions": { }, diff --git a/extensions/2.0/OMI_physics_body/schema/node.OMI_physics_body.motion.schema.json b/extensions/2.0/OMI_physics_body/schema/node.OMI_physics_body.motion.schema.json index 881a078..2d2841b 100644 --- a/extensions/2.0/OMI_physics_body/schema/node.OMI_physics_body.motion.schema.json +++ b/extensions/2.0/OMI_physics_body/schema/node.OMI_physics_body.motion.schema.json @@ -1,10 +1,10 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "node.OMI_physics_body.motion.schema.json", "title": "OMI_physics_body Motion Property", "type": "object", - "required": [ - "type" - ], + "description": "Parameter describing the motion of a physics body glTF node.", + "allOf": [ { "$ref" : "glTFProperty.schema.json" } ], "properties": { "type": { "type": "string", @@ -42,5 +42,8 @@ }, "extensions": { }, "extras": { } - } + }, + "required": [ + "type" + ] } diff --git a/extensions/2.0/OMI_physics_body/schema/node.OMI_physics_body.schema.json b/extensions/2.0/OMI_physics_body/schema/node.OMI_physics_body.schema.json index eccd772..8dfd735 100644 --- a/extensions/2.0/OMI_physics_body/schema/node.OMI_physics_body.schema.json +++ b/extensions/2.0/OMI_physics_body/schema/node.OMI_physics_body.schema.json @@ -1,7 +1,10 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "node.OMI_physics_body.schema.json", "title": "OMI_physics_body glTF Node Extension", "type": "object", + "description": "Defines physics information for a node.", + "allOf": [ { "$ref" : "glTFProperty.schema.json" } ], "properties": { "motion": { "type": "object", diff --git a/extensions/2.0/OMI_physics_body/schema/node.OMI_physics_body.trigger.schema.json b/extensions/2.0/OMI_physics_body/schema/node.OMI_physics_body.trigger.schema.json index 57bb2b9..5ca2e8e 100644 --- a/extensions/2.0/OMI_physics_body/schema/node.OMI_physics_body.trigger.schema.json +++ b/extensions/2.0/OMI_physics_body/schema/node.OMI_physics_body.trigger.schema.json @@ -1,12 +1,10 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "node.OMI_physics_body.trigger.schema.json", "title": "OMI_physics_body Trigger Property", "type": "object", - "allOf": [ - { - "$ref": "glTFProperty.schema.json" - } - ], + "description": "Parameters describing the geometric shape used for trigger volumes.", + "allOf": [ { "$ref" : "glTFProperty.schema.json" } ], "properties": { "shape": { "description": "The id of the shape referenced by this node.", diff --git a/extensions/2.0/OMI_physics_gravity/schema/glTF.OMI_physics_gravity.schema.json b/extensions/2.0/OMI_physics_gravity/schema/glTF.OMI_physics_gravity.schema.json index 9bf532b..23630a4 100644 --- a/extensions/2.0/OMI_physics_gravity/schema/glTF.OMI_physics_gravity.schema.json +++ b/extensions/2.0/OMI_physics_gravity/schema/glTF.OMI_physics_gravity.schema.json @@ -1,10 +1,10 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "glTF.OMI_physics_gravity.schema.json", "title": "OMI_physics_gravity glTF Document Extension", "type": "object", - "required": [ - "gravity" - ], + "description": "Top level global gravity parameters.", + "allOf": [ { "$ref": "glTFProperty.schema.json" } ], "properties": { "gravity": { "type": "number", @@ -17,5 +17,8 @@ "minItems": 3, "maxItems": 3 } - } + }, + "required": [ + "gravity" + ] } diff --git a/extensions/2.0/OMI_physics_gravity/schema/node.OMI_physics_gravity.directional.schema.json b/extensions/2.0/OMI_physics_gravity/schema/node.OMI_physics_gravity.directional.schema.json index 2faa057..d01c385 100644 --- a/extensions/2.0/OMI_physics_gravity/schema/node.OMI_physics_gravity.directional.schema.json +++ b/extensions/2.0/OMI_physics_gravity/schema/node.OMI_physics_gravity.directional.schema.json @@ -1,7 +1,10 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "node.OMI_physics_gravity.directional.schema.json", "title": "OMI_physics_gravity Directional Gravity", "type": "object", + "description": "Parameters describing a directional gravity field.", + "allOf": [ { "$ref": "glTFProperty.schema.json" } ], "properties": { "direction": { "type": "array", diff --git a/extensions/2.0/OMI_physics_gravity/schema/node.OMI_physics_gravity.disc.schema.json b/extensions/2.0/OMI_physics_gravity/schema/node.OMI_physics_gravity.disc.schema.json index ff44aff..ee7f93d 100644 --- a/extensions/2.0/OMI_physics_gravity/schema/node.OMI_physics_gravity.disc.schema.json +++ b/extensions/2.0/OMI_physics_gravity/schema/node.OMI_physics_gravity.disc.schema.json @@ -1,7 +1,10 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "node.OMI_physics_gravity.disc.schema.json", "title": "OMI_physics_gravity Disc Gravity", "type": "object", + "description": "Parameters describing a disc gravity field.", + "allOf": [ { "$ref": "glTFProperty.schema.json" } ], "properties": { "radius": { "type": "number", diff --git a/extensions/2.0/OMI_physics_gravity/schema/node.OMI_physics_gravity.line.schema.json b/extensions/2.0/OMI_physics_gravity/schema/node.OMI_physics_gravity.line.schema.json index 9026749..1016f8b 100644 --- a/extensions/2.0/OMI_physics_gravity/schema/node.OMI_physics_gravity.line.schema.json +++ b/extensions/2.0/OMI_physics_gravity/schema/node.OMI_physics_gravity.line.schema.json @@ -1,10 +1,10 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "node.OMI_physics_gravity.line.schema.json", "title": "OMI_physics_gravity Line Gravity", "type": "object", - "required": [ - "points" - ], + "description": "Parameters describing a line type gravity field.", + "allOf": [ { "$ref": "glTFProperty.schema.json" } ], "properties": { "points": { "type": "array", @@ -19,5 +19,8 @@ }, "extensions": { }, "extras": { } - } + }, + "required": [ + "points" + ] } diff --git a/extensions/2.0/OMI_physics_gravity/schema/node.OMI_physics_gravity.point.schema.json b/extensions/2.0/OMI_physics_gravity/schema/node.OMI_physics_gravity.point.schema.json index 5941116..1563dcd 100644 --- a/extensions/2.0/OMI_physics_gravity/schema/node.OMI_physics_gravity.point.schema.json +++ b/extensions/2.0/OMI_physics_gravity/schema/node.OMI_physics_gravity.point.schema.json @@ -1,7 +1,10 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "node.OMI_physics_gravity.point.schema.json", "title": "OMI_physics_gravity Point Gravity", "type": "object", + "description": "Parameters describing a point gravity field.", + "allOf": [ { "$ref": "glTFProperty.schema.json" } ], "properties": { "unitDistance": { "type": "number", diff --git a/extensions/2.0/OMI_physics_gravity/schema/node.OMI_physics_gravity.schema.json b/extensions/2.0/OMI_physics_gravity/schema/node.OMI_physics_gravity.schema.json index b655c81..f23f1ff 100644 --- a/extensions/2.0/OMI_physics_gravity/schema/node.OMI_physics_gravity.schema.json +++ b/extensions/2.0/OMI_physics_gravity/schema/node.OMI_physics_gravity.schema.json @@ -1,11 +1,10 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "node.OMI_physics_gravity.schema.json", "title": "OMI_physics_gravity glTF Node Extension", "type": "object", - "required": [ - "type", - "gravity" - ], + "description": "Defines gravity information for a node.", + "allOf": [ { "$ref": "glTFProperty.schema.json" } ], "properties": { "type": { "type": "string", @@ -41,6 +40,10 @@ "extensions": { }, "extras": { } }, + "required": [ + "type", + "gravity" + ], "oneOf": [ { "required": [ diff --git a/extensions/2.0/OMI_physics_gravity/schema/node.OMI_physics_gravity.shaped.schema.json b/extensions/2.0/OMI_physics_gravity/schema/node.OMI_physics_gravity.shaped.schema.json index 3a528a9..6a91869 100644 --- a/extensions/2.0/OMI_physics_gravity/schema/node.OMI_physics_gravity.shaped.schema.json +++ b/extensions/2.0/OMI_physics_gravity/schema/node.OMI_physics_gravity.shaped.schema.json @@ -1,10 +1,10 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "node.OMI_physics_gravity.shaped.schema.json", "title": "OMI_physics_gravity Shaped Gravity", "type": "object", - "required": [ - "shape" - ], + "description": "Parameters describing a gravity field that points towards a shape.", + "allOf": [ { "$ref": "glTFProperty.schema.json" } ], "properties": { "shape": { "$ref": "glTFid.schema.json", @@ -17,5 +17,8 @@ }, "extensions": { }, "extras": { } - } + }, + "required": [ + "shape" + ] } diff --git a/extensions/2.0/OMI_physics_gravity/schema/node.OMI_physics_gravity.torus.schema.json b/extensions/2.0/OMI_physics_gravity/schema/node.OMI_physics_gravity.torus.schema.json index 5156c9a..cdac571 100644 --- a/extensions/2.0/OMI_physics_gravity/schema/node.OMI_physics_gravity.torus.schema.json +++ b/extensions/2.0/OMI_physics_gravity/schema/node.OMI_physics_gravity.torus.schema.json @@ -1,7 +1,10 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "node.OMI_physics_gravity.torus.schema.json", "title": "OMI_physics_gravity Torus Gravity", "type": "object", + "description": "Parameters describing a torus gravity field.", + "allOf": [ { "$ref": "glTFProperty.schema.json" } ], "properties": { "radius": { "type": "number", diff --git a/extensions/2.0/OMI_physics_joint/README.md b/extensions/2.0/OMI_physics_joint/README.md index b2624ee..5d34d72 100644 --- a/extensions/2.0/OMI_physics_joint/README.md +++ b/extensions/2.0/OMI_physics_joint/README.md @@ -182,7 +182,7 @@ In this chart, "fixed" means "constrained with lower and upper limits set to zer ### JSON Schema -See [joint_constraint.schema.json](schema/joint_constraint.schema.json), [node.OMI_physics_joint.schema.json](schema/node.OMI_physics_joint.schema.json), and [glTF.OMI_physics_joint.schema.json](schema/glTF.OMI_physics_joint.schema.json) for the schemas. +See [glTF.OMI_physics_joint.joint_constraint.schema.json](schema/glTF.OMI_physics_joint.joint_constraint.schema.json), [node.OMI_physics_joint.schema.json](schema/node.OMI_physics_joint.schema.json), and [glTF.OMI_physics_joint.schema.json](schema/glTF.OMI_physics_joint.schema.json) for the schemas. ## Known Implementations diff --git a/extensions/2.0/OMI_physics_joint/schema/joint_constraint.schema.json b/extensions/2.0/OMI_physics_joint/schema/glTF.OMI_physics_joint.joint_constraint.schema.json similarity index 82% rename from extensions/2.0/OMI_physics_joint/schema/joint_constraint.schema.json rename to extensions/2.0/OMI_physics_joint/schema/glTF.OMI_physics_joint.joint_constraint.schema.json index a09f925..dc3d8d3 100644 --- a/extensions/2.0/OMI_physics_joint/schema/joint_constraint.schema.json +++ b/extensions/2.0/OMI_physics_joint/schema/glTF.OMI_physics_joint.joint_constraint.schema.json @@ -1,10 +1,10 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "glTF.OMI_physics_joint.joint_constraint.schema.json", "title": "OMI_physics_joint Joint Constraint", "type": "object", - "required": [ - "type" - ], + "description": "Parameters describing a physics joint constraint / limit.", + "allOf": [ { "$ref": "glTFProperty.schema.json" } ], "properties": { "linearAxes": { "type": "array", diff --git a/extensions/2.0/OMI_physics_joint/schema/glTF.OMI_physics_joint.schema.json b/extensions/2.0/OMI_physics_joint/schema/glTF.OMI_physics_joint.schema.json index 9fbd443..50af464 100644 --- a/extensions/2.0/OMI_physics_joint/schema/glTF.OMI_physics_joint.schema.json +++ b/extensions/2.0/OMI_physics_joint/schema/glTF.OMI_physics_joint.schema.json @@ -1,15 +1,10 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "glTF.OMI_physics_joint.schema.json", "title": "OMI_physics_joint glTF Document Extension", "type": "object", - "allOf": [ - { - "$ref": "glTFProperty.schema.json" - } - ], - "required": [ - "constraints" - ], + "description": "Top level joint resources.", + "allOf": [ { "$ref": "glTFProperty.schema.json" } ], "properties": { "constraints": { "description": "An array of physics joint constraints that can be referenced by nodes.", @@ -22,5 +17,8 @@ }, "extensions": { }, "extras": { } - } + }, + "required": [ + "constraints" + ] } diff --git a/extensions/2.0/OMI_physics_joint/schema/node.OMI_physics_joint.schema.json b/extensions/2.0/OMI_physics_joint/schema/node.OMI_physics_joint.schema.json index 356db97..37ee9d6 100644 --- a/extensions/2.0/OMI_physics_joint/schema/node.OMI_physics_joint.schema.json +++ b/extensions/2.0/OMI_physics_joint/schema/node.OMI_physics_joint.schema.json @@ -1,15 +1,10 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "node.OMI_physics_joint.schema.json", "title": "OMI_physics_joint glTF Node Extension", "type": "object", - "allOf": [ - { - "$ref": "glTFProperty.schema.json" - } - ], - "required": [ - "constraints" - ], + "description": "Node extension that references a physics joint.", + "allOf": [ { "$ref": "glTFProperty.schema.json" } ], "properties": { "constraints": { "description": "An array of ids of joint constraints that are applied to the node.", @@ -32,5 +27,8 @@ }, "extensions": { }, "extras": { } - } + }, + "required": [ + "constraints" + ] } diff --git a/extensions/2.0/OMI_physics_shape/examples/box_collider.gltf b/extensions/2.0/OMI_physics_shape/examples/box_collider.gltf index 46cfd5f..5939743 100644 --- a/extensions/2.0/OMI_physics_shape/examples/box_collider.gltf +++ b/extensions/2.0/OMI_physics_shape/examples/box_collider.gltf @@ -30,6 +30,6 @@ "name": "BoxShape" } ], - "scene": 0, - "scenes": [{ "nodes": [0] }] + "scene": 0, + "scenes": [{ "nodes": [0] }] } diff --git a/extensions/2.0/OMI_physics_shape/examples/capsule_collider.gltf b/extensions/2.0/OMI_physics_shape/examples/capsule_collider.gltf index e474778..2937462 100644 --- a/extensions/2.0/OMI_physics_shape/examples/capsule_collider.gltf +++ b/extensions/2.0/OMI_physics_shape/examples/capsule_collider.gltf @@ -31,6 +31,6 @@ "name": "CapsuleShape" } ], - "scene": 0, - "scenes": [{ "nodes": [0] }] + "scene": 0, + "scenes": [{ "nodes": [0] }] } diff --git a/extensions/2.0/OMI_physics_shape/examples/convex/convex_hull.gltf b/extensions/2.0/OMI_physics_shape/examples/convex/convex_hull.gltf index 58248c7..9c93cf9 100644 --- a/extensions/2.0/OMI_physics_shape/examples/convex/convex_hull.gltf +++ b/extensions/2.0/OMI_physics_shape/examples/convex/convex_hull.gltf @@ -232,6 +232,6 @@ "name": "ConvexMesh" } ], - "scene": 0, - "scenes": [{ "nodes": [0] }] + "scene": 0, + "scenes": [{ "nodes": [0] }] } diff --git a/extensions/2.0/OMI_physics_shape/examples/convex/convex_hull_only.gltf b/extensions/2.0/OMI_physics_shape/examples/convex/convex_hull_only.gltf index 2a65df0..4e05c43 100644 --- a/extensions/2.0/OMI_physics_shape/examples/convex/convex_hull_only.gltf +++ b/extensions/2.0/OMI_physics_shape/examples/convex/convex_hull_only.gltf @@ -98,6 +98,6 @@ "name": "ConvexHullShape" } ], - "scene": 0, - "scenes": [{ "nodes": [0] }] + "scene": 0, + "scenes": [{ "nodes": [0] }] } diff --git a/extensions/2.0/OMI_physics_shape/examples/cylinder_collider.gltf b/extensions/2.0/OMI_physics_shape/examples/cylinder_collider.gltf index 3be22e8..d1a416c 100644 --- a/extensions/2.0/OMI_physics_shape/examples/cylinder_collider.gltf +++ b/extensions/2.0/OMI_physics_shape/examples/cylinder_collider.gltf @@ -31,6 +31,6 @@ "name": "CylinderShape" } ], - "scene": 0, - "scenes": [{ "nodes": [0] }] + "scene": 0, + "scenes": [{ "nodes": [0] }] } diff --git a/extensions/2.0/OMI_physics_shape/examples/default_box.gltf b/extensions/2.0/OMI_physics_shape/examples/default_box.gltf index 373429d..f4f7c91 100644 --- a/extensions/2.0/OMI_physics_shape/examples/default_box.gltf +++ b/extensions/2.0/OMI_physics_shape/examples/default_box.gltf @@ -27,6 +27,6 @@ "name": "DefaultBoxShape" } ], - "scene": 0, - "scenes": [{ "nodes": [0] }] + "scene": 0, + "scenes": [{ "nodes": [0] }] } diff --git a/extensions/2.0/OMI_physics_shape/examples/sphere_collider.gltf b/extensions/2.0/OMI_physics_shape/examples/sphere_collider.gltf index b7ad929..b473e11 100644 --- a/extensions/2.0/OMI_physics_shape/examples/sphere_collider.gltf +++ b/extensions/2.0/OMI_physics_shape/examples/sphere_collider.gltf @@ -30,6 +30,6 @@ "name": "SphereShape" } ], - "scene": 0, - "scenes": [{ "nodes": [0] }] + "scene": 0, + "scenes": [{ "nodes": [0] }] } diff --git a/extensions/2.0/OMI_physics_shape/examples/trimesh/concave_trimesh.gltf b/extensions/2.0/OMI_physics_shape/examples/trimesh/concave_trimesh.gltf index 876e006..9eb7754 100644 --- a/extensions/2.0/OMI_physics_shape/examples/trimesh/concave_trimesh.gltf +++ b/extensions/2.0/OMI_physics_shape/examples/trimesh/concave_trimesh.gltf @@ -191,6 +191,6 @@ "name": "BoxMeshInstance" } ], - "scene": 0, - "scenes": [{ "nodes": [0] }] + "scene": 0, + "scenes": [{ "nodes": [0] }] } diff --git a/extensions/2.0/OMI_physics_shape/examples/trimesh/concave_trimesh_only.gltf b/extensions/2.0/OMI_physics_shape/examples/trimesh/concave_trimesh_only.gltf index 017aef4..328a3d1 100644 --- a/extensions/2.0/OMI_physics_shape/examples/trimesh/concave_trimesh_only.gltf +++ b/extensions/2.0/OMI_physics_shape/examples/trimesh/concave_trimesh_only.gltf @@ -98,6 +98,6 @@ "name": "ConcaveTrimeshShape" } ], - "scene": 0, - "scenes": [{ "nodes": [0] }] + "scene": 0, + "scenes": [{ "nodes": [0] }] } diff --git a/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.schema.json b/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.schema.json index c7343cc..485e4d8 100644 --- a/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.schema.json +++ b/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.schema.json @@ -1,16 +1,14 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "glTF.OMI_physics_shape.schema.json", "title": "OMI_physics_shape glTF Document Extension", "type": "object", - "allOf": [ - { - "$ref": "glTFProperty.schema.json" - } - ], + "description": "Top level shape resources.", + "allOf": [ { "$ref" : "glTFProperty.schema.json" } ], "properties": { "shapes": { - "description": "An array of shapes that can be referenced by nodes.", "type": "array", + "description": "An array of shapes that can be referenced by nodes.", "items": { "type": "object", "$ref": "shape.schema.json" diff --git a/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.shape.box.schema.json b/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.shape.box.schema.json index 1e18ff5..d46e842 100644 --- a/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.shape.box.schema.json +++ b/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.shape.box.schema.json @@ -1,7 +1,10 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "glTF.OMI_physics_shape.shape.box.schema.json", "title": "OMI_physics_shape Box Shape", "type": "object", + "description": "Parameters describing a box physics shape.", + "allOf": [ { "$ref" : "glTFProperty.schema.json" } ], "properties": { "size": { "type": "array", diff --git a/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.shape.capsule.schema.json b/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.shape.capsule.schema.json index 5c25932..fbbdd5b 100644 --- a/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.shape.capsule.schema.json +++ b/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.shape.capsule.schema.json @@ -1,7 +1,10 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "glTF.OMI_physics_shape.shape.capsule.schema.json", "title": "OMI_physics_shape Capsule Shape", "type": "object", + "description": "Parameters describing a capsule physics shape.", + "allOf": [ { "$ref" : "glTFProperty.schema.json" } ], "properties": { "radius": { "type": "number", diff --git a/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.shape.convex.schema.json b/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.shape.convex.schema.json index 0883f8e..9dcfdf2 100644 --- a/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.shape.convex.schema.json +++ b/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.shape.convex.schema.json @@ -1,15 +1,14 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "glTF.OMI_physics_shape.shape.convex.schema.json", "title": "OMI_physics_shape Convex Shape", "type": "object", + "description": "Parameters describing a convex hull physics shape.", + "allOf": [ { "$ref" : "glTFProperty.schema.json" } ], "properties": { "mesh": { - "description": "A reference to the mesh in the glTF meshes array to use for this convex hull shape. The mesh MUST be a trimesh and have at least one triangle.", - "allOf": [ - { - "$ref": "glTFid.schema.json" - } - ] + "allOf": [ { "$ref": "glTFid.schema.json" } ], + "description": "A reference to the mesh in the glTF meshes array to use for this convex hull shape. The mesh MUST be a trimesh and have at least one triangle." }, "extensions": { }, "extras": { } diff --git a/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.shape.cylinder.schema.json b/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.shape.cylinder.schema.json index bf4d78c..ee0d28a 100644 --- a/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.shape.cylinder.schema.json +++ b/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.shape.cylinder.schema.json @@ -1,7 +1,10 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "glTF.OMI_physics_shape.shape.cylinder.schema.json", "title": "OMI_physics_shape Cylinder Shape", "type": "object", + "description": "Parameters describing a cylinder physics shape.", + "allOf": [ { "$ref" : "glTFProperty.schema.json" } ], "properties": { "radius": { "type": "number", diff --git a/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.shape.schema.json b/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.shape.schema.json index 8956adb..d6e6d84 100644 --- a/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.shape.schema.json +++ b/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.shape.schema.json @@ -1,10 +1,10 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "glTF.OMI_physics_shape.shape.schema.json", "title": "OMI_physics_shape Shape Resource", "type": "object", - "required": [ - "type" - ], + "description": "Defines a physics shape resource.", + "allOf": [ { "$ref" : "glTFChildOfRootProperty.schema.json" } ], "properties": { "type": { "type": "string", @@ -21,6 +21,9 @@ "extensions": { }, "extras": { } }, + "required": [ + "type" + ], "oneOf": [ { "required": [ diff --git a/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.shape.sphere.schema.json b/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.shape.sphere.schema.json index ce8f948..064ac2a 100644 --- a/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.shape.sphere.schema.json +++ b/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.shape.sphere.schema.json @@ -1,7 +1,10 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "glTF.OMI_physics_shape.shape.sphere.schema.json", "title": "OMI_physics_shape Sphere Shape", "type": "object", + "description": "Parameters describing a sphere physics shape.", + "allOf": [ { "$ref" : "glTFProperty.schema.json" } ], "properties": { "radius": { "type": "number", diff --git a/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.shape.trimesh.schema.json b/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.shape.trimesh.schema.json index faf16dc..3c67d2e 100644 --- a/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.shape.trimesh.schema.json +++ b/extensions/2.0/OMI_physics_shape/schema/glTF.OMI_physics_shape.shape.trimesh.schema.json @@ -1,15 +1,14 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "glTF.OMI_physics_shape.shape.trimesh.schema.json", "title": "OMI_physics_shape Trimesh Shape", "type": "object", + "description": "Parameters describing a concave trimesh physics shape.", + "allOf": [ { "$ref" : "glTFProperty.schema.json" } ], "properties": { "mesh": { - "description": "A reference to the mesh in the glTF meshes array to use for this concave trimesh shape. The mesh MUST be a trimesh and have at least one triangle.", - "allOf": [ - { - "$ref": "glTFid.schema.json" - } - ] + "allOf": [ { "$ref": "glTFid.schema.json" } ], + "description": "A reference to the mesh in the glTF meshes array to use for this concave trimesh shape. The mesh MUST be a trimesh and have at least one triangle." }, "extensions": { }, "extras": { } diff --git a/extensions/2.0/OMI_seat/README.md b/extensions/2.0/OMI_seat/README.md index f2599a2..936600b 100644 --- a/extensions/2.0/OMI_seat/README.md +++ b/extensions/2.0/OMI_seat/README.md @@ -131,38 +131,6 @@ In a nutshell, the legs sit as close to the seat as possible while not clipping See [schema/node.OMI_seat.schema.json](schema/node.OMI_seat.schema.json) for the schema. -```json -{ - "$schema": "http://json-schema.org/draft-04/schema", - "title": "OMI_seat glTF Node Extension", - "type": "object", - "required": [ - "back", - "foot", - "knee" - ], - "properties": { - "back": { - "type": "array", - "description": "Three number array defining the seat position corresponding to the character's back position limit in local space." - }, - "foot": { - "type": "array", - "description": "Three number array defining the seat position corresponding to the character's feet position limit in local space." - }, - "knee": { - "type": "array", - "description": "Three number array defining the seat position corresponding to the character's knee base position in local space." - }, - "angle": { - "type": "number", - "description": "The angle between the spine and back-knee line in radians.", - "default": 1.57079632679489662 - } - } -} -``` - ## Known Implementations * Godot Engine add-on diff --git a/extensions/2.0/OMI_seat/schema/node.OMI_seat.schema.json b/extensions/2.0/OMI_seat/schema/node.OMI_seat.schema.json index 4dbe8a0..13f08d5 100644 --- a/extensions/2.0/OMI_seat/schema/node.OMI_seat.schema.json +++ b/extensions/2.0/OMI_seat/schema/node.OMI_seat.schema.json @@ -1,12 +1,10 @@ { - "$schema": "http://json-schema.org/draft-04/schema", + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "node.OMI_seat.schema.json", "title": "OMI_seat glTF Node Extension", "type": "object", - "required": [ - "back", - "foot", - "knee" - ], + "description": "Parameters describing a seat for a character.", + "allOf": [ { "$ref" : "glTFProperty.schema.json" } ], "properties": { "back": { "type": "array", @@ -27,5 +25,10 @@ }, "extensions": { }, "extras": { } - } + }, + "required": [ + "back", + "foot", + "knee" + ] } diff --git a/extensions/2.0/OMI_spawn_point/README.md b/extensions/2.0/OMI_spawn_point/README.md index fabebda..fe01cc3 100644 --- a/extensions/2.0/OMI_spawn_point/README.md +++ b/extensions/2.0/OMI_spawn_point/README.md @@ -27,7 +27,7 @@ To use the "OMI_spawn_point" extension, you must first specify it in the extensi ```json { - "extensionsUsed": ["OMI_spawn_point"] + "extensionsUsed": ["OMI_spawn_point"] } ``` @@ -35,20 +35,20 @@ Next, apply the extension to a child node of the glTF file. The node's position ```json { - "nodes": [ - { - "name": "spawn_point_node", - "translation": [0, 0, 1], - "rotation": [0, 0, 0, 1], - "extensions": { - "OMI_spawn_point": { - "title": "Hill East", - "team": "Red", - "group": "Hill" - } - } - } - ] + "nodes": [ + { + "name": "spawn_point_node", + "translation": [0, 0, 1], + "rotation": [0, 0, 0, 1], + "extensions": { + "OMI_spawn_point": { + "title": "Hill East", + "team": "Red", + "group": "Hill" + } + } + } + ] } ``` @@ -74,34 +74,9 @@ How each application decides to use the properties, or if they are used at all, ### JSON Schema -The OMI_spawn_point extension is defined by the following JSON schema: - -```json -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "OMI_spawn_point", - "description": "An extension for the glTF format that defines a spawn point in a scene.", - "type": "object", - "properties": { - "title": { - "type": "string", - "description": "The title of the spawn point.", - "maxLength": 128 - }, - "team": { - "type": "string", - "description": "The team that this spawn point belongs to, if any.", - "maxLength": 128 - }, - "group": { - "type": "string", - "description": "The group that this spawn point belongs to, if any.", - "maxLength": 128 - } - } -} -``` +See [schema/node.OMI_spawn_point.schema.json](schema/node.OMI_spawn_point.schema.json) for the schema. +## Known Implementations Example Three.js implementation - probably not to be included in final proposal @@ -111,30 +86,30 @@ const scene = new THREE.Scene(); // Set up a perspective camera const camera = new THREE.PerspectiveCamera( - 75, - window.innerWidth / window.innerHeight, - 0.1, - 1000 + 75, + window.innerWidth / window.innerHeight, + 0.1, + 1000 ); // Load the glTF file const gltfLoader = new THREE.GLTFLoader(); gltfLoader.load('my-omi-spawn-file.gltf', (gltf) => { - // Add the scene from the glTF file to the Three.js scene - scene.add(gltf.scene); - - // Find the "OMI_spawn_point" node - let spawnPointNode = null; - scene.traverse((node) => { - if (node.isObject3D && node.userData.OMI_spawn_point) { - spawnPointNode = node; - } - }); - - // Set the position of the camera to the spawn point position from the source node data. - if (spawnPointNode) { - camera.position.copy(spawnPointNode.position); - } + // Add the scene from the glTF file to the Three.js scene + scene.add(gltf.scene); + + // Find the "OMI_spawn_point" node + let spawnPointNode = null; + scene.traverse((node) => { + if (node.isObject3D && node.userData.OMI_spawn_point) { + spawnPointNode = node; + } + }); + + // Set the position of the camera to the spawn point position from the source node data. + if (spawnPointNode) { + camera.position.copy(spawnPointNode.position); + } }); ``` diff --git a/extensions/2.0/OMI_spawn_point/schema/node.OMI_spawn_point.schema.json b/extensions/2.0/OMI_spawn_point/schema/node.OMI_spawn_point.schema.json new file mode 100644 index 0000000..e605040 --- /dev/null +++ b/extensions/2.0/OMI_spawn_point/schema/node.OMI_spawn_point.schema.json @@ -0,0 +1,27 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "node.OMI_spawn_point.schema.json", + "title": "OMI_spawn_point", + "type": "object", + "description": "Parameters that define a spawn point.", + "allOf": [ { "$ref" : "glTFProperty.schema.json" } ], + "properties": { + "title": { + "type": "string", + "description": "The title of the spawn point.", + "maxLength": 128 + }, + "team": { + "type": "string", + "description": "The team that this spawn point belongs to, if any.", + "maxLength": 128 + }, + "group": { + "type": "string", + "description": "The group that this spawn point belongs to, if any.", + "maxLength": 128 + }, + "extensions": { }, + "extras": { } + } +} diff --git a/extensions/2.0/OMI_spawn_point/schema/spawn_point.schema.json b/extensions/2.0/OMI_spawn_point/schema/spawn_point.schema.json deleted file mode 100644 index 0ed91fb..0000000 --- a/extensions/2.0/OMI_spawn_point/schema/spawn_point.schema.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "OMI_spawn_point", - "description": "An extension for the glTF format that defines a spawn point in a scene.", - "type": "object", - "properties": { - "title": { - "type": "string", - "description": "The title of the spawn point.", - "maxLength": 128 - }, - "team": { - "type": "string", - "description": "The team that this spawn point belongs to, if any.", - "maxLength": 128 - }, - "group": { - "type": "string", - "description": "The group that this spawn point belongs to, if any.", - "maxLength": 128 - }, - "extensions": { }, - "extras": { } - } -}