update blender addon

This commit is contained in:
Leon van Kammen 2026-04-21 15:27:41 +02:00
parent a43a030c08
commit cda52c467d
3 changed files with 994 additions and 981 deletions

View file

@ -3,19 +3,21 @@ BEGIN {
REPLACE=1 REPLACE=1
state=0 state=0
while( (getline < "./tool/blender-xrfragments.py") > 0 ){ while( (getline < "./tool/blender-xrfragments.py") > 0 ){
if( $1 ~ /^}/ && state == REPLACE ) state=0 if( $0 ~ /^}/ && state == REPLACE ){
print $0
print $0 state=0
if( state == REPLACE ){
while( (getline < "./xrfragment-engine-prefixes.json") > 0 ){
gsub("true","True",$0)
gsub("false","False",$0)
if( $1 == "\"$version\":" ) $2 = ($2+1)"," # bump version
if( $0 !~ /^[{}]/ ) print $0
}
} }
if( $1 == "SCHEMA" ) state=REPLACE if( state == REPLACE ){
gsub("True","true",$0)
gsub("False","false",$0)
if( $1 == "\"$version\":" ) $2 = ($2+1)"," # bump version
if( $0 !~ /^[{}]/ ) print $0
}
if( $1 == "SCHEMA" ){
state=REPLACE
print "{"
}
} }
} }

File diff suppressed because it is too large Load diff

View file

@ -1,469 +1,481 @@
{ {
"$schema": "https://json-schema.org/draft/2020-12/schema", "title": "XR Fragments",
"$id": "https://xrfragment.org/schema/xrfragment-engine-prefixes.json", "type": "object",
"$version": 34, "$version": 3,
"title": "XR Fragments Engine Prefixes", "flatten": true,
"type": "object", "$defs": {
"flatten": true,
"properties": { "xrf":{
"engine": { "title": "XR Fragments",
"type": "enum", "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.",
"enum": [ "url": "https://xrfragment.org/#How%20it%20works",
["NONE", "-- Select --", ""], "properties":{
["JANUSXR", "JanusXR", ""], "_xrf-type": { "title": "type", "type": "string", "default":"xrf", "description": "needed for blender UI"},
["THREEJS", "Three.js", ""], "href":{
["GODOT3", "Godot 3", ""], "type":"object.name",
["GODOT4", "Godot 4", ""], "description": "teleport to / href"
["AFRAME", "AFRAME", ""], }
["BABYLON", "Babylon.js", ""], }
["PLAYCANVAS", "PlayCanvas", ""] },
],
"default": "NONE"
},
"engine_settings": {
"oneOf": [
{"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)"}
]
}
},
"$defs": { "three": {
"oneOf":[
{"$ref": "#/$defs/three_material"},
"three": { {"$ref": "#/$defs/three_object"}
"oneOf":[
{"$ref": "#/$defs/three_material"},
{"$ref": "#/$defs/three_object"}
]
},
"aframe": {
"oneOf":[
{"$ref": "#/$defs/three_material"},
{"$ref": "#/$defs/three_object"}
]
},
"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
}
}
},
"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
}
}
},
"janus": {
"oneOf":[
{"$ref": "#/$defs/janus_image"},
{"$ref": "#/$defs/janus_video"},
{"$ref": "#/$defs/janus_link"}
]
},
"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"}
}
},
"-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},
"godot3": {
"oneOf": [
{ "$ref": "#/$defs/godot3_material" },
{ "$ref": "#/$defs/godot3_spatial" }
]
},
"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
}
}
},
"godot3_spatial": { "aframe": {
"title": "Object", "oneOf":[
"properties": { {"$ref": "#/$defs/three_material"},
"_godot3-type": { {"$ref": "#/$defs/three_object"}
"title": "type",
"type": "string",
"default": "Object"
},
"-godot3-render_priority": {
"type": "integer",
"description": "mat.render_priority = value",
"minimum": -128,
"maximum": 127
}
}
},
"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
}
}
},
"playcanvas": { "three_material":{
"oneOf": [ "title": "Material",
{ "description": "Material is THREE's abstract base material class",
"$ref": "#/$defs/playcanvas_material" "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
}
}
}, },
{
"$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
}
}
},
"playcanvas_entity": { "three_object":{
"title": "Entity", "title": "Object3D",
"properties": { "description": "Object3D is THREE's abstract base entity class",
"_playcanvas-type": { "url": "https://threejs.org/docs/?q=Object3D#Object3D",
"title": "type", "properties":{
"type": "string", "_three-type": { "title": "type", "type": "string", "default":"object3D", "description": "needed for blender UI"},
"default": "entity" "-three-renderOrder":{
}, "type":"integer",
"-playcanvas-renderOrder": { "minimum": 0,
"type": "integer", "maximum": 100
"description": "entity.render.layers = [layerID] // Custom sorting via layers or drawOrder", }
"minimum": 0, }
"maximum": 100 },
}
} "janus": {
}, "oneOf":[
{"$ref": "#/$defs/janus_image"},
{"$ref": "#/$defs/janus_video"},
{"$ref": "#/$defs/janus_link"}
]
},
"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"}
}
},
"-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},
"godot3": {
"oneOf": [
{ "$ref": "#/$defs/godot3_material" },
{ "$ref": "#/$defs/godot3_spatial" }
]
},
"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
}
}
},
"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
}
}
},
"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
}
}
},
"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
}
}
},
"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
}
}
},
"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
}
}
}
"babylon": {
"oneOf": [
{
"$ref": "#/$defs/babylon_material"
}, },
{ "properties": {
"$ref": "#/$defs/babylon_node" "engine": {
} "type": "enum",
] "enum": [
}, ("NONE", "-- Select --", ""),
"babylon_material": { ("XRF", "generic: hyperlinking", ""),
"title": "StandardMaterial", ("JANUSXR", "JanusXR", ""),
"properties": { ("THREEJS", "Three.js", ""),
"_babylon-type": { ("GODOT3", "Godot 3", ""),
"title": "type", ("GODOT4", "Godot 4", ""),
"type": "string", ("AFRAME", "AFRAME", ""),
"default": "StandardMaterial" ("BABYLON", "Babylon.js", ""),
}, ("PLAYCANVAS", "PlayCanvas", "")
"-babylon-material.alphaMode": { ],
"type": "string", "default": "NONE"
"description": "mat.alphaMode = BABYLON.Engine.ALPHA_COMBINE", },
"enum": [ "engine_settings": {
"BABYLON.Engine.ALPHA_COMBINE", "oneOf": [
"BABYLON.Engine.ALPHA_DISABLE", {"engine_val": "XRF", "$ref": "#/$defs/xrf", "title": "XR Fragment"},
"BABYLON.Engine.ALPHA_ADD", {"engine_val": "JANUSXR", "$ref": "#/$defs/janus", "title": "JanusXR"},
"BABYLON.Engine.ALPHA_SUBTRACT", {"engine_val": "THREEJS", "$ref": "#/$defs/three", "title": "THREE.js"},
"BABYLON.Engine.ALPHA_MULTIPLY" {"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)"},
"-babylon-material.sideOrientation": { {"engine_val": "BABYLON", "$ref": "#/$defs/babylon", "title": "Babylon.js (beta)"},
"type": "string", {"engine_val": "PLAYCANVAS", "$ref": "#/$defs/playcanvas", "title": "PlayCanvas (beta)"},
"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
}
}
}
}
} }