42 lines
2.5 KiB
JSON
42 lines
2.5 KiB
JSON
{
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["schema_version", "coordinate_space", "parts", "notes"],
|
|
"properties": {
|
|
"schema_version": {"type": "integer", "enum": [2]},
|
|
"coordinate_space": {"type": "string", "enum": ["normalized_xy_top_left"]},
|
|
"notes": {"type": "array", "items": {"type": "string"}},
|
|
"parts": {
|
|
"type": "array", "minItems": 1, "maxItems": 64,
|
|
"items": {
|
|
"type": "object", "additionalProperties": false,
|
|
"required": ["id", "semantic", "parent", "rig_role", "bind_to", "completion", "visibility", "bbox_norm_xyxy", "pivot_norm", "positive_points_norm", "negative_points_norm", "occluded_by", "needs_completion", "confidence"],
|
|
"properties": {
|
|
"id": {"type": "string", "pattern": "^[a-z][a-z0-9_-]*$", "maxLength": 64},
|
|
"semantic": {"type": "string", "minLength": 1},
|
|
"parent": {"type": ["string", "null"]},
|
|
"rig_role": {"type": "string", "enum": ["bone_part", "attachment", "facial_feature"]},
|
|
"bind_to": {"type": ["string", "null"], "description": "bone_part: null; attachment/facial_feature: existing bone_part ID or null for root"},
|
|
"completion": {
|
|
"type": "object", "additionalProperties": false,
|
|
"required": ["occlusion_fill", "joint_extension_parent", "joint_extension_child"],
|
|
"properties": {
|
|
"occlusion_fill": {"type": "boolean"},
|
|
"joint_extension_parent": {"type": "boolean"},
|
|
"joint_extension_child": {"type": "boolean"}
|
|
}
|
|
},
|
|
"visibility": {"type": "string", "enum": ["visible", "partial", "hidden"]},
|
|
"bbox_norm_xyxy": {"type": ["array", "null"], "minItems": 4, "maxItems": 4, "items": {"type": "number", "minimum": 0, "maximum": 1}},
|
|
"pivot_norm": {"type": "array", "minItems": 2, "maxItems": 2, "items": {"type": "number", "minimum": 0, "maximum": 1}},
|
|
"positive_points_norm": {"type": "array", "maxItems": 32, "items": {"type": "array", "minItems": 2, "maxItems": 2, "items": {"type": "number", "minimum": 0, "maximum": 1}}},
|
|
"negative_points_norm": {"type": "array", "maxItems": 32, "items": {"type": "array", "minItems": 2, "maxItems": 2, "items": {"type": "number", "minimum": 0, "maximum": 1}}},
|
|
"occluded_by": {"type": "array", "items": {"type": "string"}},
|
|
"needs_completion": {"type": "boolean"},
|
|
"confidence": {"type": "number", "minimum": 0, "maximum": 1}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|