2026-04-08 10:28:31 +02:00
{
2026-04-21 15:27:41 +02:00
"title" : "XR Fragments" ,
"type" : "object" ,
"$version" : 3 ,
"flatten" : true ,
"$defs" : {
2026-04-08 10:28:31 +02:00
2026-04-21 15:27:41 +02:00
"xrf" : {
"title" : "XR Fragments" ,
"description" : "XR Fragments (level2) promotes embedding clickable hyperlinks\nin 3D files (via the href attribute).\nMake sure to check 'custom attributes' in your export dialog." ,
"url" : "https://xrfragment.org/#How%20it%20works" ,
"properties" : {
"_xrf-type" : { "title" : "type" , "type" : "string" , "default" : "xrf" , "description" : "needed for blender UI" } ,
"href" : {
"type" : "object.name" ,
"description" : "teleport to / href"
}
}
} ,
2026-04-08 10:28:31 +02:00
2026-04-21 15:27:41 +02:00
"three" : {
"oneOf" : [
{ "$ref" : "#/$defs/three_material" } ,
{ "$ref" : "#/$defs/three_object" }
]
} ,
2026-04-08 10:28:31 +02:00
2026-04-21 15:27:41 +02:00
"aframe" : {
"oneOf" : [
{ "$ref" : "#/$defs/three_material" } ,
{ "$ref" : "#/$defs/three_object" }
]
} ,
2026-04-08 10:28:31 +02:00
2026-04-21 15:27:41 +02:00
"three_material" : {
"title" : "Material" ,
"description" : "Material is THREE's abstract base material class" ,
"url" : "https://threejs.org/docs/?q=material#Material" ,
"properties" : {
"_three-type" : { "title" : "type" , "type" : "string" , "default" : "material" , "description" : "needed for blender UI" } ,
"-three-material.blending" : {
"type" : "string" ,
"enum" : [ "THREE.NormalBlending" , "THREE.NoBlending" , "THREE.AdditiveBlending" , "THREE.SubtractiveBlending" , "THREE.MultiplyBlending" ]
} ,
"-three-material.sides" : {
"type" : "string" ,
"description" : "culling: which sides to render (less increases fps)" ,
"enum" : [ "THREE.FrontSide" , "THREE.BackSide" , "THREE.DoubleSide" ]
} ,
"-three-material.map.offset.x+" : {
"type" : "number" ,
"description" : "texture scrolling speed" ,
"default" : 0.005 ,
"minimum" : 0.000001 ,
"maximum" : 1
} ,
"-three-material.map.offset.yx+" : {
"type" : "number" ,
"description" : "texture scrolling speed" ,
"default" : 0.005 ,
"minimum" : 0.000001 ,
"maximum" : 1
}
}
} ,
2026-04-08 10:28:31 +02:00
2026-04-21 15:27:41 +02:00
"three_object" : {
"title" : "Object3D" ,
"description" : "Object3D is THREE's abstract base entity class" ,
"url" : "https://threejs.org/docs/?q=Object3D#Object3D" ,
"properties" : {
"_three-type" : { "title" : "type" , "type" : "string" , "default" : "object3D" , "description" : "needed for blender UI" } ,
"-three-renderOrder" : {
"type" : "integer" ,
"minimum" : 0 ,
"maximum" : 100
}
}
} ,
2026-04-08 10:28:31 +02:00
2026-04-21 15:27:41 +02:00
"janus" : {
"oneOf" : [
{ "$ref" : "#/$defs/janus_image" } ,
{ "$ref" : "#/$defs/janus_video" } ,
{ "$ref" : "#/$defs/janus_link" }
]
} ,
2026-04-08 10:28:31 +02:00
2026-04-21 15:27:41 +02:00
"janus_image" : {
"description" : "The <image> tag allows displaying images via url, relative file, or data-uri's" ,
"url" : "https://janusvr.com/docs/build/roomtag/index.html#Link" ,
"title" : "<image>" ,
"properties" : {
"-janus-tag" : { "type" : "string" , "default" : "image" } ,
"-janus-id" : { "type" : "object.name" } ,
"-janus-col" : { "$ref" : "#/$defs/-janus-col" } ,
"-janus-lighting" : { "$ref" : "#/$defs/-janus-lighting" } ,
"-janus-fwd" : { "$ref" : "#/$defs/-janus-fwd" } ,
"-janus-scale" : { "$ref" : "#/$defs/-janus-scale" } ,
"-janus-rotation" : { "$ref" : "#/$defs/-janus-rotation" } ,
"-janus-locked" : { "$ref" : "#/$defs/-janus-locked" } ,
"-janus-draw-layer" : { "$ref" : "#/$defs/-janus-draw_layer" } ,
}
} ,
"janus_video" : {
"title" : "<video>" ,
"description" : "The <video> tag allows displaying videos" ,
"url" : "https://janusvr.com/docs/build/roomtag/index.html#Video" ,
"properties" : {
"-janus-tag" : { "type" : "string" , "default" : "video" } ,
"-janus-id" : { "type" : "object.name" } ,
"-janus-thumb_id" : { "$ref" : "#/$defs/-janus-thumb_id" } ,
"-janus-col" : { "$ref" : "#/$defs/-janus-col" } ,
"-janus-lighting" : { "$ref" : "#/$defs/-janus-lighting" } ,
"-janus-fwd" : { "$ref" : "#/$defs/-janus-fwd" } ,
"-janus-scale" : { "$ref" : "#/$defs/-janus-scale" } ,
"-janus-rotation" : { "$ref" : "#/$defs/-janus-rotation" } ,
"-janus-locked" : { "$ref" : "#/$defs/-janus-locked" } ,
"-janus-draw-layer" : { "$ref" : "#/$defs/-janus-draw_layer" }
"-janus-gain" : { "type" : "float" , "minimum" : 0 , "maximum" : 1 }
}
} ,
"janus_link" : {
"title" : "<link>" ,
"description" : "The <link> tag allows creating portals to other scenes" ,
"url" : "https://janusvr.com/docs/build/roomtag/index.html#Link" ,
"properties" : {
"-janus-tag" : { "type" : "string" , "default" : "link" } ,
"-janus-url" : { "type" : "string" , "default" : "https://..." } ,
"-janus-title" : { "type" : "string" , "default" : "my title" } ,
"-janus-thumb_id" : { "$ref" : "#/$defs/-janus-thumb_id" } ,
"-janus-draw_glow" : { "type" : "boolean" , "default" : true } ,
"-janus-draw_text" : { "type" : "boolean" , "default" : true } ,
"-janus-auto_load" : { "type" : "boolean" , "default" : false } ,
"-janus-mirror" : { "type" : "boolean" , "default" : false } ,
"-janus-col" : { "$ref" : "#/$defs/-janus-col" } ,
"-janus-lighting" : { "$ref" : "#/$defs/-janus-lighting" } ,
"-janus-fwd" : { "$ref" : "#/$defs/-janus-fwd" } ,
"-janus-scale" : { "$ref" : "#/$defs/-janus-scale" } ,
"-janus-rotation" : { "$ref" : "#/$defs/-janus-rotation" } ,
"-janus-locked" : { "$ref" : "#/$defs/-janus-locked" } ,
"-janus-draw-layer" : { "$ref" : "#/$defs/-janus-draw_layer" }
}
} ,
"janus_object" : {
"title" : "<object>" ,
"description" : "The <object> tag allows displaying 3D files" ,
"url" : "https://janusvr.com/docs/build/roomtag/index.html#Object" ,
"properties" : {
"-janus-tag" : { "type" : "string" , "default" : "object" } ,
"-janus-col" : { "$ref" : "#/$defs/-janus-col" } ,
"-janus-fwd" : { "$ref" : "#/$defs/-janus-fwd" } ,
"-janus-scale" : { "$ref" : "#/$defs/-janus-scale" } ,
"-janus-rotation" : { "$ref" : "#/$defs/-janus-rotation" } ,
"-janus-locked" : { "$ref" : "#/$defs/-janus-locked" } ,
"-janus-lighting" : { "$ref" : "#/$defs/-janus-lighting" } ,
"-janus-draw-layer" : { "$ref" : "#/$defs/-janus-draw_layer" }
}
} ,
2026-04-08 10:28:31 +02:00
2026-04-21 15:27:41 +02:00
"-janus-thumb_id" : { "type" : "object.name" } ,
"-janus-lighting" : { "type" : "boolean" , "default" : false } ,
"-janus-col" : { "type" : "color" , "default" : "#FFFFFF" } ,
"-janus-fwd" : { "type" : "string" , "default" : "0 0 1" } ,
"-janus-scale" : { "type" : "string" , "default" : "1 1 1" } ,
"-janus-rotation" : { "type" : "string" , "default" : "0 0 0" } ,
"-janus-locked" : { "type" : "boolean" , "default" : false } ,
"-janus-draw_layer" : { "type" : "integer" , "default" : 0 , "minimum" : 0 , "maximum" : 100 } ,
2026-04-08 10:28:31 +02:00
2026-04-21 15:27:41 +02:00
"godot3" : {
"oneOf" : [
{ "$ref" : "#/$defs/godot3_material" } ,
{ "$ref" : "#/$defs/godot3_spatial" }
]
} ,
2026-04-08 10:28:31 +02:00
2026-04-21 15:27:41 +02:00
"godot3_material" : {
"title" : "SpatialMaterial" ,
"description" : "The default Pmaterial for Godot 3." ,
"url" : "https://docs.godotengine.org/en/3.0/tutorials/3d/spatial_material.html" ,
"properties" : {
"_godot3-type" : {
"title" : "type" ,
"type" : "string" ,
"default" : "SpatialMaterial"
} ,
"-godot3-params_blend_mode" : {
"type" : "string" ,
"description" : "mat.params_blend_mode = SpatialMaterial.BLEND_MODE_MIX" ,
"enum" : [
"SpatialMaterial.BLEND_MODE_MIX" ,
"SpatialMaterial.BLEND_MODE_ADD" ,
"SpatialMaterial.BLEND_MODE_SUB" ,
"SpatialMaterial.BLEND_MODE_MUL"
]
} ,
"-godot3-params_cull_mode" : {
"type" : "string" ,
"description" : "mat.params_cull_mode = SpatialMaterial.CULL_BACK" ,
"enum" : [
"SpatialMaterial.CULL_BACK" ,
"SpatialMaterial.CULL_FRONT" ,
"SpatialMaterial.CULL_DISABLED"
]
} ,
"-godot3-uv1_offset.x+" : {
"type" : "number" ,
"description" : "mat.uv1_offset.x += speed * delta" ,
"default" : 0.005 ,
"minimum" : 0.000001 ,
"maximum" : 1
} ,
"-godot3-uv1_offset.y+" : {
"type" : "number" ,
"description" : "mat.uv1_offset.y += speed * delta" ,
"default" : 0.005 ,
"minimum" : 0.000001 ,
"maximum" : 1
}
}
} ,
2026-04-08 10:28:31 +02:00
2026-04-21 15:27:41 +02:00
"godot3_spatial" : {
"title" : "Object" ,
"properties" : {
"_godot3-type" : {
"title" : "type" ,
"type" : "string" ,
"default" : "Object"
} ,
"-godot3-render_priority" : {
"type" : "integer" ,
"description" : "mat.render_priority = value" ,
"minimum" : -128 ,
"maximum" : 127
}
}
} ,
2026-04-08 10:28:31 +02:00
2026-04-21 15:27:41 +02:00
"godot4" : {
"oneOf" : [ { "$ref" : "#/$defs/godot4_material" } , { "$ref" : "#/$defs/godot4_node3d" } ]
} ,
"godot4_material" : {
"title" : "StandardMaterial3D" ,
"description" : "The default PBR material for Godot 4." ,
"url" : "https://docs.godotengine.org/en/stable/classes/class_standardmaterial3d.html" ,
"properties" : {
"_godot4-type" : {
"title" : "type" ,
"type" : "string" ,
"default" : "StandardMaterial3D"
} ,
"-gotod4-blend_mode" : {
"type" : "string" ,
"description" : "mat.blend_mode = BaseMaterial3D.BLEND_MODE_MIX" ,
"enum" : [
"BaseMaterial3D.BLEND_MODE_MIX" ,
"BaseMaterial3D.BLEND_MODE_ADD" ,
"BaseMaterial3D.BLEND_MODE_SUB" ,
"BaseMaterial3D.BLEND_MODE_MUL"
]
} ,
"-gotod4-cull_mode" : {
"type" : "string" ,
"description" : "mat.cull_mode = BaseMaterial3D.CULL_BACK" ,
"enum" : [
"BaseMaterial3D.CULL_BACK" ,
"BaseMaterial3D.CULL_FRONT" ,
"BaseMaterial3D.CULL_DISABLED"
]
} ,
"-gotod4-uv1_offset.x+" : {
"type" : "number" ,
"description" : "mat.uv1_offset.x += speed * delta" ,
"default" : 0.005 ,
"minimum" : 0.000001 ,
"maximum" : 1
} ,
"-gotod4-uv1_offset.y+" : {
"type" : "number" ,
"description" : "mat.uv1_offset.y += speed * delta" ,
"default" : 0.005 ,
"minimum" : 0.000001 ,
"maximum" : 1
}
}
} ,
"godot4_node3d" : {
"title" : "Node3D" ,
"properties" : {
"_godot4-type" : {
"title" : "type" ,
"type" : "string" ,
"default" : "Node3D"
} ,
"-godot4-render_priority" : {
"type" : "integer" ,
"description" : "mat.render_priority = value" ,
"minimum" : -128 ,
"maximum" : 127
}
}
} ,
2026-04-08 10:28:31 +02:00
2026-04-21 15:27:41 +02:00
"playcanvas" : {
"oneOf" : [
{
"$ref" : "#/$defs/playcanvas_material"
} ,
{
"$ref" : "#/$defs/playcanvas_entity"
}
]
} ,
"playcanvas_material" : {
"title" : "StandardMaterial" ,
"properties" : {
"_playcanvas-type" : {
"title" : "type" ,
"type" : "string" ,
"default" : "material" ,
"description" : "var mat = new pc.StandardMaterial()"
} ,
"-playcanvas-material.blendType" : {
"type" : "string" ,
"description" : "mat.blendType = pc.BLEND_NORMAL" ,
"enum" : [
"pc.BLEND_NORMAL" ,
"pc.BLEND_NONE" ,
"pc.BLEND_ADDITIVE" ,
"pc.BLEND_SUBTRACTIVE" ,
"pc.BLEND_MULTIPLICATIVE"
]
} ,
"-playcanvas-material.cull" : {
"type" : "string" ,
"description" : "mat.cull = pc.CULL_BACK" ,
"enum" : [
"pc.CULL_BACK" ,
"pc.CULL_FRONT" ,
"pc.CULL_NONE"
]
} ,
"-playcanvas-material.diffuseMapOffset.x" : {
"type" : "number" ,
"description" : "mat.diffuseMapOffset.x += speed * dt" ,
"default" : 0.005 ,
"minimum" : 0.000001 ,
"maximum" : 1
} ,
"-playcanvas-material.diffuseMapOffset.y" : {
"type" : "number" ,
"description" : "mat.diffuseMapOffset.y += speed * dt" ,
"default" : 0.005 ,
"minimum" : 0.000001 ,
"maximum" : 1
}
}
} ,
2026-04-08 10:28:31 +02:00
2026-04-21 15:27:41 +02:00
"playcanvas_entity" : {
"title" : "Entity" ,
"properties" : {
"_playcanvas-type" : {
"title" : "type" ,
"type" : "string" ,
"default" : "entity"
} ,
"-playcanvas-renderOrder" : {
"type" : "integer" ,
"description" : "entity.render.layers = [layerID] // Custom sorting via layers or drawOrder" ,
"minimum" : 0 ,
"maximum" : 100
}
}
} ,
2026-04-08 10:28:31 +02:00
2026-04-21 15:27:41 +02:00
"babylon" : {
"oneOf" : [
{
"$ref" : "#/$defs/babylon_material"
} ,
{
"$ref" : "#/$defs/babylon_node"
}
]
} ,
"babylon_material" : {
"title" : "StandardMaterial" ,
"properties" : {
"_babylon-type" : {
"title" : "type" ,
"type" : "string" ,
"default" : "StandardMaterial"
} ,
"-babylon-material.alphaMode" : {
"type" : "string" ,
"description" : "mat.alphaMode = BABYLON.Engine.ALPHA_COMBINE" ,
"enum" : [
"BABYLON.Engine.ALPHA_COMBINE" ,
"BABYLON.Engine.ALPHA_DISABLE" ,
"BABYLON.Engine.ALPHA_ADD" ,
"BABYLON.Engine.ALPHA_SUBTRACT" ,
"BABYLON.Engine.ALPHA_MULTIPLY"
]
} ,
"-babylon-material.sideOrientation" : {
"type" : "string" ,
"description" : "mat.backFaceCulling = true // or mat.sideOrientation" ,
"enum" : [
"BABYLON.Material.ClockWiseSideOrientation" ,
"BABYLON.Material.CounterClockWiseSideOrientation" ,
"BABYLON.Material.TwoSidedLighting"
]
} ,
"-babylon-material.diffuseTexture.uOffset" : {
"type" : "number" ,
"description" : "mat.diffuseTexture.uOffset += speed * scene.getAnimationRatio()" ,
"default" : 0.005 ,
"minimum" : 0.000001 ,
"maximum" : 1
} ,
"-babylon-material.diffuseTexture.vOffset" : {
"type" : "number" ,
"description" : "mat.diffuseTexture.vOffset += speed * scene.getAnimationRatio()" ,
"default" : 0.005 ,
"minimum" : 0.000001 ,
"maximum" : 1
}
}
} ,
"babylon_node" : {
"title" : "AbstractMesh" ,
"properties" : {
"_babylon-type" : {
"title" : "type" ,
"type" : "string" ,
"default" : "mesh" ,
"description" : "var mesh = new BABYLON.Mesh('mesh', scene)"
} ,
"-babylon-renderingGroupId" : {
"type" : "integer" ,
"description" : "mesh.renderingGroupId = value // 0 to 3 by default" ,
"minimum" : 0 ,
"maximum" : 100
}
}
}
2026-04-08 10:28:31 +02:00
} ,
2026-04-21 15:27:41 +02:00
"properties" : {
"engine" : {
"type" : "enum" ,
"enum" : [
( "NONE" , "-- Select --" , "" ) ,
( "XRF" , "generic: hyperlinking" , "" ) ,
( "JANUSXR" , "JanusXR" , "" ) ,
( "THREEJS" , "Three.js" , "" ) ,
( "GODOT3" , "Godot 3" , "" ) ,
( "GODOT4" , "Godot 4" , "" ) ,
( "AFRAME" , "AFRAME" , "" ) ,
( "BABYLON" , "Babylon.js" , "" ) ,
( "PLAYCANVAS" , "PlayCanvas" , "" )
] ,
"default" : "NONE"
} ,
"engine_settings" : {
"oneOf" : [
{ "engine_val" : "XRF" , "$ref" : "#/$defs/xrf" , "title" : "XR Fragment" } ,
{ "engine_val" : "JANUSXR" , "$ref" : "#/$defs/janus" , "title" : "JanusXR" } ,
{ "engine_val" : "THREEJS" , "$ref" : "#/$defs/three" , "title" : "THREE.js" } ,
{ "engine_val" : "GODOT3" , "$ref" : "#/$defs/godot3" , "title" : "Godot3 (beta)" } ,
{ "engine_val" : "GODOT4" , "$ref" : "#/$defs/godot4" , "title" : "Godot4 (beta)" } ,
{ "engine_val" : "AFRAME" , "$ref" : "#/$defs/aframe" , "title" : "AFRAME (beta)" } ,
{ "engine_val" : "BABYLON" , "$ref" : "#/$defs/babylon" , "title" : "Babylon.js (beta)" } ,
{ "engine_val" : "PLAYCANVAS" , "$ref" : "#/$defs/playcanvas" , "title" : "PlayCanvas (beta)" } ,
]
}
}
2026-04-08 10:28:31 +02:00
}