Step 2 - Article
This page provides details about article.json and its underlying validation rules along with a sample article.json file of a Bowling Alley VR Scene for your review.
Here is the article.json template that is to be used for filling the scene requirement specifications.
{
"articles": [
{
"_objectname": "",
"_sid": "",
"_slabel": "",
"_IsHidden": "",
"_enumcount": "",
"_Is3DObject": "",
"HasChild": "",
"shape": "",
"dimension": {
"dradii": "",
"dvolumn": "",
"dlength": "",
"dbreadth": "",
"dheight": ""
},
"IsText": "",
"IsText3D": "",
"lighting": {
"CastShadow": "",
"ReceiveShadow": "",
"ContributeGlobalIlumination": ""
},
"IsIlluminate": "",
"Transform_initialpos": {
"#x_initialpos": "",
"#y_initialpos": "",
"#z_initialpos": ""
},
"Transform_initialrotation": {
"#x_initialrotation": "",
"#y_initialrotation": "",
"#z_initialrotation": ""
},
"Transform_objectscale": {
"#x_objectscale": "",
"#y_objectscale": "",
"#z_objectscale": ""
},
"repeattransfrom": {
"distfactorx": "",
"distfactory": "",
"distfactorz": ""
},
"Interaction": {
"XRGrabInteractable": "",
"XRInteractionMaskLayer": "",
"TrackPosition": "",
"TrackRotation": "",
"Throw_Detach": "",
"forcegravity": "",
"velocity": "",
"angularvelocity": ""
},
"Smoothing": "",
"Smoothing_duration": "",
"attachtransform": {
"#rotate_x": "",
"#rotate_y": "",
"#rotate_z": "",
"#pos_x": "",
"#pos_y": "",
"#pos_z": ""
},
"XRRigidObject": {
"value": "",
"mass": "",
"dragfriction": "",
"angulardrag": "",
"Isgravityenable": "",
"IsKinematic": "",
"CanInterpolate": "",
"CollisionPolling": ""
},
"aud_hasaudio": "",
"aud_type": "",
"aud_src": "",
"aud_volume": "",
"aud_PlayInloop": "",
"aud_IsSurround": "",
"aud_Dopplerlevel": "",
"aud_spread": "",
"aud_mindist": "",
"aud_maxdist": "",
"_Opttxt1": "",
"@context_img_source": "",
"state": [
{
"stateid": "",
"statename": "",
"stateinitial": "",
"statetransition": [
{
"sevent": "",
"starget": "",
"spref": ""
},
{
"sevent": "",
"starget": "",
"spref": ""
}
],
"statefinal": ""
},
{
"stateid": "",
"statename": "",
"stateinitial": "",
"statetransition": [
{
"sevent": "",
"starget": "",
"spref": ""
},
{
"sevent": "",
"starget": "",
"spref": ""
}
],
"statefinal": ""
}
]
}
]
}
Here is the articlevalidator.json with details about each specification along with its usage.
{
"articles": {
"req": "mandatory",
"typeof": "object",
"repeat": "notallow",
"%comment%": "Array list of Articles that its respective properties"
},
"_objectname": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"root": "articles",
"%comment%": "Name of the Object"
},
"_sid": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"root": "articles",
"%comment%": "unique identifier to identify the object"
},
"_slabel": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"root": "articles",
"%comment%": "50 character label to describe the object"
},
"_IsHidden": {
"req": "mandatory",
"typeof": "number",
"repeat": "allow",
"root": "articles",
"%comment%": "Flag to determine if the object is hidden or unhidden"
},
"_enumcount": {
"req": "mandatory",
"typeof": "number",
"repeat": "allow",
"root": "articles",
"%comment%": "Count of objects in the scene"
},
"_Is3DObject": {
"req": "mandatory",
"typeof": "number",
"repeat": "allow",
"root": "articles",
"%comment%": "Flag to determine if the object is 3D or not"
},
"HasChild": {
"req": "mandatory",
"typeof": "number",
"repeat": "allow",
"root": "articles",
"%comment%": "Flag to determine if the object has linked child object"
},
"shape": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"root": "articles",
"%comment%": "Shape of the object, mention the geometery type"
},
"dradii": {
"req": "mandatory",
"typeof": "number",
"repeat": "allow",
"proot": "articles",
"root": "dimension",
"%comment%": "radius of the object if it is a sphere else NULL"
},
"dvolumn": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"proot": "articles",
"root": "dimension",
"%comment%": "volumn of the object to determine the size"
},
"dlength": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"proot": "articles",
"root": "dimension",
"%comment%": "Length of the object if it has a length property"
},
"dbreadth": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"proot": "articles",
"root": "dimension",
"%comment%": "Breadth of the object if it has a breadth property"
},
"dheigth": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"proot": "articles",
"root": "dimension",
"%comment%": "Height of the object if it has a height property"
},
"IsText": {
"req": "mandatory",
"typeof": "boolean",
"repeat": "allow",
"root": "articles",
"%comment%": "Flag to determine if it is a Text object"
},
"IsText3D": {
"req": "mandatory",
"typeof": "boolean",
"repeat": "allow",
"root": "articles",
"%comment%": "Flag to determine if it is a 3D Text object"
},
"CastShadow": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"proot": "articles",
"root": "lighting",
"%comment%": "Flag to determine if the object can cast shadow"
},
"ReceiveShadow": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"proot": "articles",
"root": "lighting",
"%comment%": "Flag to determine if the object can receive a shadow"
},
"ContributeGlobalIlumination": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"proot": "articles",
"root": "lighting",
"%comment%": "Flag to determine if the object contributes to overall scene illumination or self glowing object"
},
"IsIlluminate": {
"req": "mandatory",
"typeof": "boolean",
"repeat": "allow",
"root": "articles",
"%comment%": "Flag to determine if the object can illuminate self"
},
"#x_initialpos": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"proot": "articles",
"root": "Transform_initalpos",
"%comment%": "x-axis initial position of the object in the scene terrian"
},
"#y_initialpos": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"proot": "articles",
"root": "Transform_initalpos",
"%comment%": "y-axis initial position of the object in the scene terrian"
},
"#z_initialpos": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"proot": "articles",
"root": "Transform_initalpos",
"%comment%": "z-axis initial position of the object in the scene terrian"
},
"#x_initialrotation": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"proot": "articles",
"root": "Transform_initalrotation",
"%comment%": "x-axis initial rotation stance of the object in the scene terrian"
},
"#y_initialrotation": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"proot": "articles",
"root": "Transform_initalrotation",
"%comment%": "y-axis initial rotation stance of the object in the scene terrian"
},
"#z_initialrotation": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"proot": "articles",
"root": "Transform_initalrotation",
"%comment%": "z-axis initial rotation stance of the object in the scene terrian"
},
"#x_objectscale": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"proot": "articles",
"root": "Transform_objectscale",
"%comment%": "x-axis tranformable object scale of the object in the scene terrian"
},
"#y_objectscale": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"proot": "articles",
"root": "Transform_objectscale",
"%comment%": "y-axis tranformable object scale of the object in the scene terrian"
},
"#z_objectscale": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"proot": "articles",
"root": "Transform_objectscale",
"%comment%": "z-axis tranformable object scale of the object in the scene terrian"
},
"#distfactorx": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"proot": "articles",
"root": "repeattransform",
"%comment%": "Distance Factor in x-axis of the object"
},
"#distfactory": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"proot": "articles",
"root": "repeattransform",
"%comment%": "Distance Factor in y-axis of the object"
},
"#distfactorz": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"proot": "articles",
"root": "repeattransform",
"%comment%":"Distance Factor in z-axis of the object"
},
"XRGrabInteractable": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"proot": "articles",
"root": "Interaction",
"%comment%": "Flag to determine if the object is grabbable and has interaction"
},
"XRInteractionMaskLayer": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"proot": "articles",
"root": "Interaction",
"%comment%": "Flag to determine if the object interaction has masked layer"
},
"TrackPosition": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"proot": "articles",
"root": "Interaction",
"%comment%": "Flag to determine if the object can have a tracker position"
},
"TrackRotation": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"proot": "articles",
"root": "Interaction",
"%comment%": "Flag to determine if the object can have a tracker rotation"
},
"Throw_Detach": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"proot": "articles",
"root": "Interaction",
"%comment%": "Flag to determine if the object can be thrown and detachable"
},
"forcegravity": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"proot": "articles",
"root": "Interaction",
"%comment%": "Flag to determine if the object can have a force gravity applied"
},
"velocity": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"proot": "articles",
"root": "Interaction",
"%comment%": "Flag to determine if the object can hold natural velocity"
},
"angularvelocity": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"proot": "articles",
"root": "Interaction",
"%comment%": "Flag to determine if the object can hold an angular velocity"
},
"Smoothing": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"root": "articles",
"%comment%": "Flag to determine if the object can hold smoothing"
},
"Smoothing_duration": {
"req": "mandatory",
"typeof": "string",
"repeat": "allow",
"root": "articles",
"%comment%": "Flag to determine if the object smoothing duration"
},
"#rotate_x": {
"req": "mandatory",
"typeof": "string",
"proot": "articles",
"root": "attachtransform",
"repeat": "allow",
"%comment%": "Flag to determine x-axis of object rotation position"
},
"#rotate_y": {
"req": "mandatory",
"typeof": "string",
"proot": "articles",
"root": "attachtransform",
"repeat": "allow",
"%comment%": "Flag to determine y-axis of object rotation position"
},
"#rotate_z": {
"req": "mandatory",
"typeof": "string",
"proot": "articles",
"root": "attachtransform",
"repeat": "allow",
"%comment%": "Flag to determine z-axis of object rotation position"
},
"#pos_x": {
"req": "mandatory",
"typeof": "string",
"proot": "articles",
"root": "attachtransform",
"repeat": "allow",
"%comment%": "Flag to determine x-axis of object transform position"
},
"#pos_y": {
"req": "mandatory",
"typeof": "string",
"proot": "articles",
"root": "attachtransform",
"repeat": "allow",
"%comment%": "Flag to determine y-axis of object transform position"
},
"#pos_z": {
"req": "mandatory",
"typeof": "string",
"proot": "articles",
"root": "attachtransform",
"repeat": "allow",
"%comment%": "Flag to determine y-axis of object transform position"
},
"value": {
"req": "mandatory",
"typeof": "string",
"proot": "articles",
"root": "XRRigidObject",
"repeat": "allow",
"%comment%": "Level of rigid with the scale of 1 to 10"
},
"mass": {
"req": "mandatory",
"typeof": "string",
"proot": "articles",
"root": "XRRigidObject",
"repeat": "allow",
"%comment%": "Flag to mention the mass of the object"
},
"dragfriction": {
"req": "mandatory",
"typeof": "string",
"proot": "articles",
"root": "XRRigidObject",
"repeat": "allow",
"%comment%": "Flag to determine if the object can hold drag friction"
},
"angulardrag": {
"req": "mandatory",
"typeof": "string",
"proot": "articles",
"root": "XRRigidObject",
"repeat": "allow",
"%comment%": "Flag to determine if the object can be angular drag"
},
"Isgravityenable": {
"req": "mandatory",
"typeof": "string",
"proot": "articles",
"root": "XRRigidObject",
"repeat": "allow",
"%comment%": "Flag to determine if the object abides by natural gravity"
},
"IsKinematic": {
"req": "mandatory",
"typeof": "string",
"proot": "articles",
"root": "XRRigidObject",
"repeat": "allow",
"%comment%": "Flag to determine if the object is mobile or kinematic"
},
"CanInterpolate": {
"req": "mandatory",
"typeof": "string",
"proot": "articles",
"root": "XRRigidObject",
"repeat": "allow",
"%comment%": "Flag to determie if the object can interpolate"
},
"CollisionPolling": {
"req": "mandatory",
"typeof": "string",
"proot": "articles",
"root": "XRRigidObject",
"repeat": "allow",
"%comment%": "Flag to determine if the object can CollisionPolling"
},
"aud_hasaudio": {
"req": "mandatory",
"typeof": "string",
"root": "articles",
"repeat": "allow",
"%comment%": "Flag to determine if the object has audio setup"
},
"aud_type": {
"req": "mandatory",
"typeof": "string",
"root": "articles",
"repeat": "allow",
"%comment%": "Type of Audio file"
},
"aud_src": {
"req": "mandatory",
"typeof": "string",
"root": "articles",
"repeat": "allow",
"%comment%": "Audio Source file and its path"
},
"aud_volume": {
"req": "mandatory",
"typeof": "string",
"root": "articles",
"repeat": "allow",
"%comment%": "Measure of audio volume"
},
"aud_PlayInloop": {
"req": "mandatory",
"typeof": "string",
"root": "articles",
"repeat": "allow",
"%comment%": "Flag to determine if the audio is playable in loop"
},
"aud_IsSurround": {
"req": "mandatory",
"typeof": "string",
"root": "articles",
"repeat": "allow",
"%comment%": "Flag to determine if the audio of the object is surroundable"
},
"aud_Dopplerlevel": {
"req": "mandatory",
"typeof": "string",
"root": "articles",
"repeat": "allow",
"%comment%": "Audio doppler level of the object if available"
},
"aud_spread": {
"req": "mandatory",
"typeof": "string",
"root": "articles",
"repeat": "allow",
"%comment%": "Audio spread measure of the object"
},
"aud_mindist": {
"req": "mandatory",
"typeof": "string",
"root": "articles",
"repeat": "allow",
"%comment%": "Minimum distance covered via audio"
},
"aud_maxdist": {
"req": "mandatory",
"typeof": "string",
"root": "articles",
"repeat": "allow",
"%comment%": "Maximum distance covered via audio"
},
"_Opttxt1": {
"req": "mandatory",
"typeof": "string",
"root": "articles",
"repeat": "allow",
"%comment%": "optional notes placeholder to add additional notes about the object"
},
"@context_img_source": {
"req": "mandatory",
"typeof": "string",
"root": "articles",
"repeat": "allow",
"%comment%": "Sample image source file location for designer reference"
},
"state":{
"req":"mandatory",
"root":"ObjAction",
"typeof":"object",
"repeat":"allow",
"%comment%":"This is a master node for state array object to defined states of a given action and its response over objects"
},
"stateid":{
"req":"mandatory",
"root":"ObjAction",
"typeof":"number",
"repeat":"allow",
"%comment%":"Define your own unique identifier to identify a state"
},
"statename":{
"req":"mandatory",
"proot":"state",
"root":"ObjAction",
"typeof":"string",
"repeat":"allow",
"%comment%":"Provide a state name for a given stateid"
},
"stateinitial":{
"req":"mandatory",
"proot":"state",
"root":"ObjAction",
"typeof":"string",
"repeat":"allow",
"%comment%":"Describe your Initial Statement in less than 10 words"
},
"statetransition":{
"req":"mandatory",
"proot":"state",
"root":"ObjAction",
"typeof":"object",
"repeat":"allow",
"%comment%":"to describe the underlying events and target with a preference value"
},
"sevent":{
"req":"mandatory",
"proot":"statetransition",
"root":"ObjAction",
"typeof":"string",
"repeat":"allow",
"%comment%":"to describe the underlying events and its target along with a preference value"
},
"starget":{
"req":"mandatory",
"proot":"statetransition",
"root":"ObjAction",
"typeof":"string",
"repeat":"allow",
"%comment%":"to describe the underlying target for a given event along with a preference value"
},
"spref":{
"req":"mandatory",
"proot":"statetransition",
"root":"ObjAction",
"typeof":"number",
"repeat":"allow",
"%comment%":"to describe the perference value for a given sevent and starget. It starts with value 0"
},
"statefinal":{
"req":"mandatory",
"root":"state",
"proot":"ObjAction",
"typeof":"string",
"repeat":"allow",
"%comment%":"Describe your final Statement in less than 10 words"
}
}
Here is a sample article.json file for a Bowling Alley VR Scene.
{
"articles": [{
"_objectname": "Ball",
"_sid": "_gameball",
"_slabel": "This is used to roll on pins",
"_IsHidden": 0,
"_enumcount": 1,
"_Is3DObject": 1,
"HasChild": 0,
"shape": "sphere",
"dimension": {
"dradii": 5,
"dvolumn": "null",
"dlength": "null",
"dbreadth": "null",
"dheigth": "null"
},
"IsText": false,
"IsText3D": false,
"lighting": {
"CastShadow": "1",
"ReceiveShadow": "1",
"ContributeGlobalIlumination": "1"
},
"IsIlluminate": true,
"Transform_initialpos": {
"#x_initialpos": "0",
"#y_initialpos": "5",
"#z_initialpos": "0"
},
"Transform_initialrotation": {
"#x_initialrotation": "0",
"#y_initialrotation": "5",
"#z_initialrotation": "0"
},
"Transform_objectscale": {
"#x_objectscale": "0",
"#y_objectscale": "5",
"#z_objectscale": "0"
},
"repeattransfrom": {
"distfactorx": "null",
"distfactory": "null",
"distfactorz": "null"
},
"Interaction": {
"XRGrabInteractable": "1",
"XRInteractionMaskLayer": "nothing/everything/custom",
"TrackPosition": "1",
"TrackRotation": "1",
"Throw_Detach": "1",
"forcegravity": "1",
"velocity": "3",
"angularvelocity": "2"
},
"Smoothing": "1",
"Smoothing_duration": "0.5",
"attachtransform": {
"#rotate_x": "null",
"#rotate_y": "null",
"#rotate_z": "null",
"#pos_x": "null",
"#pos_y": "null",
"#pos_z": "null"
},
"XRRigidObject": {
"value": "1",
"mass": "20",
"dragfriction": "5",
"angulardrag": "4",
"Isgravityenable": "true",
"IsKinematic": "1",
"CanInterpolate": "0",
"CollisionPolling": "discreet/continous"
},
"aud_hasaudio": "1",
"aud_type": "static/dynamic",
"aud_src": "/path",
"aud_volume": "10",
"aud_PlayInloop": "0",
"aud_IsSurround": "1",
"aud_Dopplerlevel": "0.9",
"aud_spread": "null",
"aud_mindist": "null",
"aud_maxdist": "null",
"_Opttxt1": "null",
"@context_img_source": "blank"
},
{
"_objectname": "Pin_5",
"_sid": "_pinsetter5",
"_slabel": "This is pin",
"_IsHidden": 0,
"_enumcount": 1,
"_Is3DObject": 1,
"HasChild": 0,
"shape": "sphere",
"dimension": {
"dradii": 5,
"dvolumn": "null",
"dlength": "null",
"dbreadth": "null",
"dheigth": "null"
},
"IsText": false,
"IsText3D": false,
"lighting": {
"CastShadow": "1",
"ReceiveShadow": "1",
"ContributeGlobalIlumination": "1"
},
"IsIlluminate": true,
"Transform_initialpos": {
"#x_initialpos": "0",
"#y_initialpos": "5",
"#z_initialpos": "0"
},
"Transform_initialrotation": {
"#x_initialrotation": "0",
"#y_initialrotation": "5",
"#z_initialrotation": "0"
},
"Transform_objectscale": {
"#x_objectscale": "0",
"#y_objectscale": "5",
"#z_objectscale": "0"
},
"repeattransfrom": {
"distfactorx": "null",
"distfactory": "null",
"distfactorz": "null"
},
"Interaction": {
"XRGrabInteractable": "1",
"XRInteractionMaskLayer": "nothing/everything/custom",
"TrackPosition": "1",
"TrackRotation": "1",
"Throw_Detach": "1",
"forcegravity": "1",
"velocity": "3",
"angularvelocity": "2"
},
"Smoothing": "1",
"Smoothing_duration": "0.5",
"attachtransform": {
"#rotate_x": "null",
"#rotate_y": "null",
"#rotate_z": "null",
"#pos_x": "null",
"#pos_y": "null",
"#pos_z": "null"
},
"XRRigidObject": {
"value": "1",
"mass": "20",
"dragfriction": "5",
"angulardrag": "4",
"Isgravityenable": "true",
"IsKinematic": "1",
"CanInterpolate": "0",
"CollisionPolling": "discreet/continous"
},
"aud_hasaudio": "1",
"aud_type": "static/dynamic",
"aud_src": "/path",
"aud_volume": "10",
"aud_PlayInloop": "0",
"aud_IsSurround": "1",
"aud_Dopplerlevel": "0.9",
"aud_spread": "null",
"aud_mindist": "null",
"aud_maxdist": "null",
"_Opttxt1": "null",
"@context_img_source": "blank"
}
]
}
Last updated