laban-rig.git · canonical_rig.json
laban-rig.git / canonical_rig.json
revision fc813fbf6ee5e1554e429fb8bf91ffb33f310308 · complete file
{
"skeletonSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "CanonicalHumanoidSkeleton",
"type": "object",
"required": [
"skeletonId",
"version",
"source",
"coordinateSystem",
"joints"
],
"properties": {
"skeletonId": {
"type": "string",
"description": "Stable identifier for this skeleton definition, e.g. 'canonical-arkit-body-v1'"
},
"version": {
"type": "string",
"description": "Semantic version of this skeleton description, e.g. '1.0.0'"
},
"source": {
"type": "string",
"description": "Origin of the skeleton topology, e.g. 'ARKit.defaultBody3D'"
},
"coordinateSystem": {
"type": "object",
"required": [
"upAxis",
"forwardAxis",
"rightAxis",
"unit"
],
"properties": {
"upAxis": {
"type": "string",
"enum": [
"X",
"Y",
"Z",
"-X",
"-Y",
"-Z"
]
},
"forwardAxis": {
"type": "string",
"enum": [
"X",
"Y",
"Z",
"-X",
"-Y",
"-Z"
]
},
"rightAxis": {
"type": "string",
"enum": [
"X",
"Y",
"Z",
"-X",
"-Y",
"-Z"
]
},
"unit": {
"type": "string",
"enum": [
"meters",
"centimeters",
"millimeters"
]
}
}
},
"joints": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/definitions/Joint"
}
},
"metadata": {
"type": "object",
"description": "Optional free-form metadata for tools, exporters, etc."
}
},
"definitions": {
"Joint": {
"type": "object",
"required": [
"id",
"name",
"parentId",
"side",
"role",
"labanPart"
],
"properties": {
"id": {
"type": "string",
"description": "Canonical joint ID, stable across formats, e.g. 'pelvis'"
},
"name": {
"type": "string",
"description": "Native joint name in the source skeleton, e.g. ARKit's 'hips_joint'"
},
"parentId": {
"type": [
"string",
"null"
],
"description": "Canonical ID of the parent joint; null for root"
},
"side": {
"type": "string",
"enum": [
"CENTER",
"LEFT",
"RIGHT"
]
},
"role": {
"$ref": "#/definitions/JointRole"
},
"labanPart": {
"$ref": "#/definitions/LabanPart"
},
"restTransform": {
"type": [
"array",
"null"
],
"description": "4x4 column-major local transform matrix in bind pose, relative to parent; or null if specified elsewhere",
"items": {
"type": "number"
},
"minItems": 16,
"maxItems": 16
},
"notes": {
"type": "string",
"description": "Optional human-readable comments"
}
}
},
"JointRole": {
"type": "string",
"enum": [
"ROOT",
"PELVIS",
"SPINE_LOWER",
"SPINE_MID",
"SPINE_UPPER",
"NECK_BASE",
"NECK_TOP",
"HEAD",
"JAW",
"CLAVICLE",
"SHOULDER",
"ELBOW",
"WRIST",
"HAND",
"HIP",
"KNEE",
"ANKLE",
"BALL",
"TOE_END"
]
},
"LabanPart": {
"type": "string",
"enum": [
"WHOLE",
"TRUNK",
"HEAD_NECK",
"ARM_LEFT",
"ARM_RIGHT",
"HAND_LEFT",
"HAND_RIGHT",
"LEG_LEFT",
"LEG_RIGHT",
"FOOT_LEFT",
"FOOT_RIGHT"
]
}
}
},
"exampleSkeleton": {
"skeletonId": "canonical-arkit-body-v1",
"version": "1.0.0",
"source": "ARKit.defaultBody3D",
"coordinateSystem": {
"upAxis": "Y",
"forwardAxis": "Z",
"rightAxis": "X",
"unit": "meters"
},
"joints": [
{
"id": "root",
"name": "hips_joint",
"parentId": null,
"side": "CENTER",
"role": "ROOT",
"labanPart": "WHOLE",
"restTransform": null,
"notes": "Logical root aligned with pelvis / center of mass."
},
{
"id": "pelvis",
"name": "hips_joint",
"parentId": "root",
"side": "CENTER",
"role": "PELVIS",
"labanPart": "TRUNK",
"restTransform": null
},
{
"id": "spine_lower",
"name": "spine_1_joint",
"parentId": "pelvis",
"side": "CENTER",
"role": "SPINE_LOWER",
"labanPart": "TRUNK",
"restTransform": null
},
{
"id": "spine_mid",
"name": "spine_4_joint",
"parentId": "spine_lower",
"side": "CENTER",
"role": "SPINE_MID",
"labanPart": "TRUNK",
"restTransform": null
},
{
"id": "spine_upper",
"name": "spine_7_joint",
"parentId": "spine_mid",
"side": "CENTER",
"role": "SPINE_UPPER",
"labanPart": "TRUNK",
"restTransform": null
},
{
"id": "neck_base",
"name": "neck_1_joint",
"parentId": "spine_upper",
"side": "CENTER",
"role": "NECK_BASE",
"labanPart": "HEAD_NECK",
"restTransform": null
},
{
"id": "neck_top",
"name": "neck_4_joint",
"parentId": "neck_base",
"side": "CENTER",
"role": "NECK_TOP",
"labanPart": "HEAD_NECK",
"restTransform": null
},
{
"id": "head",
"name": "head_joint",
"parentId": "neck_top",
"side": "CENTER",
"role": "HEAD",
"labanPart": "HEAD_NECK",
"restTransform": null
},
{
"id": "hip_left",
"name": "left_upLeg_joint",
"parentId": "pelvis",
"side": "LEFT",
"role": "HIP",
"labanPart": "LEG_LEFT",
"restTransform": null
},
{
"id": "knee_left",
"name": "left_leg_joint",
"parentId": "hip_left",
"side": "LEFT",
"role": "KNEE",
"labanPart": "LEG_LEFT",
"restTransform": null
},
{
"id": "ankle_left",
"name": "left_foot_joint",
"parentId": "knee_left",
"side": "LEFT",
"role": "ANKLE",
"labanPart": "FOOT_LEFT",
"restTransform": null
},
{
"id": "toe_left",
"name": "left_toes_joint",
"parentId": "ankle_left",
"side": "LEFT",
"role": "TOE_END",
"labanPart": "FOOT_LEFT",
"restTransform": null
},
{
"id": "hip_right",
"name": "right_upLeg_joint",
"parentId": "pelvis",
"side": "RIGHT",
"role": "HIP",
"labanPart": "LEG_RIGHT",
"restTransform": null
},
{
"id": "knee_right",
"name": "right_leg_joint",
"parentId": "hip_right",
"side": "RIGHT",
"role": "KNEE",
"labanPart": "LEG_RIGHT",
"restTransform": null
},
{
"id": "ankle_right",
"name": "right_foot_joint",
"parentId": "knee_right",
"side": "RIGHT",
"role": "ANKLE",
"labanPart": "FOOT_RIGHT",
"restTransform": null
},
{
"id": "toe_right",
"name": "right_toes_joint",
"parentId": "ankle_right",
"side": "RIGHT",
"role": "TOE_END",
"labanPart": "FOOT_RIGHT",
"restTransform": null
},
{
"id": "clavicle_left",
"name": "left_shoulder_1_joint",
"parentId": "spine_upper",
"side": "LEFT",
"role": "CLAVICLE",
"labanPart": "ARM_LEFT",
"restTransform": null
},
{
"id": "shoulder_left",
"name": "left_arm_joint",
"parentId": "clavicle_left",
"side": "LEFT",
"role": "SHOULDER",
"labanPart": "ARM_LEFT",
"restTransform": null
},
{
"id": "elbow_left",
"name": "left_forearm_joint",
"parentId": "shoulder_left",
"side": "LEFT",
"role": "ELBOW",
"labanPart": "ARM_LEFT",
"restTransform": null
},
{
"id": "wrist_left",
"name": "left_hand_joint",
"parentId": "elbow_left",
"side": "LEFT",
"role": "WRIST",
"labanPart": "HAND_LEFT",
"restTransform": null
},
{
"id": "clavicle_right",
"name": "right_shoulder_1_joint",
"parentId": "spine_upper",
"side": "RIGHT",
"role": "CLAVICLE",
"labanPart": "ARM_RIGHT",
"restTransform": null
},
{
"id": "shoulder_right",
"name": "right_arm_joint",
"parentId": "clavicle_right",
"side": "RIGHT",
"role": "SHOULDER",
"labanPart": "ARM_RIGHT",
"restTransform": null
},
{
"id": "elbow_right",
"name": "right_forearm_joint",
"parentId": "shoulder_right",
"side": "RIGHT",
"role": "ELBOW",
"labanPart": "ARM_RIGHT",
"restTransform": null
},
{
"id": "wrist_right",
"name": "right_hand_joint",
"parentId": "elbow_right",
"side": "RIGHT",
"role": "WRIST",
"labanPart": "HAND_RIGHT",
"restTransform": null
}
]
}
}