zcbot/software-contracts/blender.scene.author.v2.json

270 lines
8.2 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"capability": "blender.scene.author@v2",
"display_name": "Blender 三维场景创作",
"default_enrollment": false,
"output_namespace": "blender",
"input_policy": {
"suffixes": [],
"max_count": 0,
"max_bytes": 0,
"max_total_bytes": 0
},
"outputs": {
"project": {
"filename": "scene.blend",
"media_type": "application/x-blender",
"relative_path": "scene.blend",
"publish": true,
"required": true
},
"preview_isometric": {
"filename": "preview-isometric.png",
"media_type": "image/png",
"relative_path": "preview-isometric.png",
"publish": true,
"required": true
},
"preview_side": {
"filename": "preview-side.png",
"media_type": "image/png",
"relative_path": "preview-side.png",
"publish": true,
"required": false
},
"preview_kiln_head": {
"filename": "preview-kiln-head.png",
"media_type": "image/png",
"relative_path": "preview-kiln-head.png",
"publish": true,
"required": false
},
"preview_kiln_tail": {
"filename": "preview-kiln-tail.png",
"media_type": "image/png",
"relative_path": "preview-kiln-tail.png",
"publish": true,
"required": false
},
"preview_cutaway": {
"filename": "preview-cutaway.png",
"media_type": "image/png",
"relative_path": "preview-cutaway.png",
"publish": true,
"required": false
},
"preview_cross_section": {
"filename": "preview-cross-section.png",
"media_type": "image/png",
"relative_path": "preview-cross-section.png",
"publish": true,
"required": false
},
"scene_manifest": {
"filename": "scene-manifest.json",
"media_type": "application/json",
"relative_path": "scene-manifest.json",
"publish": true,
"required": true
},
"scene_glb": {
"filename": "scene.glb",
"media_type": "model/gltf-binary",
"relative_path": "scene.glb",
"publish": true,
"required": false
},
"provenance": {
"filename": "provenance.json",
"media_type": "application/json",
"relative_path": ".meta/provenance.json",
"publish": false,
"required": true
}
},
"feature_path": ["operation", "scene", "type"],
"features": {
"rotary_kiln": "0.2.0"
},
"summary": {
"title_path": ["operation", "scene", "title"]
},
"legacy_runtime": null,
"workspace": {
"state_output": "project",
"preview_outputs": [
"preview_isometric",
"preview_side",
"preview_kiln_head",
"preview_kiln_tail",
"preview_cutaway",
"preview_cross_section"
],
"required_adapter_version": "0.2.0"
},
"request_schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"x-maxBytes": 65536,
"required": ["schema_version", "inputs", "operation", "outputs"],
"additionalProperties": false,
"properties": {
"schema_version": {"const": 2},
"inputs": {
"type": "array",
"maxItems": 0
},
"operation": {
"type": "object",
"required": ["scene"],
"additionalProperties": false,
"properties": {
"scene": {"$ref": "#/$defs/rotaryKilnScene"}
}
},
"outputs": {
"type": "array",
"maxItems": 6,
"uniqueItems": true,
"description": "为 render.views 中除 isometric 外的每个视图请求对应 PNG可另选 GLB。",
"items": {
"oneOf": [
{"$ref": "#/$defs/sideOutput"},
{"$ref": "#/$defs/headOutput"},
{"$ref": "#/$defs/tailOutput"},
{"$ref": "#/$defs/cutawayOutput"},
{"$ref": "#/$defs/crossSectionOutput"},
{"$ref": "#/$defs/glbOutput"}
]
}
}
},
"$defs": {
"color": {
"type": "string",
"pattern": "^#[0-9A-Fa-f]{6}$"
},
"pngOutput": {
"type": "object",
"required": ["key", "type", "format"],
"additionalProperties": false,
"properties": {
"key": {"type": "string"},
"type": {"const": "figure"},
"format": {"const": "png"}
}
},
"sideOutput": {
"allOf": [
{"$ref": "#/$defs/pngOutput"},
{"properties": {"key": {"const": "preview_side"}}}
]
},
"headOutput": {
"allOf": [
{"$ref": "#/$defs/pngOutput"},
{"properties": {"key": {"const": "preview_kiln_head"}}}
]
},
"tailOutput": {
"allOf": [
{"$ref": "#/$defs/pngOutput"},
{"properties": {"key": {"const": "preview_kiln_tail"}}}
]
},
"cutawayOutput": {
"allOf": [
{"$ref": "#/$defs/pngOutput"},
{"properties": {"key": {"const": "preview_cutaway"}}}
]
},
"crossSectionOutput": {
"allOf": [
{"$ref": "#/$defs/pngOutput"},
{"properties": {"key": {"const": "preview_cross_section"}}}
]
},
"glbOutput": {
"type": "object",
"required": ["key", "type", "format"],
"additionalProperties": false,
"properties": {
"key": {"const": "scene_glb"},
"type": {"const": "model"},
"format": {"const": "glb"}
}
},
"rotaryKilnScene": {
"type": "object",
"required": ["type", "title", "kiln", "render"],
"additionalProperties": false,
"properties": {
"type": {"const": "rotary_kiln"},
"title": {"type": "string", "minLength": 1, "maxLength": 160},
"kiln": {
"type": "object",
"required": [
"length_m", "outer_diameter_m", "shell_thickness_m",
"lining_thickness_m", "slope_percent", "support_stations"
],
"additionalProperties": false,
"properties": {
"length_m": {"type": "number", "minimum": 5, "maximum": 200},
"outer_diameter_m": {"type": "number", "minimum": 0.5, "maximum": 15},
"shell_thickness_m": {"type": "number", "minimum": 0.005, "maximum": 0.5},
"lining_thickness_m": {"type": "number", "minimum": 0.01, "maximum": 1.5},
"slope_percent": {"type": "number", "minimum": 0, "maximum": 10},
"support_stations": {"type": "integer", "minimum": 2, "maximum": 8},
"rotational_speed_rpm": {"type": "number", "exclusiveMinimum": 0, "maximum": 10}
}
},
"components": {
"type": "object",
"additionalProperties": false,
"properties": {
"drive_system": {"type": "boolean"},
"burner": {"type": "boolean"},
"hoods": {"type": "boolean"},
"inspection_platform": {"type": "boolean"},
"material_bed": {"type": "boolean"}
}
},
"appearance": {
"type": "object",
"additionalProperties": false,
"properties": {
"shell_color": {"$ref": "#/$defs/color"},
"metal_color": {"$ref": "#/$defs/color"},
"lining_color": {"$ref": "#/$defs/color"},
"material_color": {"$ref": "#/$defs/color"},
"background_color": {"$ref": "#/$defs/color"}
}
},
"render": {
"type": "object",
"required": ["views"],
"additionalProperties": false,
"properties": {
"width": {"type": "integer", "minimum": 320, "maximum": 3840},
"height": {"type": "integer", "minimum": 240, "maximum": 2160},
"transparent_background": {"type": "boolean"},
"views": {
"type": "array",
"minItems": 1,
"maxItems": 6,
"uniqueItems": true,
"contains": {"const": "isometric"},
"items": {
"enum": [
"isometric", "side", "kiln_head", "kiln_tail",
"longitudinal_cutaway", "cross_section"
]
}
}
}
}
}
}
}
}
}