Rebuild the exercise figure on an anatomical 3D skeleton

The library's planar world-angle rig becomes a genuine 3D anatomical
model: skeleton.json holds bone-length profiles (real shoulder/pelvis
widths, feet, neutral/female/male) and per-joint ROM; motions pose
joints with anatomical angles (flexion/abduction/rotation from neutral
standing) under a per-exercise orthographic camera, resolved by
kinematics.py (3D FK, analytic two-bone IK with anatomical write-back)
and validated against physiological ranges. All 20 sagittal motions
were migrated by planar decomposition with 0.00 px golden parity against
the old renderer — relabeled to true anatomy, since shading is now
near-dark/far-light by camera depth rather than by limb suffix — and
the face-on machines are re-authored honestly: Abductor/Adductor with
real hip abduction (the foreshortened "frontal" profile is retired) and
Rotary with genuine spine axial rotation. Figures gain articulated
feet; profiles swap without touching a single motion script; --orbit
sweeps the camera 360° while a motion loops.

The in-app SwiftUI renderer (iOS + watch) is ported to the same model
and consumes the exported motions verbatim; figure-fixtures.json pins
its geometry to the Python pipeline within 0.5 px across every
exercise, key frame, tween, and orbit sample. Also makes the watch
bridge logger nonisolated for the newer SDK's stricter isolation
checking.

Claude-Session: https://claude.ai/code/session_01LEoff8bXGBS83tK1c55Mf7
This commit is contained in:
2026-07-06 20:10:50 -04:00
parent 6521de8f17
commit 3c7a790e9d
153 changed files with 2827 additions and 1686 deletions
@@ -2,7 +2,6 @@
"name": "Abdominal",
"primary": 2,
"working": ["spine"],
"hide": [],
"props": [
{"type": "scene", "shapes": [
{"kind": "line", "pts": [[120, 128], [114, 62]], "w": 8},
@@ -16,18 +15,24 @@
"frames": [
{
"hold": 0.4, "tween": 1.0,
"root": [128, 126],
"spine": [94, 90], "neck": 82, "gaze": -8,
"arm_r": [-12, -52], "arm_l": [-12, -52],
"leg_r": [-20, -90], "leg_l": [-20, -90],
"root": {"pos": [128, 126], "pitch": -4},
"spine": [0, 4],
"neck": 8,
"shoulder_r": 78, "elbow_r": -40,
"shoulder_l": 78, "elbow_l": -40,
"hip_r": 66, "knee_r": 70,
"hip_l": 66, "knee_l": 70,
"pins": {"hand_r": [155, 62], "hand_l": [161, 64], "foot_r": [168, 150], "foot_l": [172, 150]}
},
{
"hold": 0.4, "tween": 1.0,
"root": [128, 126],
"spine": [80, 40], "neck": 22, "gaze": -42,
"arm_r": [-12, -52], "arm_l": [-12, -52],
"leg_r": [-20, -90], "leg_l": [-20, -90],
"root": {"pos": [128, 126], "pitch": 10},
"spine": [0, 40],
"neck": 18, "head": -26,
"shoulder_r": 128, "elbow_r": -40,
"shoulder_l": 128, "elbow_l": -40,
"hip_r": 80, "knee_r": 70,
"hip_l": 80, "knee_l": 70,
"pins": {"hand_r": [190, 76], "hand_l": [196, 78], "foot_r": [168, 150], "foot_l": [172, 150]}
}
]
@@ -1,9 +1,8 @@
{
"name": "Abductor",
"primary": 2,
"figure": "frontal",
"camera": {"yaw": 90},
"working": ["leg_r", "leg_l"],
"hide": [],
"props": [
{"type": "scene", "shapes": [
{"kind": "rect", "x": 152, "y": 56, "w": 16, "h": 72, "r": 5},
@@ -16,17 +15,23 @@
"frames": [
{
"hold": 0.5, "tween": 1.1,
"root": [160, 116],
"spine": [90, 90], "neck": 90,
"arm_r": [-48, -82], "arm_l": [-132, -98],
"leg_r": [-75, -90], "leg_l": [-105, -90]
"root": {"pos": [160, 116]},
"spine": [0, 0],
"neck": 0,
"shoulder_r": {"flexion": 10, "abduction": 18}, "elbow_r": 25,
"shoulder_l": {"flexion": 10, "abduction": 18}, "elbow_l": 25,
"hip_r": {"flexion": 78, "abduction": 7}, "knee_r": 62,
"hip_l": {"flexion": 78, "abduction": 7}, "knee_l": 62
},
{
"hold": 0.5, "tween": 1.1,
"root": [160, 116],
"spine": [90, 90], "neck": 90,
"arm_r": [-48, -82], "arm_l": [-132, -98],
"leg_r": [-30, -90], "leg_l": [-150, -90]
"root": {"pos": [160, 116]},
"spine": [0, 0],
"neck": 0,
"shoulder_r": {"flexion": 10, "abduction": 18}, "elbow_r": 25,
"shoulder_l": {"flexion": 10, "abduction": 18}, "elbow_l": 25,
"hip_r": {"flexion": 78, "abduction": 30}, "knee_r": 62,
"hip_l": {"flexion": 78, "abduction": 30}, "knee_l": 62
}
]
}
@@ -1,9 +1,8 @@
{
"name": "Adductor",
"primary": 2,
"figure": "frontal",
"camera": {"yaw": 90},
"working": ["leg_r", "leg_l"],
"hide": [],
"props": [
{"type": "scene", "shapes": [
{"kind": "rect", "x": 152, "y": 56, "w": 16, "h": 72, "r": 5},
@@ -16,17 +15,23 @@
"frames": [
{
"hold": 0.5, "tween": 1.1,
"root": [160, 116],
"spine": [90, 90], "neck": 90,
"arm_r": [-48, -82], "arm_l": [-132, -98],
"leg_r": [-30, -90], "leg_l": [-150, -90]
"root": {"pos": [160, 116]},
"spine": [0, 0],
"neck": 0,
"shoulder_r": {"flexion": 10, "abduction": 18}, "elbow_r": 25,
"shoulder_l": {"flexion": 10, "abduction": 18}, "elbow_l": 25,
"hip_r": {"flexion": 78, "abduction": 30}, "knee_r": 62,
"hip_l": {"flexion": 78, "abduction": 30}, "knee_l": 62
},
{
"hold": 0.5, "tween": 1.1,
"root": [160, 116],
"spine": [90, 90], "neck": 90,
"arm_r": [-48, -82], "arm_l": [-132, -98],
"leg_r": [-75, -90], "leg_l": [-105, -90]
"root": {"pos": [160, 116]},
"spine": [0, 0],
"neck": 0,
"shoulder_r": {"flexion": 10, "abduction": 18}, "elbow_r": 25,
"shoulder_l": {"flexion": 10, "abduction": 18}, "elbow_l": 25,
"hip_r": {"flexion": 78, "abduction": 7}, "knee_r": 62,
"hip_l": {"flexion": 78, "abduction": 7}, "knee_l": 62
}
]
}
@@ -2,7 +2,6 @@
"name": "Arm Curl",
"primary": 2,
"working": ["arm_r", "arm_l"],
"hide": [],
"props": [
{"type": "scene", "shapes": [
{"kind": "line", "pts": [[116, 134], [150, 134]], "w": 8},
@@ -14,18 +13,24 @@
"frames": [
{
"hold": 0.4, "tween": 1.0,
"root": [130, 124],
"spine": [88, 86], "neck": 82, "gaze": -18,
"arm_r": [-35, -58], "arm_l": [-35, -58],
"leg_r": [-8, -72], "leg_l": [-8, -72],
"root": {"pos": [130, 124], "pitch": 2},
"spine": [0, 2],
"neck": 4, "head": 10,
"shoulder_r": 59, "elbow_r": -23,
"shoulder_l": 59, "elbow_l": -23,
"hip_r": 84, "knee_r": 64,
"hip_l": 84, "knee_l": 64,
"pins": {"foot_r": [176, 150], "foot_l": [180, 151]}
},
{
"hold": 0.4, "tween": 1.2,
"root": [130, 124],
"spine": [88, 86], "neck": 82, "gaze": -18,
"arm_r": [-35, 50], "arm_l": [-35, 50],
"leg_r": [-8, -72], "leg_l": [-8, -72],
"root": {"pos": [130, 124], "pitch": 2},
"spine": [0, 2],
"neck": 4, "head": 10,
"shoulder_r": 59, "elbow_r": 85,
"shoulder_l": 59, "elbow_l": 85,
"hip_r": 84, "knee_r": 64,
"hip_l": 84, "knee_l": 64,
"pins": {"foot_r": [176, 150], "foot_l": [180, 151]}
}
]
@@ -1,39 +1,51 @@
{
"name": "Bird Dog",
"primary": 2,
"working": ["arm_r", "leg_l", "arm_l", "leg_r"],
"working": ["arm_l", "leg_r", "arm_r", "leg_l"],
"frames": [
{
"hold": 0.5, "tween": 0.8,
"root": [190, 106],
"spine": [171, 171], "neck": 187, "gaze": 205,
"arm_r": [-90, -90], "arm_l": [-90, -90],
"leg_r": [-83, 0], "leg_l": [-83, 0],
"pins": {"hand_r": [105, 152], "hand_l": [111, 154]}
"root": {"pos": [190, 106], "yaw": 180, "pitch": 81},
"spine": [0, 0],
"neck": 16, "head": -72,
"shoulder_r": 81, "elbow_r": 0,
"shoulder_l": 81, "elbow_l": 0,
"hip_r": 74, "knee_r": 83, "ankle_r": -55,
"hip_l": 74, "knee_l": 83, "ankle_l": -55,
"pins": {"hand_l": [105, 152], "hand_r": [111, 154]}
},
{
"hold": 1.4, "tween": 0.8,
"root": [190, 106],
"spine": [171, 171], "neck": 187, "gaze": 195,
"arm_r": [161, 161], "arm_l": [-90, -90],
"leg_r": [-83, 0], "leg_l": [15, 15],
"pins": {"hand_l": [111, 154]}
"root": {"pos": [190, 106], "yaw": 180, "pitch": 81},
"spine": [0, 0],
"neck": 16, "head": -82,
"shoulder_r": 81, "elbow_r": 0,
"shoulder_l": 190, "elbow_l": 0,
"hip_r": -24, "knee_r": 0, "ankle_r": -25,
"hip_l": 74, "knee_l": 83, "ankle_l": -55,
"pins": {"hand_r": [111, 154]}
},
{
"hold": 0.5, "tween": 0.8,
"root": [190, 106],
"spine": [171, 171], "neck": 187, "gaze": 205,
"arm_r": [-90, -90], "arm_l": [-90, -90],
"leg_r": [-83, 0], "leg_l": [-83, 0],
"pins": {"hand_r": [105, 152], "hand_l": [111, 154]}
"root": {"pos": [190, 106], "yaw": 180, "pitch": 81},
"spine": [0, 0],
"neck": 16, "head": -72,
"shoulder_r": 81, "elbow_r": 0,
"shoulder_l": 81, "elbow_l": 0,
"hip_r": 74, "knee_r": 83, "ankle_r": -55,
"hip_l": 74, "knee_l": 83, "ankle_l": -55,
"pins": {"hand_l": [105, 152], "hand_r": [111, 154]}
},
{
"hold": 1.4, "tween": 0.8,
"root": [190, 106],
"spine": [171, 171], "neck": 187, "gaze": 195,
"arm_r": [-90, -90], "arm_l": [161, 161],
"leg_r": [15, 15], "leg_l": [-83, 0],
"pins": {"hand_r": [105, 152]}
"root": {"pos": [190, 106], "yaw": 180, "pitch": 81},
"spine": [0, 0],
"neck": 16, "head": -82,
"shoulder_r": 190, "elbow_r": 0,
"shoulder_l": 81, "elbow_l": 0,
"hip_r": 74, "knee_r": 83, "ankle_r": -55,
"hip_l": -24, "knee_l": 0, "ankle_l": -25,
"pins": {"hand_l": [105, 152]}
}
]
}
@@ -2,7 +2,6 @@
"name": "Calfs",
"primary": 2,
"working": ["leg_r", "leg_l"],
"hide": [],
"props": [
{"type": "scene", "shapes": [
{"kind": "line", "pts": [[124, 126], [158, 124]], "w": 9},
@@ -18,18 +17,24 @@
"frames": [
{
"hold": 0.4, "tween": 0.9,
"root": [140, 118],
"spine": [100, 96], "neck": 80, "gaze": -10,
"arm_r": [-40, -15], "arm_l": [-40, -15],
"leg_r": [-18, -8], "leg_l": [-18, -8],
"root": {"pos": [140, 118], "pitch": -10},
"spine": [0, 4],
"neck": 16,
"shoulder_r": 44, "elbow_r": 25,
"shoulder_l": 44, "elbow_l": 25,
"hip_r": 62, "knee_r": -10, "ankle_r": 12,
"hip_l": 62, "knee_l": -10, "ankle_l": 12,
"pins": {"hand_r": [166, 74], "hand_l": [170, 76], "foot_r": [212, 148], "foot_l": [216, 150]}
},
{
"hold": 0.4, "tween": 1.2,
"root": [140, 118],
"spine": [100, 96], "neck": 80, "gaze": -10,
"arm_r": [-40, -15], "arm_l": [-40, -15],
"leg_r": [-14, 4], "leg_l": [-14, 4],
"root": {"pos": [140, 118], "pitch": -10},
"spine": [0, 4],
"neck": 16,
"shoulder_r": 44, "elbow_r": 25,
"shoulder_l": 44, "elbow_l": 25,
"hip_r": 66, "knee_r": -18, "ankle_r": -18,
"hip_l": 66, "knee_l": -18, "ankle_l": -18,
"pins": {"hand_r": [166, 74], "hand_l": [170, 76], "foot_r": [212, 139], "foot_l": [216, 141]}
}
]
@@ -5,19 +5,25 @@
"frames": [
{
"hold": 0.8, "tween": 0.9,
"root": [190, 106],
"spine": [188, 155], "neck": 185, "gaze": 164,
"arm_r": [-90, -90], "arm_l": [-90, -90],
"leg_r": [-83, 0], "leg_l": [-83, 0],
"pins": {"hand_r": [105, 152], "hand_l": [111, 154]}
"root": {"pos": [190, 106], "yaw": 180, "pitch": 98},
"spine": [0, -33],
"neck": 30, "head": -111,
"shoulder_r": 65, "elbow_r": 0,
"shoulder_l": 65, "elbow_l": 0,
"hip_r": 91, "knee_r": 83, "ankle_r": -55,
"hip_l": 91, "knee_l": 83, "ankle_l": -55,
"pins": {"hand_l": [105, 152], "hand_r": [111, 154]}
},
{
"hold": 0.8, "tween": 0.9,
"root": [190, 106],
"spine": [155, 192], "neck": 215, "gaze": 225,
"arm_r": [-90, -90], "arm_l": [-90, -90],
"leg_r": [-83, 0], "leg_l": [-83, 0],
"pins": {"hand_r": [105, 152], "hand_l": [111, 154]}
"root": {"pos": [190, 106], "yaw": 180, "pitch": 65},
"spine": [0, 37],
"neck": 23, "head": -80,
"shoulder_r": 102, "elbow_r": 0,
"shoulder_l": 102, "elbow_l": 0,
"hip_r": 58, "knee_r": 83, "ankle_r": -55,
"hip_l": 58, "knee_l": 83, "ankle_l": -55,
"pins": {"hand_l": [105, 152], "hand_r": [111, 154]}
}
]
}
@@ -2,7 +2,6 @@
"name": "Chest Press",
"primary": 2,
"working": ["arm_r", "arm_l"],
"hide": [],
"props": [
{"type": "scene", "shapes": [
{"kind": "line", "pts": [[114, 132], [86, 40]], "w": 8},
@@ -15,18 +14,24 @@
"frames": [
{
"hold": 0.4, "tween": 1.1,
"root": [116, 122],
"spine": [104, 100], "neck": 84, "gaze": 5,
"arm_r": [-100, 40], "arm_l": [-100, 40],
"leg_r": [-22, -72], "leg_l": [-22, -72],
"root": {"pos": [116, 122], "pitch": -14},
"spine": [0, 4],
"neck": 16, "head": -11,
"shoulder_r": -20, "elbow_r": 140,
"shoulder_l": -20, "elbow_l": 140,
"hip_r": 54, "knee_r": 50,
"hip_l": 54, "knee_l": 50,
"pins": {"foot_r": [158, 151], "foot_l": [162, 152]}
},
{
"hold": 0.4, "tween": 1.1,
"root": [116, 122],
"spine": [104, 100], "neck": 84, "gaze": 5,
"arm_r": [-6, -14], "arm_l": [-6, -14],
"leg_r": [-22, -72], "leg_l": [-22, -72],
"root": {"pos": [116, 122], "pitch": -14},
"spine": [0, 4],
"neck": 16, "head": -11,
"shoulder_r": 74, "elbow_r": -8,
"shoulder_l": 74, "elbow_l": -8,
"hip_r": 54, "knee_r": 50,
"hip_l": 54, "knee_l": 50,
"pins": {"foot_r": [158, 151], "foot_l": [162, 152]}
}
]
@@ -5,31 +5,43 @@
"frames": [
{
"hold": 0.5, "tween": 0.8,
"root": [185, 148],
"spine": [180, 180], "neck": 168, "gaze": 90,
"arm_r": [90, 90], "arm_l": [90, 90],
"leg_r": [64, -10], "leg_l": [64, -10]
"root": {"pos": [185, 148], "pitch": -90},
"spine": [0, 0],
"neck": 12, "head": -12,
"shoulder_r": 90, "elbow_r": 0,
"shoulder_l": 90, "elbow_l": 0,
"hip_r": 64, "knee_r": 74,
"hip_l": 64, "knee_l": 74
},
{
"hold": 0.9, "tween": 0.8,
"root": [185, 148],
"spine": [180, 180], "neck": 168, "gaze": 90,
"arm_r": [135, 135], "arm_l": [90, 90],
"leg_r": [64, -10], "leg_l": [16, 16]
"root": {"pos": [185, 148], "pitch": -90},
"spine": [0, 0],
"neck": 12, "head": -12,
"shoulder_r": 135, "elbow_r": 0,
"shoulder_l": 90, "elbow_l": 0,
"hip_r": 64, "knee_r": 74,
"hip_l": 16, "knee_l": 0
},
{
"hold": 0.5, "tween": 0.8,
"root": [185, 148],
"spine": [180, 180], "neck": 168, "gaze": 90,
"arm_r": [90, 90], "arm_l": [90, 90],
"leg_r": [64, -10], "leg_l": [64, -10]
"root": {"pos": [185, 148], "pitch": -90},
"spine": [0, 0],
"neck": 12, "head": -12,
"shoulder_r": 90, "elbow_r": 0,
"shoulder_l": 90, "elbow_l": 0,
"hip_r": 64, "knee_r": 74,
"hip_l": 64, "knee_l": 74
},
{
"hold": 0.9, "tween": 0.8,
"root": [185, 148],
"spine": [180, 180], "neck": 168, "gaze": 90,
"arm_r": [90, 90], "arm_l": [135, 135],
"leg_r": [16, 16], "leg_l": [64, -10]
"root": {"pos": [185, 148], "pitch": -90},
"spine": [0, 0],
"neck": 12, "head": -12,
"shoulder_r": 90, "elbow_r": 0,
"shoulder_l": 135, "elbow_l": 0,
"hip_r": 16, "knee_r": 0,
"hip_l": 64, "knee_l": 74
}
]
}
@@ -6,17 +6,21 @@
"frames": [
{
"hold": 0.4, "tween": 0.8,
"root": [185, 148],
"spine": [180, 180], "neck": 168, "gaze": 90,
"arm_r": [180, 180],
"leg_r": [0, 0], "leg_l": [0, 0]
"root": {"pos": [185, 148], "pitch": -90},
"spine": [0, 0],
"neck": 12, "head": -12,
"shoulder_r": 180, "elbow_r": 0,
"hip_r": 0, "knee_r": 0,
"hip_l": 0, "knee_l": 0
},
{
"hold": 1.8, "tween": 0.8,
"root": [185, 148],
"spine": [174, 160], "neck": 140, "gaze": 50,
"arm_r": [155, 155],
"leg_r": [12, 12], "leg_l": [12, 12]
"root": {"pos": [185, 148], "pitch": -84},
"spine": [0, 14],
"neck": 20,
"shoulder_r": 175, "elbow_r": 0,
"hip_r": 18, "knee_r": 0,
"hip_l": 18, "knee_l": 0
}
]
}
@@ -2,7 +2,6 @@
"name": "Lat Pull Down",
"primary": 2,
"working": ["arm_r", "arm_l"],
"hide": [],
"props": [
{"type": "scene", "shapes": [
{"kind": "line", "pts": [[126, 130], [162, 130]], "w": 8},
@@ -15,21 +14,25 @@
"frames": [
{
"hold": 0.4, "tween": 1.0,
"root": [150, 122],
"spine": [93, 90], "neck": 85, "gaze": 55,
"arm_r": [35, 35], "arm_l": [35, 35],
"leg_r": [-12, -80], "leg_l": [-12, -80],
"pins": {"hand_r": [194, 1], "hand_l": [198, 3],
"foot_r": [193, 150], "foot_l": [197, 151]}
"root": {"pos": [150, 122], "pitch": -3},
"spine": [0, 3],
"neck": 5, "head": -60,
"shoulder_r": 125, "elbow_r": 0,
"shoulder_l": 125, "elbow_l": 0,
"hip_r": 75, "knee_r": 68,
"hip_l": 75, "knee_l": 68,
"pins": {"hand_r": [194, 1], "hand_l": [198, 3], "foot_r": [193, 150], "foot_l": [197, 151]}
},
{
"hold": 0.4, "tween": 1.2,
"root": [150, 122],
"spine": [93, 90], "neck": 85, "gaze": 30,
"arm_r": [-38, 38], "arm_l": [-38, 38],
"leg_r": [-12, -80], "leg_l": [-12, -80],
"pins": {"hand_r": [194, 35], "hand_l": [198, 37],
"foot_r": [193, 150], "foot_l": [197, 151]}
"root": {"pos": [150, 122], "pitch": -3},
"spine": [0, 3],
"neck": 5, "head": -35,
"shoulder_r": 52, "elbow_r": 76,
"shoulder_l": 52, "elbow_l": 76,
"hip_r": 75, "knee_r": 68,
"hip_l": 75, "knee_l": 68,
"pins": {"hand_r": [194, 35], "hand_l": [198, 37], "foot_r": [193, 150], "foot_l": [197, 151]}
}
]
}
@@ -2,7 +2,6 @@
"name": "Leg Curl",
"primary": 2,
"working": ["leg_r", "leg_l"],
"hide": [],
"props": [
{"type": "scene", "shapes": [
{"kind": "line", "pts": [[110, 122], [86, 48]], "w": 9},
@@ -18,17 +17,23 @@
"frames": [
{
"hold": 0.4, "tween": 1.0,
"root": [118, 116],
"spine": [110, 106], "neck": 74, "gaze": -20,
"arm_r": [-75, -60], "arm_l": [-75, -60],
"leg_r": [10, 4], "leg_l": [10, 4]
"root": {"pos": [118, 116], "pitch": -20},
"spine": [0, 4],
"neck": 32, "head": 4,
"shoulder_r": -1, "elbow_r": 15,
"shoulder_l": -1, "elbow_l": 15,
"hip_r": 80, "knee_r": 6,
"hip_l": 80, "knee_l": 6
},
{
"hold": 0.4, "tween": 1.2,
"root": [118, 116],
"spine": [110, 106], "neck": 74, "gaze": -20,
"arm_r": [-75, -60], "arm_l": [-75, -60],
"leg_r": [10, -95], "leg_l": [10, -95]
"root": {"pos": [118, 116], "pitch": -20},
"spine": [0, 4],
"neck": 32, "head": 4,
"shoulder_r": -1, "elbow_r": 15,
"shoulder_l": -1, "elbow_l": 15,
"hip_r": 80, "knee_r": 105,
"hip_l": 80, "knee_l": 105
}
]
}
@@ -2,7 +2,6 @@
"name": "Leg Extension",
"primary": 2,
"working": ["leg_r", "leg_l"],
"hide": [],
"props": [
{"type": "scene", "shapes": [
{"kind": "line", "pts": [[110, 122], [86, 48]], "w": 9},
@@ -17,17 +16,23 @@
"frames": [
{
"hold": 0.4, "tween": 1.0,
"root": [118, 116],
"spine": [110, 106], "neck": 74, "gaze": -20,
"arm_r": [-75, -60], "arm_l": [-75, -60],
"leg_r": [10, -83], "leg_l": [10, -83]
"root": {"pos": [118, 116], "pitch": -20},
"spine": [0, 4],
"neck": 32, "head": 4,
"shoulder_r": -1, "elbow_r": 15,
"shoulder_l": -1, "elbow_l": 15,
"hip_r": 80, "knee_r": 93,
"hip_l": 80, "knee_l": 93
},
{
"hold": 0.4, "tween": 1.2,
"root": [118, 116],
"spine": [110, 106], "neck": 74, "gaze": -20,
"arm_r": [-75, -60], "arm_l": [-75, -60],
"leg_r": [10, 4], "leg_l": [10, 4]
"root": {"pos": [118, 116], "pitch": -20},
"spine": [0, 4],
"neck": 32, "head": 4,
"shoulder_r": -1, "elbow_r": 15,
"shoulder_l": -1, "elbow_l": 15,
"hip_r": 80, "knee_r": 6,
"hip_l": 80, "knee_l": 6
}
]
}
@@ -2,7 +2,6 @@
"name": "Leg Press",
"primary": 2,
"working": ["leg_r", "leg_l"],
"hide": [],
"props": [
{"type": "scene", "shapes": [
{"kind": "line", "pts": [[134, 123], [96, 36]], "w": 9},
@@ -17,18 +16,24 @@
"frames": [
{
"hold": 0.4, "tween": 1.0,
"root": [140, 116],
"spine": [116, 112], "neck": 75, "gaze": -15,
"arm_r": [-75, -20], "arm_l": [-75, -20],
"leg_r": [40, -58], "leg_l": [40, -58],
"root": {"pos": [140, 116], "pitch": -26},
"spine": [0, 4],
"neck": 37,
"shoulder_r": -7, "elbow_r": 55,
"shoulder_l": -7, "elbow_l": 55,
"hip_r": 104, "knee_r": 98,
"hip_l": 104, "knee_l": 98,
"pins": {"foot_r": [185, 102], "foot_l": [189, 104]}
},
{
"hold": 0.4, "tween": 1.2,
"root": [140, 116],
"spine": [116, 112], "neck": 75, "gaze": -15,
"arm_r": [-75, -20], "arm_l": [-75, -20],
"leg_r": [20, -5], "leg_l": [20, -5],
"root": {"pos": [140, 116], "pitch": -26},
"spine": [0, 4],
"neck": 37,
"shoulder_r": -7, "elbow_r": 55,
"shoulder_l": -7, "elbow_l": 55,
"hip_r": 84, "knee_r": 25,
"hip_l": 84, "knee_l": 25,
"pins": {"foot_r": [220, 101], "foot_l": [224, 103]}
}
]
@@ -6,17 +6,21 @@
"frames": [
{
"hold": 0.5, "tween": 1.4,
"root": [185, 148],
"spine": [180, 180], "neck": 168, "gaze": 90,
"arm_l": [-2, -2],
"leg_r": [60, 60], "leg_l": [60, 60]
"root": {"pos": [185, 148], "pitch": -90},
"spine": [0, 0],
"neck": 12, "head": -12,
"shoulder_l": -2, "elbow_l": 0,
"hip_r": 60, "knee_r": 0,
"hip_l": 60, "knee_l": 0
},
{
"hold": 0.3, "tween": 0.6,
"root": [185, 148],
"spine": [180, 180], "neck": 168, "gaze": 90,
"arm_l": [-2, -2],
"leg_r": [8, 8], "leg_l": [8, 8]
"root": {"pos": [185, 148], "pitch": -90},
"spine": [0, 0],
"neck": 12, "head": -12,
"shoulder_l": -2, "elbow_l": 0,
"hip_r": 8, "knee_r": 0,
"hip_l": 8, "knee_l": 0
}
]
}
@@ -5,17 +5,23 @@
"frames": [
{
"hold": 0.4, "tween": 0.7,
"root": [172, 114],
"spine": [185, 185], "neck": 185, "gaze": 210,
"arm_r": [-90, 180], "arm_l": [-90, 180],
"leg_r": [-55, 0], "leg_l": [-55, 0]
"root": {"pos": [172, 114], "yaw": 180, "pitch": 95},
"spine": [0, 0],
"neck": 0, "head": -65,
"shoulder_r": 95, "elbow_r": 90,
"shoulder_l": 95, "elbow_l": 90,
"hip_r": 60, "knee_r": 55,
"hip_l": 60, "knee_l": 55
},
{
"hold": 1.8, "tween": 0.7,
"root": [168, 137],
"spine": [170, 170], "neck": 170, "gaze": 210,
"arm_r": [-90, 180], "arm_l": [-90, 180],
"leg_r": [-10, -10], "leg_l": [-10, -10]
"root": {"pos": [168, 137], "yaw": 180, "pitch": 80},
"spine": [0, 0],
"neck": 0, "head": -50,
"shoulder_r": 80, "elbow_r": 90,
"shoulder_l": 80, "elbow_l": 90,
"hip_r": 0, "knee_r": 0,
"hip_l": 0, "knee_l": 0
}
]
}
@@ -6,17 +6,21 @@
"frames": [
{
"hold": 0.5, "tween": 0.7,
"root": [172, 148],
"spine": [180, 180], "neck": 168, "gaze": 90,
"arm_l": [-2, -2],
"leg_r": [100, -20], "leg_l": [100, -20]
"root": {"pos": [172, 148], "pitch": -90},
"spine": [0, 0],
"neck": 12, "head": -12,
"shoulder_l": -2, "elbow_l": 0,
"hip_r": 100, "knee_r": 120,
"hip_l": 100, "knee_l": 120
},
{
"hold": 0.8, "tween": 0.9,
"root": [166, 136],
"spine": [195, 175], "neck": 182, "gaze": 90,
"arm_l": [-2, -2],
"leg_r": [115, -10], "leg_l": [115, -10]
"root": {"pos": [166, 136], "pitch": -105},
"spine": [0, 20],
"neck": -7, "head": 2,
"shoulder_l": 3, "elbow_l": 0,
"hip_r": 100, "knee_r": 125,
"hip_l": 100, "knee_l": 125
}
]
}
@@ -1,8 +1,8 @@
{
"name": "Rotary",
"primary": 1,
"camera": {"yaw": 90},
"working": ["spine"],
"hide": [],
"props": [
{"type": "scene", "shapes": [
{"kind": "line", "pts": [[138, 130], [182, 130]], "w": 8},
@@ -14,19 +14,23 @@
"frames": [
{
"hold": 0.4, "tween": 1.0,
"root": [160, 122],
"spine": [104, 109], "neck": 109,
"arm_r": [-50, -85], "arm_l": [-55, -90],
"leg_r": [-62, -82], "leg_l": [-118, -98],
"pins": {"hand_r": [112, 72], "hand_l": [118, 74], "foot_r": [190, 150], "foot_l": [130, 150]}
"root": {"pos": [160, 122]},
"spine": [{"rotation": -28}, {"rotation": -22}],
"neck": {"rotation": 18},
"shoulder_r": 70, "elbow_r": 10,
"shoulder_l": 70, "elbow_l": 10,
"hip_r": {"flexion": 82, "abduction": 16}, "knee_r": 70,
"hip_l": {"flexion": 82, "abduction": 16}, "knee_l": 70
},
{
"hold": 0.4, "tween": 1.0,
"root": [160, 122],
"spine": [76, 71], "neck": 71,
"arm_r": [-125, -95], "arm_l": [-130, -90],
"leg_r": [-62, -82], "leg_l": [-118, -98],
"pins": {"hand_r": [208, 72], "hand_l": [202, 74], "foot_r": [190, 150], "foot_l": [130, 150]}
"root": {"pos": [160, 122]},
"spine": [{"rotation": 28}, {"rotation": 22}],
"neck": {"rotation": -18},
"shoulder_r": 70, "elbow_r": 10,
"shoulder_l": 70, "elbow_l": 10,
"hip_r": {"flexion": 82, "abduction": 16}, "knee_r": 70,
"hip_l": {"flexion": 82, "abduction": 16}, "knee_l": 70
}
]
}
@@ -2,7 +2,6 @@
"name": "Seated Row",
"primary": 2,
"working": ["arm_r", "arm_l"],
"hide": [],
"props": [
{"type": "scene", "shapes": [
{"kind": "line", "pts": [[122, 132], [156, 132]], "w": 8},
@@ -15,21 +14,25 @@
"frames": [
{
"hold": 0.4, "tween": 1.0,
"root": [140, 122],
"spine": [85, 82], "neck": 80, "gaze": 5,
"arm_r": [-40, -8], "arm_l": [-40, -8],
"leg_r": [-8, -75], "leg_l": [-8, -75],
"pins": {"hand_r": [200, 62], "hand_l": [204, 64],
"foot_r": [188, 148], "foot_l": [192, 149]}
"root": {"pos": [140, 122], "pitch": 5},
"spine": [0, 3],
"neck": 2, "head": -15,
"shoulder_r": 58, "elbow_r": 32,
"shoulder_l": 58, "elbow_l": 32,
"hip_r": 87, "knee_r": 67,
"hip_l": 87, "knee_l": 67,
"pins": {"hand_r": [200, 62], "hand_l": [204, 64], "foot_r": [188, 148], "foot_l": [192, 149]}
},
{
"hold": 0.4, "tween": 1.2,
"root": [140, 122],
"spine": [85, 82], "neck": 80, "gaze": 5,
"arm_r": [-120, -35], "arm_l": [-120, -35],
"leg_r": [-8, -75], "leg_l": [-8, -75],
"pins": {"hand_r": [158, 72], "hand_l": [162, 74],
"foot_r": [188, 148], "foot_l": [192, 149]}
"root": {"pos": [140, 122], "pitch": 5},
"spine": [0, 3],
"neck": 2, "head": -15,
"shoulder_r": -22, "elbow_r": 85,
"shoulder_l": -22, "elbow_l": 85,
"hip_r": 87, "knee_r": 67,
"hip_l": 87, "knee_l": 67,
"pins": {"hand_r": [158, 72], "hand_l": [162, 74], "foot_r": [188, 148], "foot_l": [192, 149]}
}
]
}
@@ -2,7 +2,6 @@
"name": "Shoulder Press",
"primary": 2,
"working": ["arm_r", "arm_l"],
"hide": [],
"props": [
{"type": "scene", "shapes": [
{"kind": "line", "pts": [[116, 140], [88, 50]], "w": 8},
@@ -15,18 +14,24 @@
"frames": [
{
"hold": 0.4, "tween": 1.1,
"root": [120, 130],
"spine": [110, 104], "neck": 80, "gaze": 8,
"arm_r": [-60, 90], "arm_l": [-60, 90],
"leg_r": [-25, -72], "leg_l": [-25, -72],
"root": {"pos": [120, 130], "pitch": -20},
"spine": [0, 6],
"neck": 24, "head": -18,
"shoulder_r": 16, "elbow_r": 150,
"shoulder_l": 16, "elbow_l": 150,
"hip_r": 45, "knee_r": 47,
"hip_l": 45, "knee_l": 47,
"pins": {"foot_r": [164, 151], "foot_l": [168, 152]}
},
{
"hold": 0.4, "tween": 1.1,
"root": [120, 130],
"spine": [110, 104], "neck": 80, "gaze": 8,
"arm_r": [54, 36], "arm_l": [54, 36],
"leg_r": [-25, -72], "leg_l": [-25, -72],
"root": {"pos": [120, 130], "pitch": -20},
"spine": [0, 6],
"neck": 24, "head": -18,
"shoulder_r": 130, "elbow_r": -18,
"shoulder_l": 130, "elbow_l": -18,
"hip_r": 45, "knee_r": 47,
"hip_l": 45, "knee_l": 47,
"pins": {"foot_r": [164, 151], "foot_l": [168, 152]}
}
]
@@ -5,19 +5,25 @@
"frames": [
{
"hold": 0.4, "tween": 0.8,
"root": [174, 150],
"spine": [162, 162], "neck": 162, "gaze": 175,
"arm_r": [-90, 180], "arm_l": [-20, -15],
"leg_r": [-1, -1], "leg_l": [-1, -1],
"pins": {"hand_r": [60, 152]}
"root": {"pos": [174, 150], "yaw": 180, "pitch": 72},
"spine": [0, 0],
"neck": 0, "head": -77,
"shoulder_r": 2, "elbow_r": -5,
"shoulder_l": 72, "elbow_l": 90,
"hip_r": -17, "knee_r": 0,
"hip_l": -17, "knee_l": 0,
"pins": {"hand_l": [60, 152]}
},
{
"hold": 1.8, "tween": 0.8,
"root": [174, 137],
"spine": [170, 170], "neck": 170, "gaze": 180,
"arm_r": [-90, 180], "arm_l": [80, 80],
"leg_r": [-10, -10], "leg_l": [-10, -10],
"pins": {"hand_r": [60, 152]}
"root": {"pos": [174, 137], "yaw": 180, "pitch": 80},
"spine": [0, 0],
"neck": 0, "head": -80,
"shoulder_r": -90, "elbow_r": 0,
"shoulder_l": 80, "elbow_l": 90,
"hip_r": 0, "knee_r": 0,
"hip_l": 0, "knee_l": 0,
"pins": {"hand_l": [60, 152]}
}
]
}
@@ -2,7 +2,6 @@
"name": "Tricep Press",
"primary": 2,
"working": ["arm_r", "arm_l"],
"hide": [],
"props": [
{"type": "scene", "shapes": [
{"kind": "line", "pts": [[116, 134], [92, 42]], "w": 8},
@@ -15,21 +14,25 @@
"frames": [
{
"hold": 0.4, "tween": 1.1,
"root": [118, 124],
"spine": [100, 98], "neck": 86, "gaze": 6,
"arm_r": [-108, 12], "arm_l": [-108, 12],
"leg_r": [-24, -74], "leg_l": [-24, -74],
"pins": {"hand_r": [124, 62], "hand_l": [128, 64],
"foot_r": [156, 151], "foot_l": [160, 152]}
"root": {"pos": [118, 124], "pitch": -10},
"spine": [0, 2],
"neck": 12, "head": -10,
"shoulder_r": -26, "elbow_r": 120,
"shoulder_l": -26, "elbow_l": 120,
"hip_r": 56, "knee_r": 50,
"hip_l": 56, "knee_l": 50,
"pins": {"hand_r": [124, 62], "hand_l": [128, 64], "foot_r": [156, 151], "foot_l": [160, 152]}
},
{
"hold": 0.4, "tween": 1.1,
"root": [118, 124],
"spine": [100, 98], "neck": 86, "gaze": 6,
"arm_r": [-81, -61], "arm_l": [-81, -61],
"leg_r": [-24, -74], "leg_l": [-24, -74],
"pins": {"hand_r": [124, 96], "hand_l": [128, 98],
"foot_r": [156, 151], "foot_l": [160, 152]}
"root": {"pos": [118, 124], "pitch": -10},
"spine": [0, 2],
"neck": 12, "head": -10,
"shoulder_r": 1, "elbow_r": 20,
"shoulder_l": 1, "elbow_l": 20,
"hip_r": 56, "knee_r": 50,
"hip_l": 56, "knee_l": 50,
"pins": {"hand_r": [124, 96], "hand_l": [128, 98], "foot_r": [156, 151], "foot_l": [160, 152]}
}
]
}
@@ -1,35 +0,0 @@
{
"neutral": {
"headR": 10,
"neck": 20,
"spine1": 43,
"spine2": 42,
"upperArm": 30,
"foreArm": 30,
"thigh": 46,
"shin": 40,
"leftOffset": [6, 2]
},
"frontal": {
"headR": 10,
"neck": 20,
"spine1": 43,
"spine2": 42,
"upperArm": 30,
"foreArm": 30,
"thigh": 22,
"shin": 26,
"leftOffset": [6, 2]
},
"female": {
"headR": 9,
"neck": 19,
"spine1": 40,
"spine2": 39,
"upperArm": 27,
"foreArm": 27,
"thigh": 47,
"shin": 41,
"leftOffset": [6, 2]
}
}
@@ -0,0 +1,56 @@
{
"profiles": {
"neutral": {
"headR": 10,
"neck": 20,
"spine1": 43,
"spine2": 42,
"upperArm": 30,
"foreArm": 30,
"thigh": 46,
"shin": 40,
"foot": 11,
"shoulderHalf": 7,
"hipHalf": 5,
"farOffset": [6, 2]
},
"female": {
"headR": 9,
"neck": 19,
"spine1": 40,
"spine2": 39,
"upperArm": 27,
"foreArm": 27,
"thigh": 47,
"shin": 41,
"foot": 10,
"shoulderHalf": 5.5,
"hipHalf": 6.5,
"farOffset": [6, 2]
},
"male": {
"headR": 10,
"neck": 20,
"spine1": 44,
"spine2": 43,
"upperArm": 31,
"foreArm": 31,
"thigh": 47,
"shin": 41,
"foot": 11.5,
"shoulderHalf": 9,
"hipHalf": 4.5,
"farOffset": [6, 2]
}
},
"joints": {
"spine": {"flexion": [-40, 55], "lateral": [-35, 35], "rotation": [-55, 55]},
"neck": {"flexion": [-55, 55], "rotation": [-80, 80]},
"head": {"flexion": [-120, 120]},
"shoulder": {"flexion": [-70, 195], "abduction": [-40, 185], "rotation": [-95, 95]},
"elbow": {"flexion": [-10, 155]},
"hip": {"flexion": [-30, 130], "abduction": [-40, 55], "rotation": [-50, 50]},
"knee": {"flexion": [-10, 150]},
"ankle": {"flexion": [-60, 30]}
}
}