Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 71 additions & 48 deletions extensions/2.0/Vendor/MPEG_interactivity/README.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
},
"description": "Indices of the perceptions of the media that shall be rendered. If the list is empty, all perceptions shall be rendered."
},
"haptic_modality": {
"hapticModality": {
"type": "array",
"enum": [0,1,2,3,4,5],
"items": {
Expand All @@ -24,7 +24,7 @@
"gltf_detailedDescription": "Value is oneOf Stiffness = 0, Friction = 1,Vibrotactile Texture = 2, Temperature = 3,Vibration = 4, Custom = 5"

},
"haptic_control": {
"hapticControl": {
"type": "integer",
"enum": [0,1,2,3],
"default": 0,
Expand All @@ -38,7 +38,7 @@
}
},
"required": [
"media_index",
"perception_indices"
"mediaIndex",
"perceptionIndices"
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,11 @@
"type": "integer",
"description": "Index of the node in the nodes array to launch their haptic feedbacks"
},
"material_haptic_modality": {
"hapticObject": {
"type": "integer",
"description": "Index to a haptic object in the hapticObjects array of the MPEG_haptic extension."
},
"materialHapticModality": {
"type": "array",
"items": {
"type": "integer",
Expand All @@ -31,7 +35,7 @@
"default": false,
"description": "Used with a Collision trigger. If True, the rendering engine shall use collision information to estimate the desired location of the haptic feedback on the body. If false, the signal shall be rendered based on the information specified in the Haptic file.."
},
"haptic_action_medias": {
"hapticActionMedias": {
"description": "List of haptic medias that shall be rendered with their associated properties.",
"type": "array",
"items": {
Expand All @@ -42,6 +46,6 @@
},
"required": [
"node",
"haptic_action_medias"
"hapticActionMedias"
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"$schema" : "http://json-schema.org/draft-07/schema",
"title" : "MPEG_scene_interactivity.physicsobject",
"type" : "object",
"description" : "Provides a set of parameters at scene level to be used for the physics simulation.",
"allOf" : [ { "$ref" : "glTFProperty.schema.json" } ],
"properties" : {
"recommendedPhysicsHighPrecision":{
"type":"boolean",
"default": false,
"description": "Determines whether the application should enable a more deterministic and precise physic simulation."
},
"gravity":{
"type":"number",
"default": -9.81,
"description": "Determine the gravity for the whole scene. In meter per second square (m.s-2). as defined in the international unit system."
},
"recommendedPhysicsFrameRate":{
"type":"number",
"default": 50,
"description": "Provides the recommended frame rate at which the Physics Engine should operate. In frame per second as defined in the international unit system."
},
"bounceThreshold":{
"type":"number",
"default": 1,
"description": "A contact with a relative velocity below this threshold will not result in a bounce. In meter per second (m.s-1) as defined in the international unit system."
},
"extensions": {},
"extras": {}
},
"required": [ ]
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@
"description" : "glTF extension to specify interactivity formats at scene level",
"allOf" : [ { "$ref" : "glTFProperty.schema.json" } ],
"properties" : {
"physics" : {
"type": "object",
"description": "Provides a set of parameters at scene level to be used for the physics simulation.",
"$ref" : "MPEG_scene_interactivity.physicsobject.schema.json"
},
"triggers" : {
"type": "array",
"description": "An array of triggers descriptions.",
Expand All @@ -29,26 +34,6 @@
},
"minItems": 1
},
"recommendedPhysicsHighPrecision":{
"type":"boolean",
"default": false,
"description": "Determines whether the application should enable a more deterministic and precise physic simulation."
},
"gravity":{
"type":"number",
"default": -9.81,
"description": "Determine the gravity for the whole scene. In meter per second square (m.s-2). as defined in the international unit system."
},
"recommendedPhysicsFrameRate":{
"type":"number",
"default": 50,
"description": "Provides the recommended frame rate at which the Physics Engine should operate. In frame per second as defined in the international unit system."
},
"bounceThreshold":{
"type":"number",
"default": 1,
"description": "A contact with a relative velocity below this threshold will not result in a bounce. In meter per second (m.s-1) as defined in the international unit system."
},
"extensions": {},
"extras": {}
},
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
{
"$schema" : "http://json-schema.org/draft-07/schema",
"title" : "MPEG_node_interactivity.trigger.physicsobject",
"type" : "object",
"description" : "Provides a set of parameters at node level to be used for the physics simulation.",
"properties" : {
"needPreciseCollisionDetection":{
"type":"boolean",
"default": false,
"description": "If true, the physics engine should handle the collision detection more accurately by increasing the detection rate for this node."
},
"linearDamping":{
"type":"number",
"default": 0,
"description": "A non-negative value, in second-1 (s-1), as defined in the international unit system. It defines the linear drag coefficient which corresponds to the rate of decrease of the linear velocity over time.",
"gltf_detailedDescription":"It is used to compute a new velocity value V(t) at each simulation step (dt): V(t+dt) = V(t)*(1-linearDamping*dt), the velocity being clamped to 0."
},
"angularDamping":{
"type":"number",
"default": 0,
"description": "A non-negative value, in second-1 (s-1), as defined in the international unit system. that It defines the angular drag coefficient which corresponds to the rate of decrease of the angular velocity over time.",
"gltf_detailedDescription":"It is used to compute a new velocity value V(t) at each simulation step (dt): V(t+dt) = V(t)*(1-angularDamping*dt), the velocity being clamped to 0."
},
"useGravity":{
"type":"boolean",
"description": "Indicates if the gravity affects the object"
},
"mass":{
"type":"number",
"default": 1.0,
"description": "Mass of the object in kilogram"
},
"restitution":{
"type":"number",
"minimum": 0.0,
"maximun": 1.0,
"description": "Provides the ratio of the final to initial relative velocity between two objects after they collide."
},
"staticFriction":{
"type":"number",
"default": 0.5,
"minimum": 0.0,
"maximun": 1.0,
"description": "Unitless friction coefficient as defined in the Coulomb friction model. Used when the object is lying still."
},
"dynamicFriction":{
"type":"number",
"minimum": 0.0,
"maximun": 1.0,
"description": "Unitless friction coefficient as defined in the Coulomb friction model. When a large enough force is applied to the object, it is used, and will attempt to slow down the object while in contact with another."
},
"extensions": {},
"extras": {}
},
"required":[]
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,61 +19,17 @@
"default": "true",
"description": "If True, the collider is defined as a static collider"
},
"usePhysics" :{
"type": "boolean",
"description": "Indicates if the object shall be considered by the physics simulation"
"physics" :{
"type": "object",
"description": "Provides a set of parameters at node level to be used for the physics simulation. ",
"$ref": "MPEG_node_interactivity.trigger.physicsobject.schema.json"
},
"primitives" :{
"type": "array",
"items": { "$ref": "MPEG_interactivity.trigger.primitive.schema.json"},
"minItems": 1,
"description": "List of primitives used to activate the proximity or collision trigger. "
},
"needPreciseCollisionDetection":{
"type":"boolean",
"default": false,
"description": "If true, the physics engine should handle the collision detection more accurately by increasing the detection rate for this node."
},
"linearDamping":{
"type":"number",
"default": 0,
"description": "A non-negative value, in second-1 (s-1), as defined in the international unit system. It defines the linear drag coefficient which corresponds to the rate of decrease of the linear velocity over time.",
"gltf_detailedDescription":"It is used to compute a new velocity value V(t) at each simulation step (dt): V(t+dt) = V(t)*(1-linearDamping*dt), the velocity being clamped to 0."
},
"angularDamping":{
"type":"number",
"default": 0,
"description": "A non-negative value, in second-1 (s-1), as defined in the international unit system. that It defines the angular drag coefficient which corresponds to the rate of decrease of the angular velocity over time.",
"gltf_detailedDescription":"It is used to compute a new velocity value V(t) at each simulation step (dt): V(t+dt) = V(t)*(1-angularDamping*dt), the velocity being clamped to 0."
},
"useGravity":{
"type":"boolean",
"description": "Indicates if the gravity affects the object"
},
"mass":{
"type":"number",
"default": 1.0,
"description": "Mass of the object in kilogram"
},
"restitution":{
"type":"number",
"minimum": 0.0,
"maximun": 1.0,
"description": "Provides the ratio of the final to initial relative velocity between two objects after they collide."
},
"staticFriction":{
"type":"number",
"default": 0.5,
"minimum": 0.0,
"maximun": 1.0,
"description": "Unitless friction coefficient as defined in the Coulomb friction model. Used when the object is lying still."
},
"dynamicFriction":{
"type":"number",
"minimum": 0.0,
"maximun": 1.0,
"description": "Unitless friction coefficient as defined in the Coulomb friction model. When a large enough force is applied to the object, it is used, and will attempt to slow down the object while in contact with another."
},
"allowOcclusion":{
"type": "boolean",
"description": "Indicates if occlusion by other nodes should be considered"
Expand Down Expand Up @@ -119,15 +75,7 @@
"required": ["type"]
},
"then": {
"required": ["collider","isStatic","usePhysics"],
"allOf": [{
"if":{"properties": { "usePhysics": { "const": "true" } },
"required":["usePhysics"]
},
"then": {
"required":["useGravity","mass","restitution","staticFriction", "dynamicFriction"]
}
}]
"required": ["collider","isStatic"]
}
},
{
Expand Down