diff --git a/CHANGELOG.md b/CHANGELOG.md index a7db624..811d183 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ **July 2026** +The stick figure now has broader, more human proportions with a visible shoulder girdle and pelvis. + +The Leg Extension and Leg Curl form guides now press against a roller pad at the ankle, like the real machines. + Bodyweight form guides now slowly circle around the figure while it moves, showing the exercise from every side. The form-guide figures now have feet — heels rise on calf raises, toes point through leg lifts, and kneeling feet rest naturally. diff --git a/Exercise Library/Abdominal/frames/frame-1.svg b/Exercise Library/Abdominal/frames/frame-1.svg index 3328638..05a8ef7 100644 --- a/Exercise Library/Abdominal/frames/frame-1.svg +++ b/Exercise Library/Abdominal/frames/frame-1.svg @@ -8,9 +8,11 @@ + + - + diff --git a/Exercise Library/Abdominal/frames/frame-2.svg b/Exercise Library/Abdominal/frames/frame-2.svg index 49d9709..6263075 100644 --- a/Exercise Library/Abdominal/frames/frame-2.svg +++ b/Exercise Library/Abdominal/frames/frame-2.svg @@ -8,9 +8,11 @@ + + - + diff --git a/Exercise Library/Abdominal/preview.gif b/Exercise Library/Abdominal/preview.gif index 30335de..2ae1c6c 100644 Binary files a/Exercise Library/Abdominal/preview.gif and b/Exercise Library/Abdominal/preview.gif differ diff --git a/Exercise Library/Abdominal/visual.svg b/Exercise Library/Abdominal/visual.svg index 49d9709..6263075 100644 --- a/Exercise Library/Abdominal/visual.svg +++ b/Exercise Library/Abdominal/visual.svg @@ -8,9 +8,11 @@ + + - + diff --git a/Exercise Library/Abductor/frames/frame-1.svg b/Exercise Library/Abductor/frames/frame-1.svg index 4a1f9ec..e58b216 100644 --- a/Exercise Library/Abductor/frames/frame-1.svg +++ b/Exercise Library/Abductor/frames/frame-1.svg @@ -4,13 +4,15 @@ + + - - - - - - + + + + + + diff --git a/Exercise Library/Abductor/frames/frame-2.svg b/Exercise Library/Abductor/frames/frame-2.svg index 3c6dfbf..da2b2be 100644 --- a/Exercise Library/Abductor/frames/frame-2.svg +++ b/Exercise Library/Abductor/frames/frame-2.svg @@ -4,13 +4,15 @@ + + - - - - - - + + + + + + diff --git a/Exercise Library/Abductor/preview.gif b/Exercise Library/Abductor/preview.gif index 8dcce44..a3e186c 100644 Binary files a/Exercise Library/Abductor/preview.gif and b/Exercise Library/Abductor/preview.gif differ diff --git a/Exercise Library/Abductor/visual.svg b/Exercise Library/Abductor/visual.svg index 3c6dfbf..da2b2be 100644 --- a/Exercise Library/Abductor/visual.svg +++ b/Exercise Library/Abductor/visual.svg @@ -4,13 +4,15 @@ + + - - - - - - + + + + + + diff --git a/Exercise Library/Adductor/frames/frame-1.svg b/Exercise Library/Adductor/frames/frame-1.svg index 6ef26d0..ff6a0d0 100644 --- a/Exercise Library/Adductor/frames/frame-1.svg +++ b/Exercise Library/Adductor/frames/frame-1.svg @@ -4,13 +4,15 @@ + + - - - - - - + + + + + + diff --git a/Exercise Library/Adductor/frames/frame-2.svg b/Exercise Library/Adductor/frames/frame-2.svg index faf81a8..cf026d3 100644 --- a/Exercise Library/Adductor/frames/frame-2.svg +++ b/Exercise Library/Adductor/frames/frame-2.svg @@ -4,13 +4,15 @@ + + - - - - - - + + + + + + diff --git a/Exercise Library/Adductor/preview.gif b/Exercise Library/Adductor/preview.gif index abe9a10..ab72d06 100644 Binary files a/Exercise Library/Adductor/preview.gif and b/Exercise Library/Adductor/preview.gif differ diff --git a/Exercise Library/Adductor/visual.svg b/Exercise Library/Adductor/visual.svg index faf81a8..cf026d3 100644 --- a/Exercise Library/Adductor/visual.svg +++ b/Exercise Library/Adductor/visual.svg @@ -4,13 +4,15 @@ + + - - - - - - + + + + + + diff --git a/Exercise Library/Arm Curl/frames/frame-1.svg b/Exercise Library/Arm Curl/frames/frame-1.svg index e1bfc2b..97c7862 100644 --- a/Exercise Library/Arm Curl/frames/frame-1.svg +++ b/Exercise Library/Arm Curl/frames/frame-1.svg @@ -6,9 +6,11 @@ + + - + diff --git a/Exercise Library/Arm Curl/frames/frame-2.svg b/Exercise Library/Arm Curl/frames/frame-2.svg index 985972f..4236f77 100644 --- a/Exercise Library/Arm Curl/frames/frame-2.svg +++ b/Exercise Library/Arm Curl/frames/frame-2.svg @@ -6,9 +6,11 @@ + + - + diff --git a/Exercise Library/Arm Curl/preview.gif b/Exercise Library/Arm Curl/preview.gif index 4ac8d39..112945d 100644 Binary files a/Exercise Library/Arm Curl/preview.gif and b/Exercise Library/Arm Curl/preview.gif differ diff --git a/Exercise Library/Arm Curl/visual.svg b/Exercise Library/Arm Curl/visual.svg index 985972f..4236f77 100644 --- a/Exercise Library/Arm Curl/visual.svg +++ b/Exercise Library/Arm Curl/visual.svg @@ -6,9 +6,11 @@ + + - + diff --git a/Exercise Library/Bird Dog/frames/frame-1.svg b/Exercise Library/Bird Dog/frames/frame-1.svg index b6772ea..a665659 100644 --- a/Exercise Library/Bird Dog/frames/frame-1.svg +++ b/Exercise Library/Bird Dog/frames/frame-1.svg @@ -3,9 +3,11 @@ + + - + diff --git a/Exercise Library/Bird Dog/frames/frame-2.svg b/Exercise Library/Bird Dog/frames/frame-2.svg index 376ad2c..a651643 100644 --- a/Exercise Library/Bird Dog/frames/frame-2.svg +++ b/Exercise Library/Bird Dog/frames/frame-2.svg @@ -3,9 +3,11 @@ + + - + diff --git a/Exercise Library/Bird Dog/frames/frame-3.svg b/Exercise Library/Bird Dog/frames/frame-3.svg index b6772ea..a665659 100644 --- a/Exercise Library/Bird Dog/frames/frame-3.svg +++ b/Exercise Library/Bird Dog/frames/frame-3.svg @@ -3,9 +3,11 @@ + + - + diff --git a/Exercise Library/Bird Dog/frames/frame-4.svg b/Exercise Library/Bird Dog/frames/frame-4.svg index 8a3f9a4..451db2b 100644 --- a/Exercise Library/Bird Dog/frames/frame-4.svg +++ b/Exercise Library/Bird Dog/frames/frame-4.svg @@ -3,9 +3,11 @@ + + - + diff --git a/Exercise Library/Bird Dog/preview.gif b/Exercise Library/Bird Dog/preview.gif index 98ffc7d..61faee3 100644 Binary files a/Exercise Library/Bird Dog/preview.gif and b/Exercise Library/Bird Dog/preview.gif differ diff --git a/Exercise Library/Bird Dog/visual.svg b/Exercise Library/Bird Dog/visual.svg index 376ad2c..a651643 100644 --- a/Exercise Library/Bird Dog/visual.svg +++ b/Exercise Library/Bird Dog/visual.svg @@ -3,9 +3,11 @@ + + - + diff --git a/Exercise Library/Calfs/frames/frame-1.svg b/Exercise Library/Calfs/frames/frame-1.svg index 6e20245..d0d1af7 100644 --- a/Exercise Library/Calfs/frames/frame-1.svg +++ b/Exercise Library/Calfs/frames/frame-1.svg @@ -9,9 +9,11 @@ + + - + diff --git a/Exercise Library/Calfs/frames/frame-2.svg b/Exercise Library/Calfs/frames/frame-2.svg index e3f2a27..a1c0c59 100644 --- a/Exercise Library/Calfs/frames/frame-2.svg +++ b/Exercise Library/Calfs/frames/frame-2.svg @@ -9,9 +9,11 @@ + + - + diff --git a/Exercise Library/Calfs/preview.gif b/Exercise Library/Calfs/preview.gif index d347630..eeb354f 100644 Binary files a/Exercise Library/Calfs/preview.gif and b/Exercise Library/Calfs/preview.gif differ diff --git a/Exercise Library/Calfs/visual.svg b/Exercise Library/Calfs/visual.svg index e3f2a27..a1c0c59 100644 --- a/Exercise Library/Calfs/visual.svg +++ b/Exercise Library/Calfs/visual.svg @@ -9,9 +9,11 @@ + + - + diff --git a/Exercise Library/Cat-Cow/frames/frame-1.svg b/Exercise Library/Cat-Cow/frames/frame-1.svg index 7011f6a..991f939 100644 --- a/Exercise Library/Cat-Cow/frames/frame-1.svg +++ b/Exercise Library/Cat-Cow/frames/frame-1.svg @@ -3,9 +3,11 @@ + + - + diff --git a/Exercise Library/Cat-Cow/frames/frame-2.svg b/Exercise Library/Cat-Cow/frames/frame-2.svg index ec04352..9eeedfb 100644 --- a/Exercise Library/Cat-Cow/frames/frame-2.svg +++ b/Exercise Library/Cat-Cow/frames/frame-2.svg @@ -3,9 +3,11 @@ + + - + diff --git a/Exercise Library/Cat-Cow/preview.gif b/Exercise Library/Cat-Cow/preview.gif index fdb50c9..b4ad78e 100644 Binary files a/Exercise Library/Cat-Cow/preview.gif and b/Exercise Library/Cat-Cow/preview.gif differ diff --git a/Exercise Library/Cat-Cow/visual.svg b/Exercise Library/Cat-Cow/visual.svg index 7011f6a..991f939 100644 --- a/Exercise Library/Cat-Cow/visual.svg +++ b/Exercise Library/Cat-Cow/visual.svg @@ -3,9 +3,11 @@ + + - + diff --git a/Exercise Library/Chest Press/frames/frame-1.svg b/Exercise Library/Chest Press/frames/frame-1.svg index 66db829..393c779 100644 --- a/Exercise Library/Chest Press/frames/frame-1.svg +++ b/Exercise Library/Chest Press/frames/frame-1.svg @@ -7,9 +7,11 @@ + + - + diff --git a/Exercise Library/Chest Press/frames/frame-2.svg b/Exercise Library/Chest Press/frames/frame-2.svg index f1cce65..bd58417 100644 --- a/Exercise Library/Chest Press/frames/frame-2.svg +++ b/Exercise Library/Chest Press/frames/frame-2.svg @@ -7,9 +7,11 @@ + + - + diff --git a/Exercise Library/Chest Press/preview.gif b/Exercise Library/Chest Press/preview.gif index 2fabc73..6d5b473 100644 Binary files a/Exercise Library/Chest Press/preview.gif and b/Exercise Library/Chest Press/preview.gif differ diff --git a/Exercise Library/Chest Press/visual.svg b/Exercise Library/Chest Press/visual.svg index f1cce65..bd58417 100644 --- a/Exercise Library/Chest Press/visual.svg +++ b/Exercise Library/Chest Press/visual.svg @@ -7,9 +7,11 @@ + + - + diff --git a/Exercise Library/Dead Bug/frames/frame-1.svg b/Exercise Library/Dead Bug/frames/frame-1.svg index ab520e8..3be08b6 100644 --- a/Exercise Library/Dead Bug/frames/frame-1.svg +++ b/Exercise Library/Dead Bug/frames/frame-1.svg @@ -3,9 +3,11 @@ + + - + diff --git a/Exercise Library/Dead Bug/frames/frame-2.svg b/Exercise Library/Dead Bug/frames/frame-2.svg index baf45c4..0542d5b 100644 --- a/Exercise Library/Dead Bug/frames/frame-2.svg +++ b/Exercise Library/Dead Bug/frames/frame-2.svg @@ -3,9 +3,11 @@ + + - + diff --git a/Exercise Library/Dead Bug/frames/frame-3.svg b/Exercise Library/Dead Bug/frames/frame-3.svg index ab520e8..3be08b6 100644 --- a/Exercise Library/Dead Bug/frames/frame-3.svg +++ b/Exercise Library/Dead Bug/frames/frame-3.svg @@ -3,9 +3,11 @@ + + - + diff --git a/Exercise Library/Dead Bug/frames/frame-4.svg b/Exercise Library/Dead Bug/frames/frame-4.svg index b43a0ca..9a4e639 100644 --- a/Exercise Library/Dead Bug/frames/frame-4.svg +++ b/Exercise Library/Dead Bug/frames/frame-4.svg @@ -3,9 +3,11 @@ + + - + diff --git a/Exercise Library/Dead Bug/preview.gif b/Exercise Library/Dead Bug/preview.gif index 9bbdc59..29dcf81 100644 Binary files a/Exercise Library/Dead Bug/preview.gif and b/Exercise Library/Dead Bug/preview.gif differ diff --git a/Exercise Library/Dead Bug/visual.svg b/Exercise Library/Dead Bug/visual.svg index baf45c4..0542d5b 100644 --- a/Exercise Library/Dead Bug/visual.svg +++ b/Exercise Library/Dead Bug/visual.svg @@ -3,9 +3,11 @@ + + - + diff --git a/Exercise Library/Hollow Body Hold/frames/frame-1.svg b/Exercise Library/Hollow Body Hold/frames/frame-1.svg index bc2a6ec..8ca322f 100644 --- a/Exercise Library/Hollow Body Hold/frames/frame-1.svg +++ b/Exercise Library/Hollow Body Hold/frames/frame-1.svg @@ -2,9 +2,11 @@ Hollow Body Hold + + - + diff --git a/Exercise Library/Hollow Body Hold/frames/frame-2.svg b/Exercise Library/Hollow Body Hold/frames/frame-2.svg index 02e6bff..258d1da 100644 --- a/Exercise Library/Hollow Body Hold/frames/frame-2.svg +++ b/Exercise Library/Hollow Body Hold/frames/frame-2.svg @@ -2,9 +2,11 @@ Hollow Body Hold + + - + diff --git a/Exercise Library/Hollow Body Hold/preview.gif b/Exercise Library/Hollow Body Hold/preview.gif index a0a9417..df14b76 100644 Binary files a/Exercise Library/Hollow Body Hold/preview.gif and b/Exercise Library/Hollow Body Hold/preview.gif differ diff --git a/Exercise Library/Hollow Body Hold/visual.svg b/Exercise Library/Hollow Body Hold/visual.svg index 02e6bff..258d1da 100644 --- a/Exercise Library/Hollow Body Hold/visual.svg +++ b/Exercise Library/Hollow Body Hold/visual.svg @@ -2,9 +2,11 @@ Hollow Body Hold + + - + diff --git a/Exercise Library/Lat Pull Down/frames/frame-1.svg b/Exercise Library/Lat Pull Down/frames/frame-1.svg index 907f315..18679de 100644 --- a/Exercise Library/Lat Pull Down/frames/frame-1.svg +++ b/Exercise Library/Lat Pull Down/frames/frame-1.svg @@ -7,9 +7,11 @@ + + - + diff --git a/Exercise Library/Lat Pull Down/frames/frame-2.svg b/Exercise Library/Lat Pull Down/frames/frame-2.svg index 7061fe1..ed5c263 100644 --- a/Exercise Library/Lat Pull Down/frames/frame-2.svg +++ b/Exercise Library/Lat Pull Down/frames/frame-2.svg @@ -7,9 +7,11 @@ + + - + diff --git a/Exercise Library/Lat Pull Down/preview.gif b/Exercise Library/Lat Pull Down/preview.gif index 27635f4..9d66537 100644 Binary files a/Exercise Library/Lat Pull Down/preview.gif and b/Exercise Library/Lat Pull Down/preview.gif differ diff --git a/Exercise Library/Lat Pull Down/visual.svg b/Exercise Library/Lat Pull Down/visual.svg index 7061fe1..ed5c263 100644 --- a/Exercise Library/Lat Pull Down/visual.svg +++ b/Exercise Library/Lat Pull Down/visual.svg @@ -7,9 +7,11 @@ + + - + diff --git a/Exercise Library/Leg Curl/frames/frame-1.svg b/Exercise Library/Leg Curl/frames/frame-1.svg index 7581263..bf60000 100644 --- a/Exercise Library/Leg Curl/frames/frame-1.svg +++ b/Exercise Library/Leg Curl/frames/frame-1.svg @@ -10,10 +10,12 @@ + + - - + + diff --git a/Exercise Library/Leg Curl/frames/frame-2.svg b/Exercise Library/Leg Curl/frames/frame-2.svg index e2ba219..3033bad 100644 --- a/Exercise Library/Leg Curl/frames/frame-2.svg +++ b/Exercise Library/Leg Curl/frames/frame-2.svg @@ -10,10 +10,12 @@ + + - - + + diff --git a/Exercise Library/Leg Curl/motion.json b/Exercise Library/Leg Curl/motion.json index 5e24c99..5da1351 100644 --- a/Exercise Library/Leg Curl/motion.json +++ b/Exercise Library/Leg Curl/motion.json @@ -12,7 +12,7 @@ {"kind": "line", "pts": [[104, 150], [166, 150]], "w": 5}, {"kind": "circle", "c": [114, 90], "r": 3.5, "fill": true, "color": "prop"} ]}, - {"type": "pad", "at": ["foot_r", "foot_l"], "halfLen": 9} + {"type": "roller", "at": ["foot_r", "foot_l"], "side": -1, "r": 5, "back": -2} ], "frames": [ { diff --git a/Exercise Library/Leg Curl/preview.gif b/Exercise Library/Leg Curl/preview.gif index a49d75b..25e0acf 100644 Binary files a/Exercise Library/Leg Curl/preview.gif and b/Exercise Library/Leg Curl/preview.gif differ diff --git a/Exercise Library/Leg Curl/visual.svg b/Exercise Library/Leg Curl/visual.svg index e2ba219..3033bad 100644 --- a/Exercise Library/Leg Curl/visual.svg +++ b/Exercise Library/Leg Curl/visual.svg @@ -10,10 +10,12 @@ + + - - + + diff --git a/Exercise Library/Leg Extension/frames/frame-1.svg b/Exercise Library/Leg Extension/frames/frame-1.svg index 7a20cae..8153d82 100644 --- a/Exercise Library/Leg Extension/frames/frame-1.svg +++ b/Exercise Library/Leg Extension/frames/frame-1.svg @@ -9,10 +9,12 @@ + + - - + + diff --git a/Exercise Library/Leg Extension/frames/frame-2.svg b/Exercise Library/Leg Extension/frames/frame-2.svg index 23d0c0b..68aa763 100644 --- a/Exercise Library/Leg Extension/frames/frame-2.svg +++ b/Exercise Library/Leg Extension/frames/frame-2.svg @@ -9,10 +9,12 @@ + + - - + + diff --git a/Exercise Library/Leg Extension/motion.json b/Exercise Library/Leg Extension/motion.json index 79e628c..28eed52 100644 --- a/Exercise Library/Leg Extension/motion.json +++ b/Exercise Library/Leg Extension/motion.json @@ -11,7 +11,7 @@ {"kind": "line", "pts": [[104, 150], [166, 150]], "w": 5}, {"kind": "circle", "c": [114, 90], "r": 3.5, "fill": true, "color": "prop"} ]}, - {"type": "pad", "at": ["foot_r", "foot_l"], "halfLen": 9} + {"type": "roller", "at": ["foot_r", "foot_l"], "side": 1, "r": 5, "back": -2} ], "frames": [ { diff --git a/Exercise Library/Leg Extension/preview.gif b/Exercise Library/Leg Extension/preview.gif index d07a7ab..d600537 100644 Binary files a/Exercise Library/Leg Extension/preview.gif and b/Exercise Library/Leg Extension/preview.gif differ diff --git a/Exercise Library/Leg Extension/visual.svg b/Exercise Library/Leg Extension/visual.svg index 23d0c0b..68aa763 100644 --- a/Exercise Library/Leg Extension/visual.svg +++ b/Exercise Library/Leg Extension/visual.svg @@ -9,10 +9,12 @@ + + - - + + diff --git a/Exercise Library/Leg Press/frames/frame-1.svg b/Exercise Library/Leg Press/frames/frame-1.svg index e69ad09..1137ab4 100644 --- a/Exercise Library/Leg Press/frames/frame-1.svg +++ b/Exercise Library/Leg Press/frames/frame-1.svg @@ -9,9 +9,11 @@ + + - + diff --git a/Exercise Library/Leg Press/frames/frame-2.svg b/Exercise Library/Leg Press/frames/frame-2.svg index 6d041ad..93b4b0a 100644 --- a/Exercise Library/Leg Press/frames/frame-2.svg +++ b/Exercise Library/Leg Press/frames/frame-2.svg @@ -9,9 +9,11 @@ + + - + diff --git a/Exercise Library/Leg Press/preview.gif b/Exercise Library/Leg Press/preview.gif index 67786a4..8ae8bb2 100644 Binary files a/Exercise Library/Leg Press/preview.gif and b/Exercise Library/Leg Press/preview.gif differ diff --git a/Exercise Library/Leg Press/visual.svg b/Exercise Library/Leg Press/visual.svg index 6d041ad..93b4b0a 100644 --- a/Exercise Library/Leg Press/visual.svg +++ b/Exercise Library/Leg Press/visual.svg @@ -9,9 +9,11 @@ + + - + diff --git a/Exercise Library/Leg Raises/frames/frame-1.svg b/Exercise Library/Leg Raises/frames/frame-1.svg index b905672..2dd524c 100644 --- a/Exercise Library/Leg Raises/frames/frame-1.svg +++ b/Exercise Library/Leg Raises/frames/frame-1.svg @@ -3,6 +3,8 @@ + + diff --git a/Exercise Library/Leg Raises/frames/frame-2.svg b/Exercise Library/Leg Raises/frames/frame-2.svg index b3878de..5274a9a 100644 --- a/Exercise Library/Leg Raises/frames/frame-2.svg +++ b/Exercise Library/Leg Raises/frames/frame-2.svg @@ -3,6 +3,8 @@ + + diff --git a/Exercise Library/Leg Raises/preview.gif b/Exercise Library/Leg Raises/preview.gif index 0e9b7b7..5c73425 100644 Binary files a/Exercise Library/Leg Raises/preview.gif and b/Exercise Library/Leg Raises/preview.gif differ diff --git a/Exercise Library/Leg Raises/visual.svg b/Exercise Library/Leg Raises/visual.svg index b905672..2dd524c 100644 --- a/Exercise Library/Leg Raises/visual.svg +++ b/Exercise Library/Leg Raises/visual.svg @@ -3,6 +3,8 @@ + + diff --git a/Exercise Library/Plank/frames/frame-1.svg b/Exercise Library/Plank/frames/frame-1.svg index 915ac30..e71c9e2 100644 --- a/Exercise Library/Plank/frames/frame-1.svg +++ b/Exercise Library/Plank/frames/frame-1.svg @@ -3,9 +3,11 @@ + + - + diff --git a/Exercise Library/Plank/frames/frame-2.svg b/Exercise Library/Plank/frames/frame-2.svg index 444f09f..bb7fb34 100644 --- a/Exercise Library/Plank/frames/frame-2.svg +++ b/Exercise Library/Plank/frames/frame-2.svg @@ -3,9 +3,11 @@ + + - + diff --git a/Exercise Library/Plank/preview.gif b/Exercise Library/Plank/preview.gif index 0e0cb24..476c9e8 100644 Binary files a/Exercise Library/Plank/preview.gif and b/Exercise Library/Plank/preview.gif differ diff --git a/Exercise Library/Plank/visual.svg b/Exercise Library/Plank/visual.svg index 444f09f..bb7fb34 100644 --- a/Exercise Library/Plank/visual.svg +++ b/Exercise Library/Plank/visual.svg @@ -3,9 +3,11 @@ + + - + diff --git a/Exercise Library/Reverse Crunch/frames/frame-1.svg b/Exercise Library/Reverse Crunch/frames/frame-1.svg index 7f24f98..ce36dd4 100644 --- a/Exercise Library/Reverse Crunch/frames/frame-1.svg +++ b/Exercise Library/Reverse Crunch/frames/frame-1.svg @@ -3,6 +3,8 @@ + + diff --git a/Exercise Library/Reverse Crunch/frames/frame-2.svg b/Exercise Library/Reverse Crunch/frames/frame-2.svg index 196da24..1ac7741 100644 --- a/Exercise Library/Reverse Crunch/frames/frame-2.svg +++ b/Exercise Library/Reverse Crunch/frames/frame-2.svg @@ -3,6 +3,8 @@ + + diff --git a/Exercise Library/Reverse Crunch/preview.gif b/Exercise Library/Reverse Crunch/preview.gif index 6adb20e..042a60d 100644 Binary files a/Exercise Library/Reverse Crunch/preview.gif and b/Exercise Library/Reverse Crunch/preview.gif differ diff --git a/Exercise Library/Reverse Crunch/visual.svg b/Exercise Library/Reverse Crunch/visual.svg index 196da24..1ac7741 100644 --- a/Exercise Library/Reverse Crunch/visual.svg +++ b/Exercise Library/Reverse Crunch/visual.svg @@ -3,6 +3,8 @@ + + diff --git a/Exercise Library/Rotary/frames/frame-1.svg b/Exercise Library/Rotary/frames/frame-1.svg index 05aff01..a780975 100644 --- a/Exercise Library/Rotary/frames/frame-1.svg +++ b/Exercise Library/Rotary/frames/frame-1.svg @@ -4,11 +4,13 @@ + + - - - - + + + + diff --git a/Exercise Library/Rotary/frames/frame-2.svg b/Exercise Library/Rotary/frames/frame-2.svg index 727bc95..c1c105e 100644 --- a/Exercise Library/Rotary/frames/frame-2.svg +++ b/Exercise Library/Rotary/frames/frame-2.svg @@ -4,11 +4,13 @@ + + - - - - + + + + diff --git a/Exercise Library/Rotary/preview.gif b/Exercise Library/Rotary/preview.gif index 2a1337a..25150c5 100644 Binary files a/Exercise Library/Rotary/preview.gif and b/Exercise Library/Rotary/preview.gif differ diff --git a/Exercise Library/Rotary/visual.svg b/Exercise Library/Rotary/visual.svg index 05aff01..a780975 100644 --- a/Exercise Library/Rotary/visual.svg +++ b/Exercise Library/Rotary/visual.svg @@ -4,11 +4,13 @@ + + - - - - + + + + diff --git a/Exercise Library/SYSTEM.md b/Exercise Library/SYSTEM.md index 301168f..3dc1fe7 100644 --- a/Exercise Library/SYSTEM.md +++ b/Exercise Library/SYSTEM.md @@ -103,8 +103,10 @@ never touches a motion script** — proportions are the skeleton's problem. stays distinguishable. The nudge scales with how side-on the view is and vanishes face-on, where the skeleton's real shoulder/pelvis widths take over — one continuous rule across the whole orbit. -- **Spine** — rendered as a smooth curve through pelvis → mid → neck; teal - when the trunk is the working part. +- **Spine** — rendered as a smooth curve through pelvis → mid → neck, with the + shoulder girdle and pelvis drawn as bars across the attach points (near-full + width face-on, a shoulder/hip nub in profile); teal when the trunk is the + working part. - Canvas 320×180, ground line at y = 152. Limbs listed in `hide` are occluded by convention in this view and not drawn. @@ -150,6 +152,11 @@ scale drawings of the machine. default to perpendicular to the lower bone (forearm/shin), or take an explicit `angle`. `plateR` puts filled discs on both ends (dumbbells default to 4.5). A prop whose limb is hidden that frame simply isn't drawn. +- **`roller`** — a machine roller pad seen end-on: a filled disc riding the + limb's lower bone near the joint in `at`, on the `side` (+1/−1) of the bone + it presses — a leg extension's instep roller (`side: 1`), a leg curl's + heel roller (`side: -1`). `r` is the radius, `back` slides it along the + bone away from the joint. ## Rendering diff --git a/Exercise Library/Seated Row/frames/frame-1.svg b/Exercise Library/Seated Row/frames/frame-1.svg index 2d85c7c..277112d 100644 --- a/Exercise Library/Seated Row/frames/frame-1.svg +++ b/Exercise Library/Seated Row/frames/frame-1.svg @@ -7,9 +7,11 @@ + + - + diff --git a/Exercise Library/Seated Row/frames/frame-2.svg b/Exercise Library/Seated Row/frames/frame-2.svg index cae5a31..27623dd 100644 --- a/Exercise Library/Seated Row/frames/frame-2.svg +++ b/Exercise Library/Seated Row/frames/frame-2.svg @@ -7,9 +7,11 @@ + + - + diff --git a/Exercise Library/Seated Row/preview.gif b/Exercise Library/Seated Row/preview.gif index f3d0d92..3c2c757 100644 Binary files a/Exercise Library/Seated Row/preview.gif and b/Exercise Library/Seated Row/preview.gif differ diff --git a/Exercise Library/Seated Row/visual.svg b/Exercise Library/Seated Row/visual.svg index cae5a31..27623dd 100644 --- a/Exercise Library/Seated Row/visual.svg +++ b/Exercise Library/Seated Row/visual.svg @@ -7,9 +7,11 @@ + + - + diff --git a/Exercise Library/Shoulder Press/frames/frame-1.svg b/Exercise Library/Shoulder Press/frames/frame-1.svg index 1743e62..0ca08df 100644 --- a/Exercise Library/Shoulder Press/frames/frame-1.svg +++ b/Exercise Library/Shoulder Press/frames/frame-1.svg @@ -7,9 +7,11 @@ + + - + diff --git a/Exercise Library/Shoulder Press/frames/frame-2.svg b/Exercise Library/Shoulder Press/frames/frame-2.svg index 2042d20..a4ca04f 100644 --- a/Exercise Library/Shoulder Press/frames/frame-2.svg +++ b/Exercise Library/Shoulder Press/frames/frame-2.svg @@ -7,9 +7,11 @@ + + - + diff --git a/Exercise Library/Shoulder Press/preview.gif b/Exercise Library/Shoulder Press/preview.gif index d237297..a8912d1 100644 Binary files a/Exercise Library/Shoulder Press/preview.gif and b/Exercise Library/Shoulder Press/preview.gif differ diff --git a/Exercise Library/Shoulder Press/visual.svg b/Exercise Library/Shoulder Press/visual.svg index 2042d20..a4ca04f 100644 --- a/Exercise Library/Shoulder Press/visual.svg +++ b/Exercise Library/Shoulder Press/visual.svg @@ -7,9 +7,11 @@ + + - + diff --git a/Exercise Library/Side Plank/frames/frame-1.svg b/Exercise Library/Side Plank/frames/frame-1.svg index 4ad0cd1..cb39e33 100644 --- a/Exercise Library/Side Plank/frames/frame-1.svg +++ b/Exercise Library/Side Plank/frames/frame-1.svg @@ -3,9 +3,11 @@ + + - + diff --git a/Exercise Library/Side Plank/frames/frame-2.svg b/Exercise Library/Side Plank/frames/frame-2.svg index f04b0ac..99ec4f5 100644 --- a/Exercise Library/Side Plank/frames/frame-2.svg +++ b/Exercise Library/Side Plank/frames/frame-2.svg @@ -3,9 +3,11 @@ + + - + diff --git a/Exercise Library/Side Plank/preview.gif b/Exercise Library/Side Plank/preview.gif index 48fa18b..4d97284 100644 Binary files a/Exercise Library/Side Plank/preview.gif and b/Exercise Library/Side Plank/preview.gif differ diff --git a/Exercise Library/Side Plank/visual.svg b/Exercise Library/Side Plank/visual.svg index f04b0ac..99ec4f5 100644 --- a/Exercise Library/Side Plank/visual.svg +++ b/Exercise Library/Side Plank/visual.svg @@ -3,9 +3,11 @@ + + - + diff --git a/Exercise Library/Tricep Press/frames/frame-1.svg b/Exercise Library/Tricep Press/frames/frame-1.svg index d4f231a..528f2b1 100644 --- a/Exercise Library/Tricep Press/frames/frame-1.svg +++ b/Exercise Library/Tricep Press/frames/frame-1.svg @@ -7,9 +7,11 @@ + + - + diff --git a/Exercise Library/Tricep Press/frames/frame-2.svg b/Exercise Library/Tricep Press/frames/frame-2.svg index 4dd91f6..31d949e 100644 --- a/Exercise Library/Tricep Press/frames/frame-2.svg +++ b/Exercise Library/Tricep Press/frames/frame-2.svg @@ -7,9 +7,11 @@ + + - + diff --git a/Exercise Library/Tricep Press/preview.gif b/Exercise Library/Tricep Press/preview.gif index 65bf588..4160dc1 100644 Binary files a/Exercise Library/Tricep Press/preview.gif and b/Exercise Library/Tricep Press/preview.gif differ diff --git a/Exercise Library/Tricep Press/visual.svg b/Exercise Library/Tricep Press/visual.svg index 4dd91f6..31d949e 100644 --- a/Exercise Library/Tricep Press/visual.svg +++ b/Exercise Library/Tricep Press/visual.svg @@ -7,9 +7,11 @@ + + - + diff --git a/Exercise Library/render.py b/Exercise Library/render.py index 2684075..c2d81cb 100644 --- a/Exercise Library/render.py +++ b/Exercise Library/render.py @@ -149,6 +149,15 @@ def frame_geometry(nf, prof, cam, flipped=False): geo[limb] = [scr(v, limb_off) for v in pts[limb]] depths[limb] = _chain_depth(pts[limb]) + # Shoulder girdle and pelvis, drawn with the spine so the limbs visibly hang + # from real width. Endpoints use each side's drawn attach (far offset included) + # so the bars meet the limbs exactly. + def attach(key, limb): + return scr(pts[key], off if shade[limb] == "far" else (0, 0)) + + geo["girdle"] = [attach("shoulder_l", "arm_l"), neck_b, attach("shoulder_r", "arm_r")] + geo["pelvisBar"] = [attach("hip_l", "leg_l"), pelvis, attach("hip_r", "leg_r")] + # The nose tick rides the head's anterior axis; it foreshortens naturally # and disappears when the face points at (or away from) the camera. nd = p["nose_dir"] @@ -206,6 +215,8 @@ def flip_props(props, width): p["from"] = fx(p["from"]) elif p["type"] in ("bar", "pad") and "angle" in p: p["angle"] = 180 - p["angle"] + elif p["type"] == "roller": + p["side"] = -p.get("side", 1) # mirroring flips the perpendicular's handedness out.append(p) return out @@ -243,6 +254,20 @@ def resolve_props(props, geo): if end: bg.append({"kind": "line", "pts": [list(p["from"]), list(end)], "w": p.get("w", 2), "color": "equipment"}) + elif t == "roller": + # A machine roller pad seen end-on: a disc riding the limb's lower + # bone near the joint, on the `side` (+1/-1) of the bone it presses. + c, d = joint_points(geo, p["at"]) + if not c: + continue + r = p.get("r", 5) + back = p.get("back", 0) + side = p.get("side", 1) + px, py = d[1] * side, -d[0] * side + center = (c[0] - d[0] * back + px * (r + 3), + c[1] - d[1] * back + py * (r + 3)) + fg.append({"kind": "circle", "c": list(center), "r": r, + "fill": True, "color": "prop"}) elif t in ("bar", "dumbbell", "pad"): c, d = joint_points(geo, p["at"]) if not c: @@ -353,6 +378,10 @@ def svg_for_frame(name, geo, order, shade, working, colors, props=None): continue color, width = part_style(part, working, colors, shade) if part == "spine": + for bar in ("girdle", "pelvisBar"): + bd = "M " + " L ".join(f"{x:.1f} {y:.1f}" for x, y in geo[bar]) + parts.append(f' ') (ax, ay), (cx, cy), (bx, by) = geo["spine"] d = f"M {ax:.1f} {ay:.1f} Q {cx:.1f} {cy:.1f} {bx:.1f} {by:.1f}" else: @@ -400,6 +429,9 @@ def draw_geo(geo, order, shade, working, colors, scale=2, font=None, props=None) if part not in geo: continue color, width = part_style(part, working, colors, shade) + if part == "spine": + line(geo["girdle"], color, 5) + line(geo["pelvisBar"], color, 5) pts = quad_points(*geo["spine"]) if part == "spine" else geo[part] line(pts, color, width) @@ -512,7 +544,11 @@ def render_orbit(folder, figure="neutral"): imgs = [] for i, nf in enumerate(ticks): yaw = cam + 360.0 * i / len(ticks) - _, geo, order, shade = frame_geometry(nf, prof, yaw) + # Pins are canvas targets in the AUTHORED view: resolve the pose there, + # then rotate the posed body - never re-pin in the rotated view. + posed, _, _, _ = frame_geometry(nf, prof, cam) + posed["pins"] = {} + _, geo, order, shade = frame_geometry(posed, prof, yaw) for limb in hide: geo.pop(limb, None) imgs.append(draw_geo(geo, order, shade, working, colors, font=font, props=props)) diff --git a/Exercise Library/skeleton.json b/Exercise Library/skeleton.json index 2f23eab..4940db2 100644 --- a/Exercise Library/skeleton.json +++ b/Exercise Library/skeleton.json @@ -10,9 +10,12 @@ "thigh": 46, "shin": 40, "foot": 11, - "shoulderHalf": 7, - "hipHalf": 5, - "farOffset": [6, 2] + "shoulderHalf": 11, + "hipHalf": 7, + "farOffset": [ + 6, + 2 + ] }, "female": { "headR": 9, @@ -24,9 +27,12 @@ "thigh": 47, "shin": 41, "foot": 10, - "shoulderHalf": 5.5, - "hipHalf": 6.5, - "farOffset": [6, 2] + "shoulderHalf": 8.5, + "hipHalf": 9, + "farOffset": [ + 6, + 2 + ] }, "male": { "headR": 10, @@ -38,19 +44,90 @@ "thigh": 47, "shin": 41, "foot": 11.5, - "shoulderHalf": 9, - "hipHalf": 4.5, - "farOffset": [6, 2] + "shoulderHalf": 13, + "hipHalf": 6.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]} + "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 + ] + } } } diff --git a/Workouts/ExerciseFigure/ExerciseFigureView.swift b/Workouts/ExerciseFigure/ExerciseFigureView.swift index e64ec76..b36e491 100644 --- a/Workouts/ExerciseFigure/ExerciseFigureView.swift +++ b/Workouts/ExerciseFigure/ExerciseFigureView.swift @@ -146,10 +146,13 @@ struct ExerciseFigureView: View { } private func drawSpine(_ ctx: inout GraphicsContext, _ geo: FigureGeometry) { + let color = ink("spine", shade: .near) + stroke(&ctx, geo.girdle, color: color, width: 5) + stroke(&ctx, geo.pelvisBar, color: color, width: 5) var path = Path() path.move(to: geo.spineStart) path.addQuadCurve(to: geo.spineEnd, control: geo.spineControl) - ctx.stroke(path, with: .color(ink("spine", shade: .near)), + ctx.stroke(path, with: .color(color), style: StrokeStyle(lineWidth: 6, lineCap: .round, lineJoin: .round)) } @@ -210,6 +213,10 @@ struct ExerciseFigureView: View { /// renderer's `resolve_props` — change them in lockstep. private func drawAttachedProps(_ ctx: inout GraphicsContext, _ geo: FigureGeometry) { for prop in figure.props { + if prop.type == "roller" { + drawRoller(&ctx, geo, prop) + continue + } let defaults: (halfLen: Double, width: Double, plateR: Double) switch prop.type { case "bar": defaults = (24, 4, 0) @@ -239,6 +246,21 @@ struct ExerciseFigureView: View { } } + /// A machine roller pad seen end-on: a disc riding the limb's lower bone near the + /// joint, on the `side` (+1/−1) of the bone it presses. Kept 1:1 with the reference + /// renderer's `resolve_props`. + private func drawRoller(_ ctx: inout GraphicsContext, _ geo: FigureGeometry, _ prop: MotionProp) { + guard let at = prop.at, let anchor = jointAnchor(geo, at) else { return } + let r = prop.r ?? 5 + let back = prop.back ?? 0 + let side = prop.side ?? 1 + let px = anchor.direction.dy * side, py = -anchor.direction.dx * side + let center = CGPoint(x: anchor.point.x - anchor.direction.dx * back + px * (r + 3), + y: anchor.point.y - anchor.direction.dy * back + py * (r + 3)) + let rect = CGRect(x: center.x - r, y: center.y - r, width: 2 * r, height: 2 * r) + ctx.fill(Path(ellipseIn: rect), with: .color(.figureProp)) + } + private func drawSceneShape(_ ctx: inout GraphicsContext, _ shape: PropSceneShape) { let color: Color = shape.color == "prop" ? .figureProp : .figureEquipment switch shape.kind { diff --git a/Workouts/ExerciseFigure/ExerciseMotion.swift b/Workouts/ExerciseFigure/ExerciseMotion.swift index e02862f..86322e2 100644 --- a/Workouts/ExerciseFigure/ExerciseMotion.swift +++ b/Workouts/ExerciseFigure/ExerciseMotion.swift @@ -159,7 +159,7 @@ struct PropSceneShape: Codable { /// One equipment prop. `type` selects the flavor; the other fields apply per type /// (mirroring the reference renderer's `resolve_props`). struct MotionProp: Codable { - let type: String // "scene" | "cable" | "bar" | "dumbbell" | "pad" + let type: String // "scene" | "cable" | "bar" | "dumbbell" | "pad" | "roller" /// scene: the static shapes. let shapes: [PropSceneShape]? /// cable: fixed anchor `[x, y]` → moving joint `to`. @@ -174,6 +174,11 @@ struct MotionProp: Codable { let w: Double? /// End-disc radius (dumbbell plates default 4.5; bars none). let plateR: Double? + /// roller: which side of the lower bone the disc presses (+1/−1), its radius, + /// and how far back along the bone from the joint it sits. + let side: Double? + let r: Double? + let back: Double? } /// A key frame of anatomical joint angles. A joint absent from the frame poses at diff --git a/Workouts/ExerciseFigure/MotionSolver.swift b/Workouts/ExerciseFigure/MotionSolver.swift index 545a9ac..f5f87ee 100644 --- a/Workouts/ExerciseFigure/MotionSolver.swift +++ b/Workouts/ExerciseFigure/MotionSolver.swift @@ -159,6 +159,10 @@ struct FigureGeometry { var noseStart, noseEnd: CGPoint? /// Quadratic Bézier through pelvis → mid → neck (control = 2·mid − (pelvis+neck)/2). var spineStart, spineControl, spineEnd: CGPoint + /// Shoulder girdle and pelvis bars, drawn with the spine: left attach → center → + /// right attach, far offsets included so the bars meet the drawn limbs exactly. + var girdle: [CGPoint] + var pelvisBar: [CGPoint] /// Attach → elbow/knee → hand (arms: 3 points); hip → knee → ankle → toe (legs: 4). var limbs: [FigureLimb: [CGPoint]] /// Parts far-to-near, `"head"` always last (`"spine"`, `"arm_r"`, … then `"head"`). @@ -452,9 +456,14 @@ enum MotionSolver { return (fixedRank[lhs] ?? 0) < (fixedRank[rhs] ?? 0) } + ["head"] + func attachPoint(_ v: Vec3, _ limb: FigureLimb) -> CGPoint { + scr(v, shade[limb] == .far ? off : .zero) + } let geo = FigureGeometry( headCenter: head, headRadius: prof.headR, noseStart: noseStart, noseEnd: noseEnd, spineStart: pelvis, spineControl: control, spineEnd: neckB, + girdle: [attachPoint(p.shoulderL, .armL), neckB, attachPoint(p.shoulderR, .armR)], + pelvisBar: [attachPoint(p.hipL, .legL), pelvis, attachPoint(p.hipR, .legR)], limbs: limbs, order: order, shade: shade) return (resolved, geo) } @@ -500,8 +509,17 @@ struct MotionTimeline { } /// The drawable geometry at wall-clock `time`. `yawOffset` turns the camera past - /// the exercise's authored yaw — the slow-orbit presentation. + /// the exercise's authored yaw — the slow-orbit presentation. Pins are canvas + /// targets in the *authored* view, so the pose resolves there first and the posed + /// body is then rotated; re-pinning in a rotated view would glue hands to screen + /// points that no longer correspond to anything (arms visibly "stuck" mid-orbit). func geometry(at time: Double, yawOffset: Double = 0) -> FigureGeometry { - MotionSolver.frameGeometry(frame(at: time), prof: profile, cam: cam + yawOffset).1 + let frame = frame(at: time) + guard yawOffset != 0 else { + return MotionSolver.frameGeometry(frame, prof: profile, cam: cam).1 + } + var posed = MotionSolver.frameGeometry(frame, prof: profile, cam: cam).0 + posed.pins = [:] + return MotionSolver.frameGeometry(posed, prof: profile, cam: cam + yawOffset).1 } } diff --git a/Workouts/Resources/ExerciseMotions/Leg Curl.motion.json b/Workouts/Resources/ExerciseMotions/Leg Curl.motion.json index 5e24c99..5da1351 100644 --- a/Workouts/Resources/ExerciseMotions/Leg Curl.motion.json +++ b/Workouts/Resources/ExerciseMotions/Leg Curl.motion.json @@ -12,7 +12,7 @@ {"kind": "line", "pts": [[104, 150], [166, 150]], "w": 5}, {"kind": "circle", "c": [114, 90], "r": 3.5, "fill": true, "color": "prop"} ]}, - {"type": "pad", "at": ["foot_r", "foot_l"], "halfLen": 9} + {"type": "roller", "at": ["foot_r", "foot_l"], "side": -1, "r": 5, "back": -2} ], "frames": [ { diff --git a/Workouts/Resources/ExerciseMotions/Leg Extension.motion.json b/Workouts/Resources/ExerciseMotions/Leg Extension.motion.json index 79e628c..28eed52 100644 --- a/Workouts/Resources/ExerciseMotions/Leg Extension.motion.json +++ b/Workouts/Resources/ExerciseMotions/Leg Extension.motion.json @@ -11,7 +11,7 @@ {"kind": "line", "pts": [[104, 150], [166, 150]], "w": 5}, {"kind": "circle", "c": [114, 90], "r": 3.5, "fill": true, "color": "prop"} ]}, - {"type": "pad", "at": ["foot_r", "foot_l"], "halfLen": 9} + {"type": "roller", "at": ["foot_r", "foot_l"], "side": 1, "r": 5, "back": -2} ], "frames": [ { diff --git a/Workouts/Resources/ExerciseMotions/skeleton.json b/Workouts/Resources/ExerciseMotions/skeleton.json index 2f23eab..4940db2 100644 --- a/Workouts/Resources/ExerciseMotions/skeleton.json +++ b/Workouts/Resources/ExerciseMotions/skeleton.json @@ -10,9 +10,12 @@ "thigh": 46, "shin": 40, "foot": 11, - "shoulderHalf": 7, - "hipHalf": 5, - "farOffset": [6, 2] + "shoulderHalf": 11, + "hipHalf": 7, + "farOffset": [ + 6, + 2 + ] }, "female": { "headR": 9, @@ -24,9 +27,12 @@ "thigh": 47, "shin": 41, "foot": 10, - "shoulderHalf": 5.5, - "hipHalf": 6.5, - "farOffset": [6, 2] + "shoulderHalf": 8.5, + "hipHalf": 9, + "farOffset": [ + 6, + 2 + ] }, "male": { "headR": 10, @@ -38,19 +44,90 @@ "thigh": 47, "shin": 41, "foot": 11.5, - "shoulderHalf": 9, - "hipHalf": 4.5, - "farOffset": [6, 2] + "shoulderHalf": 13, + "hipHalf": 6.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]} + "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 + ] + } } } diff --git a/WorkoutsTests/ExerciseMotionTests.swift b/WorkoutsTests/ExerciseMotionTests.swift index 484b6e6..17414db 100644 --- a/WorkoutsTests/ExerciseMotionTests.swift +++ b/WorkoutsTests/ExerciseMotionTests.swift @@ -50,7 +50,8 @@ struct ExerciseMotionTests { #expect(geo.shade[.armL] == .near) #expect(abs(resolved.shoulderR.flexion - 73.289190) < 1e-4) #expect(abs(resolved.elbowR.flexion - 17.443758) < 1e-4) - #expect(geo.order == ["arm_r", "leg_r", "spine", "arm_l", "leg_l", "head"]) + // Shoulders are wider than hips, so the arms bracket the depth order. + #expect(geo.order == ["arm_r", "leg_r", "spine", "leg_l", "arm_l", "head"]) } /// Mid-tween of resolved frames 1→2: a hand pinned in BOTH frames stays planted diff --git a/WorkoutsTests/Fixtures/figure-fixtures.json b/WorkoutsTests/Fixtures/figure-fixtures.json index e4b4660..590b97e 100644 --- a/WorkoutsTests/Fixtures/figure-fixtures.json +++ b/WorkoutsTests/Fixtures/figure-fixtures.json @@ -1 +1 @@ -{"profile": "neutral", "exercises": [{"name": "Abdominal", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[128.0, 126.0], [123.501, 82.657], [125.0, 41.105]], "head": [127.784, 21.299], "nose": [[137.687, 22.691], [144.618, 23.665]], "arm_r": [[125.0, 41.105], [153.596, 32.033], [155.0, 62.0]], "arm_l": [[131.0, 43.105], [159.596, 34.033], [161.0, 64.0]], "leg_r": [[128.0, 126.0], [171.174, 110.126], [168.0, 150.0], [178.965, 150.873]], "leg_l": [[134.0, 128.0], [176.436, 110.247], [172.0, 150.0], [182.932, 151.22]]}, {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[128.0, 126.0], [123.113, 75.978], [167.641, 56.656]], "head": [186.184, 49.164], "nose": [[193.616, 55.855], [198.818, 60.539]], "arm_r": [[167.641, 56.656], [195.9, 46.586], [190.0, 76.0]], "arm_l": [[173.641, 58.656], [201.9, 48.586], [196.0, 78.0]], "leg_r": [[128.0, 126.0], [171.174, 110.126], [168.0, 150.0], [178.965, 150.873]], "leg_l": [[134.0, 128.0], [176.436, 110.247], [172.0, 150.0], [182.932, 151.22]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[128.0, 126.0], [122.501, 80.621], [148.0, 44.994]], "head": [160.314, 29.234], "nose": [[169.377, 33.46], [175.721, 36.418]], "arm_r": [[148.0, 44.994], [177.477, 39.416], [172.5, 69.0]], "arm_l": [[154.0, 46.994], [183.477, 41.416], [178.5, 71.0]], "leg_r": [[128.0, 126.0], [171.174, 110.126], [168.0, 150.0], [178.965, 150.873]], "leg_l": [[134.0, 128.0], [176.436, 110.247], [172.0, 150.0], [182.932, 151.22]]}}}, {"name": "Abductor", "camera": 90.0, "frames": [{"order": ["spine", "arm_l", "arm_r", "leg_l", "leg_r", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[160.0, 116.0], [160.0, 72.5], [160.0, 31.0]], "head": [160.0, 11.0], "nose": null, "arm_r": [[153.0, 31.0], [143.729, 59.098], [135.328, 82.362]], "arm_l": [[167.0, 31.0], [176.271, 59.098], [184.672, 82.362]], "leg_r": [[155.0, 116.0], [149.394, 125.493], [147.105, 163.914], [145.922, 160.867]], "leg_l": [[165.0, 116.0], [170.606, 125.493], [172.895, 163.914], [174.078, 160.867]]}, {"order": ["spine", "arm_l", "arm_r", "leg_l", "leg_r", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[160.0, 116.0], [160.0, 72.5], [160.0, 31.0]], "head": [160.0, 11.0], "nose": null, "arm_r": [[153.0, 31.0], [143.729, 59.098], [135.328, 82.362]], "arm_l": [[167.0, 31.0], [176.271, 59.098], [184.672, 82.362]], "leg_r": [[155.0, 116.0], [132.0, 124.283], [122.611, 162.21], [117.754, 158.907]], "leg_l": [[165.0, 116.0], [188.0, 124.283], [197.389, 162.21], [202.246, 158.907]]}], "tween": {"t": 0.5, "sample": {"order": ["spine", "arm_l", "arm_r", "leg_l", "leg_r", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[160.0, 116.0], [160.0, 72.5], [160.0, 31.0]], "head": [160.0, 11.0], "nose": null, "arm_r": [[153.0, 31.0], [143.729, 59.098], [135.328, 82.362]], "arm_l": [[167.0, 31.0], [176.271, 59.098], [184.672, 82.362]], "leg_r": [[155.0, 116.0], [140.404, 125.07], [134.445, 163.318], [131.364, 160.182]], "leg_l": [[165.0, 116.0], [179.596, 125.07], [185.555, 163.318], [188.636, 160.182]]}}}, {"name": "Adductor", "camera": 90.0, "frames": [{"order": ["spine", "arm_l", "arm_r", "leg_l", "leg_r", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[160.0, 116.0], [160.0, 72.5], [160.0, 31.0]], "head": [160.0, 11.0], "nose": null, "arm_r": [[153.0, 31.0], [143.729, 59.098], [135.328, 82.362]], "arm_l": [[167.0, 31.0], [176.271, 59.098], [184.672, 82.362]], "leg_r": [[155.0, 116.0], [132.0, 124.283], [122.611, 162.21], [117.754, 158.907]], "leg_l": [[165.0, 116.0], [188.0, 124.283], [197.389, 162.21], [202.246, 158.907]]}, {"order": ["spine", "arm_l", "arm_r", "leg_l", "leg_r", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[160.0, 116.0], [160.0, 72.5], [160.0, 31.0]], "head": [160.0, 11.0], "nose": null, "arm_r": [[153.0, 31.0], [143.729, 59.098], [135.328, 82.362]], "arm_l": [[167.0, 31.0], [176.271, 59.098], [184.672, 82.362]], "leg_r": [[155.0, 116.0], [149.394, 125.493], [147.105, 163.914], [145.922, 160.867]], "leg_l": [[165.0, 116.0], [170.606, 125.493], [172.895, 163.914], [174.078, 160.867]]}], "tween": {"t": 0.5, "sample": {"order": ["spine", "arm_l", "arm_r", "leg_l", "leg_r", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[160.0, 116.0], [160.0, 72.5], [160.0, 31.0]], "head": [160.0, 11.0], "nose": null, "arm_r": [[153.0, 31.0], [143.729, 59.098], [135.328, 82.362]], "arm_l": [[167.0, 31.0], [176.271, 59.098], [184.672, 82.362]], "leg_r": [[155.0, 116.0], [140.404, 125.07], [134.445, 163.318], [131.364, 160.182]], "leg_l": [[165.0, 116.0], [179.596, 125.07], [185.555, 163.318], [188.636, 160.182]]}}}, {"name": "Arm Curl", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[130.0, 124.0], [130.786, 80.488], [134.43, 39.129]], "head": [137.214, 19.323], "nose": [[146.724, 22.413], [153.382, 24.576]], "arm_r": [[134.43, 39.129], [159.005, 56.336], [174.903, 81.777]], "arm_l": [[140.43, 41.129], [165.005, 58.336], [180.903, 83.777]], "leg_r": [[130.0, 124.0], [173.836, 110.059], [176.0, 150.0], [186.984, 149.405]], "leg_l": [[136.0, 126.0], [179.487, 111.003], [180.0, 151.0], [190.999, 150.859]]}, {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[130.0, 124.0], [130.786, 80.488], [134.43, 39.129]], "head": [137.214, 19.323], "nose": [[146.724, 22.413], [153.382, 24.576]], "arm_r": [[134.43, 39.129], [159.005, 56.336], [178.289, 33.354]], "arm_l": [[140.43, 41.129], [165.005, 58.336], [184.289, 35.354]], "leg_r": [[130.0, 124.0], [173.836, 110.059], [176.0, 150.0], [186.984, 149.405]], "leg_l": [[136.0, 126.0], [179.487, 111.003], [180.0, 151.0], [190.999, 150.859]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[130.0, 124.0], [130.786, 80.488], [134.43, 39.129]], "head": [137.214, 19.323], "nose": [[146.724, 22.413], [153.382, 24.576]], "arm_r": [[134.43, 39.129], [159.005, 56.336], [188.932, 58.428]], "arm_l": [[140.43, 41.129], [165.005, 58.336], [194.932, 60.428]], "leg_r": [[130.0, 124.0], [173.836, 110.059], [176.0, 150.0], [186.984, 149.405]], "leg_l": [[136.0, 126.0], [179.487, 111.003], [180.0, 151.0], [190.999, 150.859]]}}}, {"name": "Bird Dog", "camera": 0.0, "frames": [{"order": ["arm_r", "leg_r", "spine", "arm_l", "leg_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[190.0, 106.0], [147.036, 99.195], [106.046, 92.703]], "head": [86.196, 95.14], "nose": [[77.132, 99.367], [70.788, 102.325]], "arm_r": [[112.046, 94.703], [116.072, 124.432], [111.0, 154.0]], "arm_l": [[106.046, 92.703], [110.072, 122.432], [105.0, 152.0]], "leg_r": [[196.0, 108.0], [201.606, 153.657], [241.606, 153.657], [250.617, 159.966]], "leg_l": [[190.0, 106.0], [195.606, 151.657], [235.606, 151.657], [244.617, 157.966]]}, {"order": ["arm_r", "leg_r", "spine", "arm_l", "leg_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[190.0, 106.0], [147.036, 99.195], [106.046, 92.703]], "head": [86.196, 95.14], "nose": [[76.536, 97.729], [69.775, 99.54]], "arm_r": [[112.046, 94.703], [116.072, 124.432], [111.0, 154.0]], "arm_l": [[106.046, 92.703], [77.681, 82.936], [49.315, 73.169]], "leg_r": [[196.0, 108.0], [240.433, 96.094], [279.07, 85.742], [286.14, 94.168]], "leg_l": [[190.0, 106.0], [195.606, 151.657], [235.606, 151.657], [244.617, 157.966]]}, {"order": ["arm_r", "leg_r", "spine", "arm_l", "leg_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[190.0, 106.0], [147.036, 99.195], [106.046, 92.703]], "head": [86.196, 95.14], "nose": [[77.132, 99.367], [70.788, 102.325]], "arm_r": [[112.046, 94.703], [116.072, 124.432], [111.0, 154.0]], "arm_l": [[106.046, 92.703], [110.072, 122.432], [105.0, 152.0]], "leg_r": [[196.0, 108.0], [201.606, 153.657], [241.606, 153.657], [250.617, 159.966]], "leg_l": [[190.0, 106.0], [195.606, 151.657], [235.606, 151.657], [244.617, 157.966]]}, {"order": ["arm_r", "leg_r", "spine", "arm_l", "leg_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[190.0, 106.0], [147.036, 99.195], [106.046, 92.703]], "head": [86.196, 95.14], "nose": [[76.536, 97.729], [69.775, 99.54]], "arm_r": [[112.046, 94.703], [83.681, 84.936], [55.315, 75.169]], "arm_l": [[106.046, 92.703], [110.072, 122.432], [105.0, 152.0]], "leg_r": [[196.0, 108.0], [201.606, 153.657], [241.606, 153.657], [250.617, 159.966]], "leg_l": [[190.0, 106.0], [234.433, 94.094], [273.07, 83.742], [280.14, 92.168]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_r", "leg_r", "spine", "arm_l", "leg_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[190.0, 106.0], [147.036, 99.195], [106.046, 92.703]], "head": [86.196, 95.14], "nose": [[76.799, 98.561], [70.221, 100.955]], "arm_r": [[112.046, 94.703], [116.072, 124.432], [111.0, 154.0]], "arm_l": [[106.046, 92.703], [82.85, 111.727], [57.036, 127.013]], "leg_r": [[196.0, 108.0], [234.136, 133.723], [273.794, 128.502], [281.904, 135.933]], "leg_l": [[190.0, 106.0], [195.606, 151.657], [235.606, 151.657], [244.617, 157.966]]}}, "orbit": [{"yaw": 37.0, "sample": {"order": ["arm_r", "arm_l", "spine", "leg_r", "leg_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[190.0, 106.0], [155.687, 99.195], [122.952, 92.703]], "head": [107.098, 95.14], "nose": [[98.462, 100.183], [93.396, 103.141]], "arm_r": [[131.956, 94.3], [122.538, 122.784], [112.137, 150.923]], "arm_l": [[118.739, 92.703], [112.502, 122.048], [105.213, 151.149]], "leg_r": [[197.801, 107.597], [202.278, 153.254], [234.223, 153.254], [241.42, 159.564]], "leg_l": [[186.991, 106.0], [191.468, 151.657], [223.413, 151.657], [230.61, 157.966]]}}, {"yaw": 180.0, "sample": {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[190.0, 106.0], [232.964, 99.195], [273.954, 92.703]], "head": [293.804, 95.14], "nose": [[302.868, 99.367], [309.212, 102.325]], "arm_r": [[273.954, 92.703], [246.072, 103.776], [217.953, 114.232]], "arm_l": [[279.954, 94.703], [251.619, 104.559], [223.076, 113.795]], "leg_r": [[190.0, 106.0], [184.394, 151.657], [144.394, 151.657], [135.383, 157.966]], "leg_l": [[196.0, 108.0], [190.394, 153.657], [150.394, 153.657], [141.383, 159.966]]}}]}, {"name": "Calfs", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[140.0, 118.0], [130.995, 75.365], [128.143, 33.883]], "head": [131.616, 14.187], "nose": [[141.464, 15.924], [148.358, 17.139]], "arm_r": [[128.143, 33.883], [155.658, 45.839], [166.0, 74.0]], "arm_l": [[134.143, 35.883], [161.969, 47.095], [170.0, 76.0]], "leg_r": [[140.0, 118.0], [185.998, 117.604], [212.0, 148.0], [218.69, 139.268]], "leg_l": [[146.0, 120.0], [191.958, 118.032], [216.0, 150.0], [223.225, 141.705]]}, {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[140.0, 118.0], [130.995, 75.365], [128.143, 33.883]], "head": [131.616, 14.187], "nose": [[141.464, 15.924], [148.358, 17.139]], "arm_r": [[128.143, 33.883], [155.658, 45.839], [166.0, 74.0]], "arm_l": [[134.143, 35.883], [161.969, 47.095], [170.0, 76.0]], "leg_r": [[140.0, 118.0], [185.175, 109.328], [212.0, 139.0], [222.04, 134.506]], "leg_l": [[146.0, 120.0], [190.872, 109.878], [216.0, 141.0], [226.275, 137.073]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[140.0, 118.0], [130.995, 75.365], [128.143, 33.883]], "head": [131.616, 14.187], "nose": [[141.464, 15.924], [148.358, 17.139]], "arm_r": [[128.143, 33.883], [155.658, 45.839], [166.0, 74.0]], "arm_l": [[134.143, 35.883], [161.969, 47.095], [170.0, 76.0]], "leg_r": [[140.0, 118.0], [185.76, 113.309], [212.0, 143.5], [220.669, 136.728]], "leg_l": [[146.0, 120.0], [191.583, 113.817], [216.0, 145.5], [225.052, 139.25]]}}}, {"name": "Cat-Cow", "camera": 0.0, "frames": [{"order": ["arm_r", "leg_r", "spine", "arm_l", "leg_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[190.0, 106.0], [145.16, 123.852], [109.354, 94.234]], "head": [89.43, 95.978], "nose": [[79.817, 93.221], [73.088, 91.292]], "arm_r": [[115.354, 96.234], [120.968, 125.704], [111.0, 154.0]], "arm_l": [[109.354, 94.234], [114.968, 123.704], [105.0, 152.0]], "leg_r": [[196.0, 108.0], [201.606, 153.657], [241.606, 153.657], [250.617, 159.966]], "leg_l": [[190.0, 106.0], [195.606, 151.657], [235.606, 151.657], [244.617, 157.966]]}, {"order": ["arm_r", "leg_r", "spine", "arm_l", "leg_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[190.0, 106.0], [152.084, 74.375], [109.947, 96.56]], "head": [93.564, 108.031], "nose": [[86.492, 115.102], [81.543, 120.052]], "arm_r": [[115.947, 98.56], [124.631, 127.275], [111.0, 154.0]], "arm_l": [[109.947, 96.56], [118.631, 125.275], [105.0, 152.0]], "leg_r": [[196.0, 108.0], [201.606, 153.657], [241.606, 153.657], [250.617, 159.966]], "leg_l": [[190.0, 106.0], [195.606, 151.657], [235.606, 151.657], [244.617, 157.966]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_r", "leg_r", "spine", "arm_l", "leg_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[190.0, 106.0], [147.073, 98.844], [105.742, 94.89]], "head": [86.948, 101.73], "nose": [[77.267, 104.234], [70.49, 105.987]], "arm_r": [[111.742, 96.89], [120.561, 125.564], [111.0, 154.0]], "arm_l": [[105.742, 94.89], [114.561, 123.564], [105.0, 152.0]], "leg_r": [[196.0, 108.0], [201.606, 153.657], [241.606, 153.657], [250.617, 159.966]], "leg_l": [[190.0, 106.0], [195.606, 151.657], [235.606, 151.657], [244.617, 157.966]]}}}, {"name": "Chest Press", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[116.0, 122.0], [104.043, 80.097], [98.304, 38.915]], "head": [100.395, 19.025], "nose": [[110.357, 18.153], [117.33, 17.543]], "arm_r": [[98.304, 38.915], [93.095, 68.46], [116.076, 49.176]], "arm_l": [[104.304, 40.915], [99.095, 70.46], [122.076, 51.176]], "leg_r": [[116.0, 122.0], [160.688, 111.09], [158.0, 151.0], [168.975, 151.739]], "leg_l": [[122.0, 124.0], [166.474, 112.251], [162.0, 152.0], [172.931, 153.23]]}, {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[116.0, 122.0], [104.043, 80.097], [98.304, 38.915]], "head": [100.395, 19.025], "nose": [[110.357, 18.153], [117.33, 17.543]], "arm_r": [[98.304, 38.915], [128.14, 42.051], [157.249, 49.309]], "arm_l": [[104.304, 40.915], [134.14, 44.051], [163.249, 51.309]], "leg_r": [[116.0, 122.0], [160.688, 111.09], [158.0, 151.0], [168.975, 151.739]], "leg_l": [[122.0, 124.0], [166.474, 112.251], [162.0, 152.0], [172.931, 153.23]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[116.0, 122.0], [104.043, 80.097], [98.304, 38.915]], "head": [100.395, 19.025], "nose": [[110.357, 18.153], [117.33, 17.543]], "arm_r": [[98.304, 38.915], [116.359, 62.874], [145.59, 56.126]], "arm_l": [[104.304, 40.915], [122.359, 64.874], [151.59, 58.126]], "leg_r": [[116.0, 122.0], [160.688, 111.09], [158.0, 151.0], [168.975, 151.739]], "leg_l": [[122.0, 124.0], [166.474, 112.251], [162.0, 152.0], [172.931, 153.23]]}}}, {"name": "Dead Bug", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[185.0, 148.0], [141.5, 148.0], [100.0, 148.0]], "head": [80.437, 143.842], "nose": [[80.437, 133.842], [80.437, 126.842]], "arm_r": [[100.0, 148.0], [100.0, 118.0], [100.0, 88.0]], "arm_l": [[106.0, 150.0], [106.0, 120.0], [106.0, 90.0]], "leg_r": [[185.0, 148.0], [205.165, 106.655], [244.557, 113.601], [246.468, 102.769]], "leg_l": [[191.0, 150.0], [211.165, 108.655], [250.557, 115.601], [252.468, 104.769]]}, {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[185.0, 148.0], [141.5, 148.0], [100.0, 148.0]], "head": [80.437, 143.842], "nose": [[80.437, 133.842], [80.437, 126.842]], "arm_r": [[100.0, 148.0], [78.787, 126.787], [57.574, 105.574]], "arm_l": [[106.0, 150.0], [106.0, 120.0], [106.0, 90.0]], "leg_r": [[185.0, 148.0], [205.165, 106.655], [244.557, 113.601], [246.468, 102.769]], "leg_l": [[191.0, 150.0], [235.218, 137.321], [273.669, 126.295], [270.636, 115.721]]}, {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[185.0, 148.0], [141.5, 148.0], [100.0, 148.0]], "head": [80.437, 143.842], "nose": [[80.437, 133.842], [80.437, 126.842]], "arm_r": [[100.0, 148.0], [100.0, 118.0], [100.0, 88.0]], "arm_l": [[106.0, 150.0], [106.0, 120.0], [106.0, 90.0]], "leg_r": [[185.0, 148.0], [205.165, 106.655], [244.557, 113.601], [246.468, 102.769]], "leg_l": [[191.0, 150.0], [211.165, 108.655], [250.557, 115.601], [252.468, 104.769]]}, {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[185.0, 148.0], [141.5, 148.0], [100.0, 148.0]], "head": [80.437, 143.842], "nose": [[80.437, 133.842], [80.437, 126.842]], "arm_r": [[100.0, 148.0], [100.0, 118.0], [100.0, 88.0]], "arm_l": [[106.0, 150.0], [84.787, 128.787], [63.574, 107.574]], "leg_r": [[185.0, 148.0], [229.218, 135.321], [267.669, 124.295], [264.636, 113.721]], "leg_l": [[191.0, 150.0], [211.165, 108.655], [250.557, 115.601], [252.468, 104.769]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[185.0, 148.0], [141.5, 148.0], [100.0, 148.0]], "head": [80.437, 143.842], "nose": [[80.437, 133.842], [80.437, 126.842]], "arm_r": [[100.0, 148.0], [88.519, 120.284], [77.039, 92.567]], "arm_l": [[106.0, 150.0], [106.0, 120.0], [106.0, 90.0]], "leg_r": [[185.0, 148.0], [205.165, 106.655], [244.557, 113.601], [246.468, 102.769]], "leg_l": [[191.0, 150.0], [226.238, 120.432], [266.183, 118.338], [265.608, 107.353]]}}}, {"name": "Hollow Body Hold", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[185.0, 148.0], [141.5, 148.0], [100.0, 148.0]], "head": [80.437, 143.842], "nose": [[80.437, 133.842], [80.437, 126.842]], "arm_r": [[100.0, 148.0], [70.0, 148.0], [40.0, 148.0]], "arm_l": [[106.0, 150.0], [136.0, 150.0], [166.0, 150.0]], "leg_r": [[185.0, 148.0], [231.0, 148.0], [271.0, 148.0], [271.0, 137.0]], "leg_l": [[191.0, 150.0], [237.0, 150.0], [277.0, 150.0], [277.0, 139.0]]}, {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[185.0, 148.0], [140.587, 148.44], [102.768, 129.14]], "head": [87.448, 116.285], "nose": [[93.875, 108.624], [98.375, 103.262]], "arm_r": [[102.768, 129.14], [75.579, 116.462], [48.39, 103.783]], "arm_l": [[108.768, 131.14], [136.959, 141.401], [165.15, 151.662]], "leg_r": [[185.0, 148.0], [229.995, 138.436], [269.121, 130.12], [266.834, 119.36]], "leg_l": [[191.0, 150.0], [235.995, 140.436], [275.121, 132.12], [272.834, 121.36]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[185.0, 148.0], [141.269, 148.271], [100.697, 138.456]], "head": [82.721, 129.689], "nose": [[86.141, 120.292], [88.535, 113.714]], "arm_r": [[100.697, 138.456], [71.408, 131.963], [42.119, 125.47]], "arm_l": [[106.697, 140.456], [136.241, 145.666], [165.785, 150.875]], "leg_r": [[185.0, 148.0], [230.748, 143.192], [270.529, 139.011], [269.379, 128.071]], "leg_l": [[191.0, 150.0], [236.748, 145.192], [276.529, 141.011], [275.379, 130.071]]}}}, {"name": "Lat Pull Down", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[150.0, 122.0], [146.624, 78.588], [147.75, 37.059]], "head": [149.493, 17.135], "nose": [[155.228, 8.944], [159.243, 3.209]], "arm_r": [[147.75, 37.059], [174.771, 24.027], [194.0, 1.0]], "arm_l": [[153.75, 39.059], [181.713, 28.194], [198.0, 3.0]], "leg_r": [[150.0, 122.0], [194.414, 110.025], [193.0, 150.0], [203.993, 150.389]], "leg_l": [[156.0, 124.0], [200.161, 111.125], [197.0, 151.0], [207.966, 151.869]]}, {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[150.0, 122.0], [146.624, 78.588], [147.75, 37.059]], "head": [149.493, 17.135], "nose": [[158.153, 12.135], [164.215, 8.635]], "arm_r": [[147.75, 37.059], [171.723, 55.094], [194.0, 35.0]], "arm_l": [[153.75, 39.059], [176.815, 58.242], [198.0, 37.0]], "leg_r": [[150.0, 122.0], [194.414, 110.025], [193.0, 150.0], [203.993, 150.389]], "leg_l": [[156.0, 124.0], [200.161, 111.125], [197.0, 151.0], [207.966, 151.869]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[150.0, 122.0], [146.624, 78.588], [147.75, 37.059]], "head": [149.493, 17.135], "nose": [[156.865, 10.379], [162.026, 5.65]], "arm_r": [[147.75, 37.059], [177.186, 42.845], [194.0, 18.0]], "arm_l": [[153.75, 39.059], [182.947, 45.95], [198.0, 20.0]], "leg_r": [[150.0, 122.0], [194.414, 110.025], [193.0, 150.0], [203.993, 150.389]], "leg_l": [[156.0, 124.0], [200.161, 111.125], [197.0, 151.0], [207.966, 151.869]]}}}, {"name": "Leg Curl", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[118.0, 116.0], [101.728, 75.576], [91.716, 35.22]], "head": [97.229, 15.995], "nose": [[106.626, 19.415], [113.204, 21.809]], "arm_r": [[91.716, 35.22], [99.481, 64.198], [114.481, 90.179]], "arm_l": [[97.716, 37.22], [105.481, 66.198], [120.481, 92.179]], "leg_r": [[118.0, 116.0], [163.301, 108.012], [203.204, 105.222], [202.436, 94.249]], "leg_l": [[124.0, 118.0], [169.301, 110.012], [209.204, 107.222], [208.436, 96.249]]}, {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[118.0, 116.0], [101.728, 75.576], [91.716, 35.22]], "head": [97.229, 15.995], "nose": [[106.626, 19.415], [113.204, 21.809]], "arm_r": [[91.716, 35.22], [99.481, 64.198], [114.481, 90.179]], "arm_l": [[97.716, 37.22], [105.481, 66.198], [120.481, 92.179]], "leg_r": [[118.0, 116.0], [163.301, 108.012], [159.815, 147.86], [170.773, 148.819]], "leg_l": [[124.0, 118.0], [169.301, 110.012], [165.815, 149.86], [176.773, 150.819]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[118.0, 116.0], [101.728, 75.576], [91.716, 35.22]], "head": [97.229, 15.995], "nose": [[106.626, 19.415], [113.204, 21.809]], "arm_r": [[91.716, 35.22], [99.481, 64.198], [114.481, 90.179]], "arm_l": [[97.716, 37.22], [105.481, 66.198], [120.481, 92.179]], "leg_r": [[118.0, 116.0], [163.301, 108.012], [191.338, 136.542], [199.183, 128.832]], "leg_l": [[124.0, 118.0], [169.301, 110.012], [197.338, 138.542], [205.183, 130.832]]}}}, {"name": "Leg Extension", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[118.0, 116.0], [101.728, 75.576], [91.716, 35.22]], "head": [97.229, 15.995], "nose": [[106.626, 19.415], [113.204, 21.809]], "arm_r": [[91.716, 35.22], [99.481, 64.198], [114.481, 90.179]], "arm_l": [[97.716, 37.22], [105.481, 66.198], [120.481, 92.179]], "leg_r": [[118.0, 116.0], [163.301, 108.012], [168.176, 147.714], [179.094, 146.373]], "leg_l": [[124.0, 118.0], [169.301, 110.012], [174.176, 149.714], [185.094, 148.373]]}, {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[118.0, 116.0], [101.728, 75.576], [91.716, 35.22]], "head": [97.229, 15.995], "nose": [[106.626, 19.415], [113.204, 21.809]], "arm_r": [[91.716, 35.22], [99.481, 64.198], [114.481, 90.179]], "arm_l": [[97.716, 37.22], [105.481, 66.198], [120.481, 92.179]], "leg_r": [[118.0, 116.0], [163.301, 108.012], [203.204, 105.222], [202.436, 94.249]], "leg_l": [[124.0, 118.0], [169.301, 110.012], [209.204, 107.222], [208.436, 96.249]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[118.0, 116.0], [101.728, 75.576], [91.716, 35.22]], "head": [97.229, 15.995], "nose": [[106.626, 19.415], [113.204, 21.809]], "arm_r": [[91.716, 35.22], [99.481, 64.198], [114.481, 90.179]], "arm_l": [[97.716, 37.22], [105.481, 66.198], [120.481, 92.179]], "leg_r": [[118.0, 116.0], [163.301, 108.012], [194.166, 133.455], [201.163, 124.967]], "leg_l": [[124.0, 118.0], [169.301, 110.012], [200.166, 135.455], [207.163, 126.967]]}}}, {"name": "Leg Press", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[140.0, 116.0], [119.592, 77.499], [105.417, 38.41]], "head": [110.593, 19.092], "nose": [[120.252, 21.68], [127.014, 23.492]], "arm_r": [[105.417, 38.41], [113.181, 67.388], [141.372, 77.649]], "arm_l": [[111.417, 40.41], [119.181, 69.388], [147.372, 79.649]], "leg_r": [[140.0, 116.0], [157.129, 73.308], [185.0, 102.0], [192.89, 94.336]], "leg_l": [[146.0, 118.0], [161.702, 74.763], [189.0, 104.0], [197.04, 96.493]]}, {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[140.0, 116.0], [119.592, 77.499], [105.417, 38.41]], "head": [110.593, 19.092], "nose": [[120.252, 21.68], [127.014, 23.492]], "arm_r": [[105.417, 38.41], [113.181, 67.388], [141.372, 77.649]], "arm_l": [[111.417, 40.41], [119.181, 69.388], [147.372, 79.649]], "leg_r": [[140.0, 116.0], [180.564, 94.307], [220.0, 101.0], [221.84, 90.155]], "leg_l": [[146.0, 118.0], [185.086, 93.745], [224.0, 103.0], [226.545, 92.299]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[140.0, 116.0], [119.592, 77.499], [105.417, 38.41]], "head": [110.593, 19.092], "nose": [[120.252, 21.68], [127.014, 23.492]], "arm_r": [[105.417, 38.41], [113.181, 67.388], [141.372, 77.649]], "arm_l": [[111.417, 40.41], [119.181, 69.388], [147.372, 79.649]], "leg_r": [[140.0, 116.0], [168.724, 80.071], [202.5, 101.5], [208.393, 92.212]], "leg_l": [[146.0, 118.0], [173.396, 81.048], [206.5, 103.5], [212.674, 94.396]]}}}, {"name": "Leg Raises", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[185.0, 148.0], [141.5, 148.0], [100.0, 148.0]], "head": [80.437, 143.842], "nose": [[80.437, 133.842], [80.437, 126.842]], "arm_r": [[100.0, 148.0], [130.0, 148.0], [160.0, 148.0]], "arm_l": [[106.0, 150.0], [135.982, 151.047], [165.963, 152.094]], "leg_r": [[185.0, 148.0], [208.0, 108.163], [228.0, 73.522], [218.474, 68.022]], "leg_l": [[191.0, 150.0], [214.0, 110.163], [234.0, 75.522], [224.474, 70.022]]}, {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[185.0, 148.0], [141.5, 148.0], [100.0, 148.0]], "head": [80.437, 143.842], "nose": [[80.437, 133.842], [80.437, 126.842]], "arm_r": [[100.0, 148.0], [130.0, 148.0], [160.0, 148.0]], "arm_l": [[106.0, 150.0], [135.982, 151.047], [165.963, 152.094]], "leg_r": [[185.0, 148.0], [230.552, 141.598], [270.163, 136.031], [268.632, 125.138]], "leg_l": [[191.0, 150.0], [236.552, 143.598], [276.163, 138.031], [274.632, 127.138]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[185.0, 148.0], [141.5, 148.0], [100.0, 148.0]], "head": [80.437, 143.842], "nose": [[80.437, 133.842], [80.437, 126.842]], "arm_r": [[100.0, 148.0], [130.0, 148.0], [160.0, 148.0]], "arm_l": [[106.0, 150.0], [135.982, 151.047], [165.963, 152.094]], "leg_r": [[185.0, 148.0], [223.136, 122.277], [256.297, 99.909], [250.146, 90.79]], "leg_l": [[191.0, 150.0], [229.136, 124.277], [262.297, 101.909], [256.146, 92.79]]}}}, {"name": "Plank", "camera": 0.0, "frames": [{"order": ["arm_r", "leg_r", "spine", "arm_l", "leg_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[172.0, 114.0], [128.666, 117.791], [87.323, 121.408]], "head": [67.4, 123.151], "nose": [[58.739, 128.151], [52.677, 131.651]], "arm_r": [[93.323, 123.408], [93.323, 153.408], [63.323, 153.408]], "arm_l": [[87.323, 121.408], [87.323, 151.408], [57.323, 151.408]], "leg_r": [[178.0, 116.0], [204.385, 153.681], [244.385, 153.681], [244.385, 164.681]], "leg_l": [[172.0, 114.0], [198.385, 151.681], [238.385, 151.681], [238.385, 162.681]]}, {"order": ["arm_r", "leg_r", "spine", "arm_l", "leg_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[168.0, 137.0], [125.161, 129.446], [84.291, 122.24]], "head": [64.595, 118.767], "nose": [[55.935, 123.767], [49.873, 127.267]], "arm_r": [[90.291, 124.24], [90.291, 154.24], [60.291, 154.24]], "arm_l": [[84.291, 122.24], [84.291, 152.24], [54.291, 152.24]], "leg_r": [[174.0, 139.0], [219.301, 146.988], [258.693, 153.934], [256.783, 164.767]], "leg_l": [[168.0, 137.0], [213.301, 144.988], [252.693, 151.934], [250.783, 162.767]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_r", "leg_r", "spine", "arm_l", "leg_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[170.0, 125.5], [126.541, 123.603], [85.081, 121.792]], "head": [65.1, 120.92], "nose": [[56.44, 125.92], [50.378, 129.42]], "arm_r": [[91.081, 123.792], [91.081, 153.792], [61.081, 153.792]], "arm_l": [[85.081, 121.792], [85.081, 151.792], [55.081, 151.792]], "leg_r": [[176.0, 127.5], [214.796, 152.216], [254.644, 155.702], [253.685, 166.66]], "leg_l": [[170.0, 125.5], [208.796, 150.216], [248.644, 153.702], [247.685, 164.66]]}}}, {"name": "Reverse Crunch", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[172.0, 148.0], [128.5, 148.0], [87.0, 148.0]], "head": [67.437, 143.842], "nose": [[67.437, 133.842], [67.437, 126.842]], "arm_r": [[87.0, 148.0], [117.0, 148.0], [147.0, 148.0]], "arm_l": [[93.0, 150.0], [122.982, 151.047], [152.963, 152.094]], "leg_r": [[172.0, 148.0], [164.012, 102.699], [201.6, 116.38], [205.362, 106.043]], "leg_l": [[178.0, 150.0], [170.012, 104.699], [207.6, 118.38], [211.362, 108.043]]}, {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[166.0, 136.0], [124.618, 154.524], [82.625, 143.469]], "head": [62.637, 144.167], "nose": [[62.637, 134.167], [62.637, 127.167]], "arm_r": [[82.625, 143.469], [112.511, 146.083], [142.397, 148.698]], "arm_l": [[88.625, 145.469], [118.607, 146.516], [148.588, 147.563]], "leg_r": [[166.0, 136.0], [146.56, 94.31], [185.952, 101.256], [187.862, 90.423]], "leg_l": [[172.0, 138.0], [152.56, 96.31], [191.952, 103.256], [193.862, 92.423]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[169.0, 142.0], [126.032, 151.335], [84.408, 145.781]], "head": [64.484, 144.037], "nose": [[64.484, 134.037], [64.484, 127.037]], "arm_r": [[84.408, 145.781], [114.379, 147.089], [144.351, 148.398]], "arm_l": [[90.408, 147.781], [120.39, 148.828], [150.371, 149.875]], "leg_r": [[169.0, 142.0], [155.168, 98.129], [193.805, 108.482], [196.652, 97.857]], "leg_l": [[175.0, 144.0], [161.168, 100.129], [199.805, 110.482], [202.652, 99.857]]}}}, {"name": "Rotary", "camera": 90.0, "frames": [{"order": ["spine", "arm_l", "arm_r", "leg_l", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "far", "leg_l": "near"}, "spine": [[160.0, 122.0], [160.0, 78.5], [160.0, 37.0]], "head": [160.0, 17.0], "nose": [[170.0, 17.0], [173.709, 17.0]], "arm_r": [[155.5, 37.0], [177.096, 47.261], [199.728, 52.47]], "arm_l": [[164.5, 37.0], [186.095, 47.261], [208.727, 52.47]], "leg_r": [[155.0, 122.0], [142.321, 128.154], [138.55, 167.206], [135.701, 164.863]], "leg_l": [[165.0, 122.0], [177.679, 128.154], [181.45, 167.206], [184.299, 164.863]]}, {"order": ["spine", "arm_r", "arm_l", "leg_l", "leg_r", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[160.0, 122.0], [160.0, 78.5], [160.0, 37.0]], "head": [160.0, 17.0], "nose": [[150.0, 17.0], [146.291, 17.0]], "arm_r": [[155.5, 37.0], [133.905, 47.261], [111.273, 52.47]], "arm_l": [[164.5, 37.0], [142.904, 47.261], [120.272, 52.47]], "leg_r": [[155.0, 122.0], [142.321, 128.154], [138.55, 167.206], [135.701, 164.863]], "leg_l": [[165.0, 122.0], [177.679, 128.154], [181.45, 167.206], [184.299, 164.863]]}], "tween": {"t": 0.5, "sample": {"order": ["spine", "arm_l", "arm_r", "leg_l", "leg_r", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[160.0, 122.0], [160.0, 78.5], [160.0, 37.0]], "head": [160.0, 17.0], "nose": null, "arm_r": [[153.0, 37.0], [153.0, 47.261], [153.0, 52.47]], "arm_l": [[167.0, 37.0], [167.0, 47.261], [167.0, 52.47]], "leg_r": [[155.0, 122.0], [142.321, 128.154], [138.55, 167.206], [135.701, 164.863]], "leg_l": [[165.0, 122.0], [177.679, 128.154], [181.45, 167.206], [184.299, 164.863]]}}}, {"name": "Seated Row", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[140.0, 122.0], [142.699, 78.541], [149.593, 37.572]], "head": [153.066, 17.876], "nose": [[163.028, 17.005], [170.001, 16.395]], "arm_r": [[149.593, 37.572], [170.108, 59.462], [200.0, 62.0]], "arm_l": [[155.593, 39.572], [174.009, 63.254], [204.0, 64.0]], "leg_r": [[140.0, 122.0], [183.885, 108.212], [188.0, 148.0], [198.942, 146.868]], "leg_l": [[146.0, 124.0], [189.512, 109.077], [192.0, 149.0], [202.979, 148.316]]}, {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[140.0, 122.0], [142.699, 78.541], [149.593, 37.572]], "head": [153.066, 17.876], "nose": [[163.028, 17.005], [170.001, 16.395]], "arm_r": [[149.593, 37.572], [130.28, 60.529], [158.0, 72.0]], "arm_l": [[155.593, 39.572], [134.847, 61.243], [162.0, 74.0]], "leg_r": [[140.0, 122.0], [183.885, 108.212], [188.0, 148.0], [198.942, 146.868]], "leg_l": [[146.0, 124.0], [189.512, 109.077], [192.0, 149.0], [202.979, 148.316]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[140.0, 122.0], [142.699, 78.541], [149.593, 37.572]], "head": [153.066, 17.876], "nose": [[163.028, 17.005], [170.001, 16.395]], "arm_r": [[149.593, 37.572], [149.005, 67.567], [179.0, 67.0]], "arm_l": [[155.593, 39.572], [153.004, 69.46], [183.0, 69.0]], "leg_r": [[140.0, 122.0], [183.885, 108.212], [188.0, 148.0], [198.942, 146.868]], "leg_l": [[146.0, 124.0], [189.512, 109.077], [192.0, 149.0], [202.979, 148.316]]}}}, {"name": "Shoulder Press", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[120.0, 130.0], [103.02, 89.766], [95.132, 48.841]], "head": [98.605, 29.145], "nose": [[108.508, 27.753], [115.44, 26.779]], "arm_r": [[95.132, 48.841], [110.132, 74.822], [110.132, 44.822]], "arm_l": [[101.132, 50.841], [116.132, 76.822], [116.132, 46.822]], "leg_r": [[120.0, 130.0], [161.917, 111.054], [164.0, 151.0], [174.985, 150.427]], "leg_l": [[126.0, 132.0], [167.427, 112.004], [168.0, 152.0], [178.999, 151.842]]}, {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[120.0, 130.0], [103.02, 89.766], [95.132, 48.841]], "head": [98.605, 29.145], "nose": [[108.508, 27.753], [115.44, 26.779]], "arm_r": [[95.132, 48.841], [112.766, 24.57], [137.036, 6.937]], "arm_l": [[101.132, 50.841], [118.766, 26.57], [143.036, 8.937]], "leg_r": [[120.0, 130.0], [161.917, 111.054], [164.0, 151.0], [174.985, 150.427]], "leg_l": [[126.0, 132.0], [167.427, 112.004], [168.0, 152.0], [178.999, 151.842]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[120.0, 130.0], [103.02, 89.766], [95.132, 48.841]], "head": [98.605, 29.145], "nose": [[108.508, 27.753], [115.44, 26.779]], "arm_r": [[95.132, 48.841], [125.091, 50.411], [138.711, 23.681]], "arm_l": [[101.132, 50.841], [131.091, 52.411], [144.711, 25.681]], "leg_r": [[120.0, 130.0], [161.917, 111.054], [164.0, 151.0], [174.985, 150.427]], "leg_l": [[126.0, 132.0], [167.427, 112.004], [168.0, 152.0], [178.999, 151.842]]}}}, {"name": "Side Plank", "camera": 0.0, "frames": [{"order": ["arm_r", "leg_r", "spine", "arm_l", "leg_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[174.0, 150.0], [132.629, 136.558], [93.16, 123.734]], "head": [74.139, 117.553], "nose": [[64.177, 116.682], [57.204, 116.072]], "arm_r": [[99.16, 125.734], [127.351, 135.994], [156.329, 143.759]], "arm_l": [[93.16, 123.734], [89.959, 153.562], [60.0, 152.0]], "leg_r": [[180.0, 152.0], [225.993, 152.803], [265.987, 153.501], [265.795, 164.499]], "leg_l": [[174.0, 150.0], [219.993, 150.803], [259.987, 151.501], [259.795, 162.499]]}, {"order": ["arm_r", "leg_r", "spine", "arm_l", "leg_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[174.0, 137.0], [131.161, 129.446], [90.291, 122.24]], "head": [70.595, 118.767], "nose": [[60.595, 118.767], [53.595, 118.767]], "arm_r": [[96.291, 124.24], [101.501, 94.696], [106.71, 65.151]], "arm_l": [[90.291, 122.24], [89.999, 152.238], [60.0, 152.0]], "leg_r": [[180.0, 139.0], [225.301, 146.988], [264.693, 153.934], [262.783, 164.767]], "leg_l": [[174.0, 137.0], [219.301, 144.988], [258.693, 151.934], [256.783, 162.767]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_r", "leg_r", "spine", "arm_l", "leg_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[174.0, 143.5], [131.792, 132.976], [91.525, 122.937]], "head": [72.119, 118.098], "nose": [[62.128, 117.662], [55.135, 117.357]], "arm_r": [[97.525, 124.937], [123.506, 109.937], [148.807, 93.818]], "arm_l": [[91.525, 122.937], [89.987, 152.897], [60.0, 152.0]], "leg_r": [[180.0, 145.5], [225.788, 149.909], [265.604, 153.743], [264.55, 164.692]], "leg_l": [[174.0, 143.5], [219.788, 147.909], [259.604, 151.743], [258.55, 162.692]]}}}, {"name": "Tricep Press", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[118.0, 124.0], [109.722, 81.276], [104.688, 40.062]], "head": [106.083, 20.111], "nose": [[116.028, 19.065], [122.99, 18.334]], "arm_r": [[104.688, 40.062], [94.678, 68.343], [124.0, 62.0]], "arm_l": [[110.688, 42.062], [98.504, 69.477], [128.0, 64.0]], "leg_r": [[118.0, 124.0], [162.267, 111.494], [156.0, 151.0], [166.864, 152.724]], "leg_l": [[124.0, 126.0], [168.072, 112.823], [160.0, 152.0], [170.774, 154.22]]}, {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[118.0, 124.0], [109.722, 81.276], [104.688, 40.062]], "head": [106.083, 20.111], "nose": [[116.028, 19.065], [122.99, 18.334]], "arm_r": [[104.688, 40.062], [109.666, 69.646], [124.0, 96.0]], "arm_l": [[110.688, 42.062], [113.094, 71.965], [128.0, 98.0]], "leg_r": [[118.0, 124.0], [162.267, 111.494], [156.0, 151.0], [166.864, 152.724]], "leg_l": [[124.0, 126.0], [168.072, 112.823], [160.0, 152.0], [170.774, 154.22]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "arm_r", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[118.0, 124.0], [109.722, 81.276], [104.688, 40.062]], "head": [106.083, 20.111], "nose": [[116.028, 19.065], [122.99, 18.334]], "arm_r": [[104.688, 40.062], [95.816, 68.72], [124.0, 79.0]], "arm_l": [[110.688, 42.062], [100.046, 70.111], [128.0, 81.0]], "leg_r": [[118.0, 124.0], [162.267, 111.494], [156.0, 151.0], [166.864, 152.724]], "leg_l": [[124.0, 126.0], [168.072, 112.823], [160.0, 152.0], [170.774, 154.22]]}}}]} +{"profile": "neutral", "exercises": [{"name": "Abdominal", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[128.0, 126.0], [123.501, 82.657], [125.0, 41.105]], "head": [127.784, 21.299], "nose": [[137.687, 22.691], [144.618, 23.665]], "arm_r": [[125.0, 41.105], [153.596, 32.033], [155.0, 62.0]], "arm_l": [[131.0, 43.105], [159.596, 34.033], [161.0, 64.0]], "leg_r": [[128.0, 126.0], [171.174, 110.126], [168.0, 150.0], [178.965, 150.873]], "leg_l": [[134.0, 128.0], [176.436, 110.247], [172.0, 150.0], [182.932, 151.22]]}, {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[128.0, 126.0], [123.113, 75.978], [167.641, 56.656]], "head": [186.184, 49.164], "nose": [[193.616, 55.855], [198.818, 60.539]], "arm_r": [[167.641, 56.656], [195.9, 46.586], [190.0, 76.0]], "arm_l": [[173.641, 58.656], [201.9, 48.586], [196.0, 78.0]], "leg_r": [[128.0, 126.0], [171.174, 110.126], [168.0, 150.0], [178.965, 150.873]], "leg_l": [[134.0, 128.0], [176.436, 110.247], [172.0, 150.0], [182.932, 151.22]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[128.0, 126.0], [122.501, 80.621], [148.0, 44.994]], "head": [160.314, 29.234], "nose": [[169.377, 33.46], [175.721, 36.418]], "arm_r": [[148.0, 44.994], [177.477, 39.416], [172.5, 69.0]], "arm_l": [[154.0, 46.994], [183.477, 41.416], [178.5, 71.0]], "leg_r": [[128.0, 126.0], [171.174, 110.126], [168.0, 150.0], [178.965, 150.873]], "leg_l": [[134.0, 128.0], [176.436, 110.247], [172.0, 150.0], [182.932, 151.22]]}}}, {"name": "Abductor", "camera": 90.0, "frames": [{"order": ["spine", "arm_l", "arm_r", "leg_l", "leg_r", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[160.0, 116.0], [160.0, 72.5], [160.0, 31.0]], "head": [160.0, 11.0], "nose": null, "arm_r": [[149.0, 31.0], [139.729, 59.098], [131.328, 82.362]], "arm_l": [[171.0, 31.0], [180.271, 59.098], [188.672, 82.362]], "leg_r": [[153.0, 116.0], [147.394, 125.493], [145.105, 163.914], [143.922, 160.867]], "leg_l": [[167.0, 116.0], [172.606, 125.493], [174.895, 163.914], [176.078, 160.867]]}, {"order": ["spine", "arm_l", "arm_r", "leg_l", "leg_r", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[160.0, 116.0], [160.0, 72.5], [160.0, 31.0]], "head": [160.0, 11.0], "nose": null, "arm_r": [[149.0, 31.0], [139.729, 59.098], [131.328, 82.362]], "arm_l": [[171.0, 31.0], [180.271, 59.098], [188.672, 82.362]], "leg_r": [[153.0, 116.0], [130.0, 124.283], [120.611, 162.21], [115.754, 158.907]], "leg_l": [[167.0, 116.0], [190.0, 124.283], [199.389, 162.21], [204.246, 158.907]]}], "tween": {"t": 0.5, "sample": {"order": ["spine", "arm_l", "arm_r", "leg_l", "leg_r", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[160.0, 116.0], [160.0, 72.5], [160.0, 31.0]], "head": [160.0, 11.0], "nose": null, "arm_r": [[149.0, 31.0], [139.729, 59.098], [131.328, 82.362]], "arm_l": [[171.0, 31.0], [180.271, 59.098], [188.672, 82.362]], "leg_r": [[153.0, 116.0], [138.404, 125.07], [132.445, 163.318], [129.364, 160.182]], "leg_l": [[167.0, 116.0], [181.596, 125.07], [187.555, 163.318], [190.636, 160.182]]}}}, {"name": "Adductor", "camera": 90.0, "frames": [{"order": ["spine", "arm_l", "arm_r", "leg_l", "leg_r", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[160.0, 116.0], [160.0, 72.5], [160.0, 31.0]], "head": [160.0, 11.0], "nose": null, "arm_r": [[149.0, 31.0], [139.729, 59.098], [131.328, 82.362]], "arm_l": [[171.0, 31.0], [180.271, 59.098], [188.672, 82.362]], "leg_r": [[153.0, 116.0], [130.0, 124.283], [120.611, 162.21], [115.754, 158.907]], "leg_l": [[167.0, 116.0], [190.0, 124.283], [199.389, 162.21], [204.246, 158.907]]}, {"order": ["spine", "arm_l", "arm_r", "leg_l", "leg_r", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[160.0, 116.0], [160.0, 72.5], [160.0, 31.0]], "head": [160.0, 11.0], "nose": null, "arm_r": [[149.0, 31.0], [139.729, 59.098], [131.328, 82.362]], "arm_l": [[171.0, 31.0], [180.271, 59.098], [188.672, 82.362]], "leg_r": [[153.0, 116.0], [147.394, 125.493], [145.105, 163.914], [143.922, 160.867]], "leg_l": [[167.0, 116.0], [172.606, 125.493], [174.895, 163.914], [176.078, 160.867]]}], "tween": {"t": 0.5, "sample": {"order": ["spine", "arm_l", "arm_r", "leg_l", "leg_r", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[160.0, 116.0], [160.0, 72.5], [160.0, 31.0]], "head": [160.0, 11.0], "nose": null, "arm_r": [[149.0, 31.0], [139.729, 59.098], [131.328, 82.362]], "arm_l": [[171.0, 31.0], [180.271, 59.098], [188.672, 82.362]], "leg_r": [[153.0, 116.0], [138.404, 125.07], [132.445, 163.318], [129.364, 160.182]], "leg_l": [[167.0, 116.0], [181.596, 125.07], [187.555, 163.318], [190.636, 160.182]]}}}, {"name": "Arm Curl", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[130.0, 124.0], [130.786, 80.488], [134.43, 39.129]], "head": [137.214, 19.323], "nose": [[146.724, 22.413], [153.382, 24.576]], "arm_r": [[134.43, 39.129], [159.005, 56.336], [174.903, 81.777]], "arm_l": [[140.43, 41.129], [165.005, 58.336], [180.903, 83.777]], "leg_r": [[130.0, 124.0], [173.836, 110.059], [176.0, 150.0], [186.984, 149.405]], "leg_l": [[136.0, 126.0], [179.487, 111.003], [180.0, 151.0], [190.999, 150.859]]}, {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[130.0, 124.0], [130.786, 80.488], [134.43, 39.129]], "head": [137.214, 19.323], "nose": [[146.724, 22.413], [153.382, 24.576]], "arm_r": [[134.43, 39.129], [159.005, 56.336], [178.289, 33.354]], "arm_l": [[140.43, 41.129], [165.005, 58.336], [184.289, 35.354]], "leg_r": [[130.0, 124.0], [173.836, 110.059], [176.0, 150.0], [186.984, 149.405]], "leg_l": [[136.0, 126.0], [179.487, 111.003], [180.0, 151.0], [190.999, 150.859]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[130.0, 124.0], [130.786, 80.488], [134.43, 39.129]], "head": [137.214, 19.323], "nose": [[146.724, 22.413], [153.382, 24.576]], "arm_r": [[134.43, 39.129], [159.005, 56.336], [188.932, 58.428]], "arm_l": [[140.43, 41.129], [165.005, 58.336], [194.932, 60.428]], "leg_r": [[130.0, 124.0], [173.836, 110.059], [176.0, 150.0], [186.984, 149.405]], "leg_l": [[136.0, 126.0], [179.487, 111.003], [180.0, 151.0], [190.999, 150.859]]}}}, {"name": "Bird Dog", "camera": 0.0, "frames": [{"order": ["arm_r", "leg_r", "spine", "leg_l", "arm_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[190.0, 106.0], [147.036, 99.195], [106.046, 92.703]], "head": [86.196, 95.14], "nose": [[77.132, 99.367], [70.788, 102.325]], "arm_r": [[112.046, 94.703], [116.072, 124.432], [111.0, 154.0]], "arm_l": [[106.046, 92.703], [110.072, 122.432], [105.0, 152.0]], "leg_r": [[196.0, 108.0], [201.606, 153.657], [241.606, 153.657], [250.617, 159.966]], "leg_l": [[190.0, 106.0], [195.606, 151.657], [235.606, 151.657], [244.617, 157.966]]}, {"order": ["arm_r", "leg_r", "spine", "leg_l", "arm_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[190.0, 106.0], [147.036, 99.195], [106.046, 92.703]], "head": [86.196, 95.14], "nose": [[76.536, 97.729], [69.775, 99.54]], "arm_r": [[112.046, 94.703], [116.072, 124.432], [111.0, 154.0]], "arm_l": [[106.046, 92.703], [77.681, 82.936], [49.315, 73.169]], "leg_r": [[196.0, 108.0], [240.433, 96.094], [279.07, 85.742], [286.14, 94.168]], "leg_l": [[190.0, 106.0], [195.606, 151.657], [235.606, 151.657], [244.617, 157.966]]}, {"order": ["arm_r", "leg_r", "spine", "leg_l", "arm_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[190.0, 106.0], [147.036, 99.195], [106.046, 92.703]], "head": [86.196, 95.14], "nose": [[77.132, 99.367], [70.788, 102.325]], "arm_r": [[112.046, 94.703], [116.072, 124.432], [111.0, 154.0]], "arm_l": [[106.046, 92.703], [110.072, 122.432], [105.0, 152.0]], "leg_r": [[196.0, 108.0], [201.606, 153.657], [241.606, 153.657], [250.617, 159.966]], "leg_l": [[190.0, 106.0], [195.606, 151.657], [235.606, 151.657], [244.617, 157.966]]}, {"order": ["arm_r", "leg_r", "spine", "leg_l", "arm_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[190.0, 106.0], [147.036, 99.195], [106.046, 92.703]], "head": [86.196, 95.14], "nose": [[76.536, 97.729], [69.775, 99.54]], "arm_r": [[112.046, 94.703], [83.681, 84.936], [55.315, 75.169]], "arm_l": [[106.046, 92.703], [110.072, 122.432], [105.0, 152.0]], "leg_r": [[196.0, 108.0], [201.606, 153.657], [241.606, 153.657], [250.617, 159.966]], "leg_l": [[190.0, 106.0], [234.433, 94.094], [273.07, 83.742], [280.14, 92.168]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_r", "leg_r", "spine", "leg_l", "arm_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[190.0, 106.0], [147.036, 99.195], [106.046, 92.703]], "head": [86.196, 95.14], "nose": [[76.799, 98.561], [70.221, 100.955]], "arm_r": [[112.046, 94.703], [116.072, 124.432], [111.0, 154.0]], "arm_l": [[106.046, 92.703], [82.85, 111.727], [57.036, 127.013]], "leg_r": [[196.0, 108.0], [234.136, 133.723], [273.794, 128.502], [281.904, 135.933]], "leg_l": [[190.0, 106.0], [195.606, 151.657], [235.606, 151.657], [244.617, 157.966]]}}, "orbit": [{"yaw": 37.0, "sample": {"order": ["arm_r", "arm_l", "spine", "leg_r", "leg_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[190.0, 106.0], [155.687, 99.195], [122.952, 92.703]], "head": [107.098, 95.14], "nose": [[98.462, 100.183], [93.396, 103.141]], "arm_r": [[134.364, 94.3], [123.942, 122.432], [112.562, 150.19]], "arm_l": [[116.332, 92.703], [111.24, 122.268], [105.078, 151.628]], "leg_r": [[199.005, 107.597], [203.482, 153.254], [235.427, 153.254], [242.623, 159.564]], "leg_l": [[185.787, 106.0], [190.264, 151.657], [222.21, 151.657], [229.406, 157.966]]}}, {"yaw": 180.0, "sample": {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[190.0, 106.0], [232.964, 99.195], [273.954, 92.703]], "head": [293.804, 95.14], "nose": [[302.868, 99.367], [309.212, 102.325]], "arm_r": [[273.954, 92.703], [246.072, 103.776], [217.953, 114.232]], "arm_l": [[279.954, 94.703], [251.619, 104.559], [223.076, 113.795]], "leg_r": [[190.0, 106.0], [184.394, 151.657], [144.394, 151.657], [135.383, 157.966]], "leg_l": [[196.0, 108.0], [190.394, 153.657], [150.394, 153.657], [141.383, 159.966]]}}]}, {"name": "Calfs", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[140.0, 118.0], [130.995, 75.365], [128.143, 33.883]], "head": [131.616, 14.187], "nose": [[141.464, 15.924], [148.358, 17.139]], "arm_r": [[128.143, 33.883], [155.658, 45.839], [166.0, 74.0]], "arm_l": [[134.143, 35.883], [161.969, 47.095], [170.0, 76.0]], "leg_r": [[140.0, 118.0], [185.998, 117.604], [212.0, 148.0], [218.69, 139.268]], "leg_l": [[146.0, 120.0], [191.958, 118.032], [216.0, 150.0], [223.225, 141.705]]}, {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[140.0, 118.0], [130.995, 75.365], [128.143, 33.883]], "head": [131.616, 14.187], "nose": [[141.464, 15.924], [148.358, 17.139]], "arm_r": [[128.143, 33.883], [155.658, 45.839], [166.0, 74.0]], "arm_l": [[134.143, 35.883], [161.969, 47.095], [170.0, 76.0]], "leg_r": [[140.0, 118.0], [185.175, 109.328], [212.0, 139.0], [222.04, 134.506]], "leg_l": [[146.0, 120.0], [190.872, 109.878], [216.0, 141.0], [226.275, 137.073]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[140.0, 118.0], [130.995, 75.365], [128.143, 33.883]], "head": [131.616, 14.187], "nose": [[141.464, 15.924], [148.358, 17.139]], "arm_r": [[128.143, 33.883], [155.658, 45.839], [166.0, 74.0]], "arm_l": [[134.143, 35.883], [161.969, 47.095], [170.0, 76.0]], "leg_r": [[140.0, 118.0], [185.76, 113.309], [212.0, 143.5], [220.669, 136.728]], "leg_l": [[146.0, 120.0], [191.583, 113.817], [216.0, 145.5], [225.052, 139.25]]}}}, {"name": "Cat-Cow", "camera": 0.0, "frames": [{"order": ["arm_r", "leg_r", "spine", "leg_l", "arm_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[190.0, 106.0], [145.16, 123.852], [109.354, 94.234]], "head": [89.43, 95.978], "nose": [[79.817, 93.221], [73.088, 91.292]], "arm_r": [[115.354, 96.234], [120.968, 125.704], [111.0, 154.0]], "arm_l": [[109.354, 94.234], [114.968, 123.704], [105.0, 152.0]], "leg_r": [[196.0, 108.0], [201.606, 153.657], [241.606, 153.657], [250.617, 159.966]], "leg_l": [[190.0, 106.0], [195.606, 151.657], [235.606, 151.657], [244.617, 157.966]]}, {"order": ["arm_r", "leg_r", "spine", "leg_l", "arm_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[190.0, 106.0], [152.084, 74.375], [109.947, 96.56]], "head": [93.564, 108.031], "nose": [[86.492, 115.102], [81.543, 120.052]], "arm_r": [[115.947, 98.56], [124.631, 127.275], [111.0, 154.0]], "arm_l": [[109.947, 96.56], [118.631, 125.275], [105.0, 152.0]], "leg_r": [[196.0, 108.0], [201.606, 153.657], [241.606, 153.657], [250.617, 159.966]], "leg_l": [[190.0, 106.0], [195.606, 151.657], [235.606, 151.657], [244.617, 157.966]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_r", "leg_r", "spine", "leg_l", "arm_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[190.0, 106.0], [147.073, 98.844], [105.742, 94.89]], "head": [86.948, 101.73], "nose": [[77.267, 104.234], [70.49, 105.987]], "arm_r": [[111.742, 96.89], [120.561, 125.564], [111.0, 154.0]], "arm_l": [[105.742, 94.89], [114.561, 123.564], [105.0, 152.0]], "leg_r": [[196.0, 108.0], [201.606, 153.657], [241.606, 153.657], [250.617, 159.966]], "leg_l": [[190.0, 106.0], [195.606, 151.657], [235.606, 151.657], [244.617, 157.966]]}}}, {"name": "Chest Press", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[116.0, 122.0], [104.043, 80.097], [98.304, 38.915]], "head": [100.395, 19.025], "nose": [[110.357, 18.153], [117.33, 17.543]], "arm_r": [[98.304, 38.915], [93.095, 68.46], [116.076, 49.176]], "arm_l": [[104.304, 40.915], [99.095, 70.46], [122.076, 51.176]], "leg_r": [[116.0, 122.0], [160.688, 111.09], [158.0, 151.0], [168.975, 151.739]], "leg_l": [[122.0, 124.0], [166.474, 112.251], [162.0, 152.0], [172.931, 153.23]]}, {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[116.0, 122.0], [104.043, 80.097], [98.304, 38.915]], "head": [100.395, 19.025], "nose": [[110.357, 18.153], [117.33, 17.543]], "arm_r": [[98.304, 38.915], [128.14, 42.051], [157.249, 49.309]], "arm_l": [[104.304, 40.915], [134.14, 44.051], [163.249, 51.309]], "leg_r": [[116.0, 122.0], [160.688, 111.09], [158.0, 151.0], [168.975, 151.739]], "leg_l": [[122.0, 124.0], [166.474, 112.251], [162.0, 152.0], [172.931, 153.23]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[116.0, 122.0], [104.043, 80.097], [98.304, 38.915]], "head": [100.395, 19.025], "nose": [[110.357, 18.153], [117.33, 17.543]], "arm_r": [[98.304, 38.915], [116.359, 62.874], [145.59, 56.126]], "arm_l": [[104.304, 40.915], [122.359, 64.874], [151.59, 58.126]], "leg_r": [[116.0, 122.0], [160.688, 111.09], [158.0, 151.0], [168.975, 151.739]], "leg_l": [[122.0, 124.0], [166.474, 112.251], [162.0, 152.0], [172.931, 153.23]]}}}, {"name": "Dead Bug", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[185.0, 148.0], [141.5, 148.0], [100.0, 148.0]], "head": [80.437, 143.842], "nose": [[80.437, 133.842], [80.437, 126.842]], "arm_r": [[100.0, 148.0], [100.0, 118.0], [100.0, 88.0]], "arm_l": [[106.0, 150.0], [106.0, 120.0], [106.0, 90.0]], "leg_r": [[185.0, 148.0], [205.165, 106.655], [244.557, 113.601], [246.468, 102.769]], "leg_l": [[191.0, 150.0], [211.165, 108.655], [250.557, 115.601], [252.468, 104.769]]}, {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[185.0, 148.0], [141.5, 148.0], [100.0, 148.0]], "head": [80.437, 143.842], "nose": [[80.437, 133.842], [80.437, 126.842]], "arm_r": [[100.0, 148.0], [78.787, 126.787], [57.574, 105.574]], "arm_l": [[106.0, 150.0], [106.0, 120.0], [106.0, 90.0]], "leg_r": [[185.0, 148.0], [205.165, 106.655], [244.557, 113.601], [246.468, 102.769]], "leg_l": [[191.0, 150.0], [235.218, 137.321], [273.669, 126.295], [270.636, 115.721]]}, {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[185.0, 148.0], [141.5, 148.0], [100.0, 148.0]], "head": [80.437, 143.842], "nose": [[80.437, 133.842], [80.437, 126.842]], "arm_r": [[100.0, 148.0], [100.0, 118.0], [100.0, 88.0]], "arm_l": [[106.0, 150.0], [106.0, 120.0], [106.0, 90.0]], "leg_r": [[185.0, 148.0], [205.165, 106.655], [244.557, 113.601], [246.468, 102.769]], "leg_l": [[191.0, 150.0], [211.165, 108.655], [250.557, 115.601], [252.468, 104.769]]}, {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[185.0, 148.0], [141.5, 148.0], [100.0, 148.0]], "head": [80.437, 143.842], "nose": [[80.437, 133.842], [80.437, 126.842]], "arm_r": [[100.0, 148.0], [100.0, 118.0], [100.0, 88.0]], "arm_l": [[106.0, 150.0], [84.787, 128.787], [63.574, 107.574]], "leg_r": [[185.0, 148.0], [229.218, 135.321], [267.669, 124.295], [264.636, 113.721]], "leg_l": [[191.0, 150.0], [211.165, 108.655], [250.557, 115.601], [252.468, 104.769]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[185.0, 148.0], [141.5, 148.0], [100.0, 148.0]], "head": [80.437, 143.842], "nose": [[80.437, 133.842], [80.437, 126.842]], "arm_r": [[100.0, 148.0], [88.519, 120.284], [77.039, 92.567]], "arm_l": [[106.0, 150.0], [106.0, 120.0], [106.0, 90.0]], "leg_r": [[185.0, 148.0], [205.165, 106.655], [244.557, 113.601], [246.468, 102.769]], "leg_l": [[191.0, 150.0], [226.238, 120.432], [266.183, 118.338], [265.608, 107.353]]}}}, {"name": "Hollow Body Hold", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[185.0, 148.0], [141.5, 148.0], [100.0, 148.0]], "head": [80.437, 143.842], "nose": [[80.437, 133.842], [80.437, 126.842]], "arm_r": [[100.0, 148.0], [70.0, 148.0], [40.0, 148.0]], "arm_l": [[106.0, 150.0], [136.0, 150.0], [166.0, 150.0]], "leg_r": [[185.0, 148.0], [231.0, 148.0], [271.0, 148.0], [271.0, 137.0]], "leg_l": [[191.0, 150.0], [237.0, 150.0], [277.0, 150.0], [277.0, 139.0]]}, {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[185.0, 148.0], [140.587, 148.44], [102.768, 129.14]], "head": [87.448, 116.285], "nose": [[93.875, 108.624], [98.375, 103.262]], "arm_r": [[102.768, 129.14], [75.579, 116.462], [48.39, 103.783]], "arm_l": [[108.768, 131.14], [136.959, 141.401], [165.15, 151.662]], "leg_r": [[185.0, 148.0], [229.995, 138.436], [269.121, 130.12], [266.834, 119.36]], "leg_l": [[191.0, 150.0], [235.995, 140.436], [275.121, 132.12], [272.834, 121.36]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[185.0, 148.0], [141.269, 148.271], [100.697, 138.456]], "head": [82.721, 129.689], "nose": [[86.141, 120.292], [88.535, 113.714]], "arm_r": [[100.697, 138.456], [71.408, 131.963], [42.119, 125.47]], "arm_l": [[106.697, 140.456], [136.241, 145.666], [165.785, 150.875]], "leg_r": [[185.0, 148.0], [230.748, 143.192], [270.529, 139.011], [269.379, 128.071]], "leg_l": [[191.0, 150.0], [236.748, 145.192], [276.529, 141.011], [275.379, 130.071]]}}}, {"name": "Lat Pull Down", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[150.0, 122.0], [146.624, 78.588], [147.75, 37.059]], "head": [149.493, 17.135], "nose": [[155.228, 8.944], [159.243, 3.209]], "arm_r": [[147.75, 37.059], [174.771, 24.027], [194.0, 1.0]], "arm_l": [[153.75, 39.059], [181.713, 28.194], [198.0, 3.0]], "leg_r": [[150.0, 122.0], [194.414, 110.025], [193.0, 150.0], [203.993, 150.389]], "leg_l": [[156.0, 124.0], [200.161, 111.125], [197.0, 151.0], [207.966, 151.869]]}, {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[150.0, 122.0], [146.624, 78.588], [147.75, 37.059]], "head": [149.493, 17.135], "nose": [[158.153, 12.135], [164.215, 8.635]], "arm_r": [[147.75, 37.059], [171.723, 55.094], [194.0, 35.0]], "arm_l": [[153.75, 39.059], [176.815, 58.242], [198.0, 37.0]], "leg_r": [[150.0, 122.0], [194.414, 110.025], [193.0, 150.0], [203.993, 150.389]], "leg_l": [[156.0, 124.0], [200.161, 111.125], [197.0, 151.0], [207.966, 151.869]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[150.0, 122.0], [146.624, 78.588], [147.75, 37.059]], "head": [149.493, 17.135], "nose": [[156.865, 10.379], [162.026, 5.65]], "arm_r": [[147.75, 37.059], [177.186, 42.845], [194.0, 18.0]], "arm_l": [[153.75, 39.059], [182.947, 45.95], [198.0, 20.0]], "leg_r": [[150.0, 122.0], [194.414, 110.025], [193.0, 150.0], [203.993, 150.389]], "leg_l": [[156.0, 124.0], [200.161, 111.125], [197.0, 151.0], [207.966, 151.869]]}}}, {"name": "Leg Curl", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[118.0, 116.0], [101.728, 75.576], [91.716, 35.22]], "head": [97.229, 15.995], "nose": [[106.626, 19.415], [113.204, 21.809]], "arm_r": [[91.716, 35.22], [99.481, 64.198], [114.481, 90.179]], "arm_l": [[97.716, 37.22], [105.481, 66.198], [120.481, 92.179]], "leg_r": [[118.0, 116.0], [163.301, 108.012], [203.204, 105.222], [202.436, 94.249]], "leg_l": [[124.0, 118.0], [169.301, 110.012], [209.204, 107.222], [208.436, 96.249]]}, {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[118.0, 116.0], [101.728, 75.576], [91.716, 35.22]], "head": [97.229, 15.995], "nose": [[106.626, 19.415], [113.204, 21.809]], "arm_r": [[91.716, 35.22], [99.481, 64.198], [114.481, 90.179]], "arm_l": [[97.716, 37.22], [105.481, 66.198], [120.481, 92.179]], "leg_r": [[118.0, 116.0], [163.301, 108.012], [159.815, 147.86], [170.773, 148.819]], "leg_l": [[124.0, 118.0], [169.301, 110.012], [165.815, 149.86], [176.773, 150.819]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[118.0, 116.0], [101.728, 75.576], [91.716, 35.22]], "head": [97.229, 15.995], "nose": [[106.626, 19.415], [113.204, 21.809]], "arm_r": [[91.716, 35.22], [99.481, 64.198], [114.481, 90.179]], "arm_l": [[97.716, 37.22], [105.481, 66.198], [120.481, 92.179]], "leg_r": [[118.0, 116.0], [163.301, 108.012], [191.338, 136.542], [199.183, 128.832]], "leg_l": [[124.0, 118.0], [169.301, 110.012], [197.338, 138.542], [205.183, 130.832]]}}}, {"name": "Leg Extension", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[118.0, 116.0], [101.728, 75.576], [91.716, 35.22]], "head": [97.229, 15.995], "nose": [[106.626, 19.415], [113.204, 21.809]], "arm_r": [[91.716, 35.22], [99.481, 64.198], [114.481, 90.179]], "arm_l": [[97.716, 37.22], [105.481, 66.198], [120.481, 92.179]], "leg_r": [[118.0, 116.0], [163.301, 108.012], [168.176, 147.714], [179.094, 146.373]], "leg_l": [[124.0, 118.0], [169.301, 110.012], [174.176, 149.714], [185.094, 148.373]]}, {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[118.0, 116.0], [101.728, 75.576], [91.716, 35.22]], "head": [97.229, 15.995], "nose": [[106.626, 19.415], [113.204, 21.809]], "arm_r": [[91.716, 35.22], [99.481, 64.198], [114.481, 90.179]], "arm_l": [[97.716, 37.22], [105.481, 66.198], [120.481, 92.179]], "leg_r": [[118.0, 116.0], [163.301, 108.012], [203.204, 105.222], [202.436, 94.249]], "leg_l": [[124.0, 118.0], [169.301, 110.012], [209.204, 107.222], [208.436, 96.249]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[118.0, 116.0], [101.728, 75.576], [91.716, 35.22]], "head": [97.229, 15.995], "nose": [[106.626, 19.415], [113.204, 21.809]], "arm_r": [[91.716, 35.22], [99.481, 64.198], [114.481, 90.179]], "arm_l": [[97.716, 37.22], [105.481, 66.198], [120.481, 92.179]], "leg_r": [[118.0, 116.0], [163.301, 108.012], [194.166, 133.455], [201.163, 124.967]], "leg_l": [[124.0, 118.0], [169.301, 110.012], [200.166, 135.455], [207.163, 126.967]]}}}, {"name": "Leg Press", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[140.0, 116.0], [119.592, 77.499], [105.417, 38.41]], "head": [110.593, 19.092], "nose": [[120.252, 21.68], [127.014, 23.492]], "arm_r": [[105.417, 38.41], [113.181, 67.388], [141.372, 77.649]], "arm_l": [[111.417, 40.41], [119.181, 69.388], [147.372, 79.649]], "leg_r": [[140.0, 116.0], [157.129, 73.308], [185.0, 102.0], [192.89, 94.336]], "leg_l": [[146.0, 118.0], [161.702, 74.763], [189.0, 104.0], [197.04, 96.493]]}, {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[140.0, 116.0], [119.592, 77.499], [105.417, 38.41]], "head": [110.593, 19.092], "nose": [[120.252, 21.68], [127.014, 23.492]], "arm_r": [[105.417, 38.41], [113.181, 67.388], [141.372, 77.649]], "arm_l": [[111.417, 40.41], [119.181, 69.388], [147.372, 79.649]], "leg_r": [[140.0, 116.0], [180.564, 94.307], [220.0, 101.0], [221.84, 90.155]], "leg_l": [[146.0, 118.0], [185.086, 93.745], [224.0, 103.0], [226.545, 92.299]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[140.0, 116.0], [119.592, 77.499], [105.417, 38.41]], "head": [110.593, 19.092], "nose": [[120.252, 21.68], [127.014, 23.492]], "arm_r": [[105.417, 38.41], [113.181, 67.388], [141.372, 77.649]], "arm_l": [[111.417, 40.41], [119.181, 69.388], [147.372, 79.649]], "leg_r": [[140.0, 116.0], [168.724, 80.071], [202.5, 101.5], [208.393, 92.212]], "leg_l": [[146.0, 118.0], [173.396, 81.048], [206.5, 103.5], [212.674, 94.396]]}}}, {"name": "Leg Raises", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[185.0, 148.0], [141.5, 148.0], [100.0, 148.0]], "head": [80.437, 143.842], "nose": [[80.437, 133.842], [80.437, 126.842]], "arm_r": [[100.0, 148.0], [130.0, 148.0], [160.0, 148.0]], "arm_l": [[106.0, 150.0], [135.982, 151.047], [165.963, 152.094]], "leg_r": [[185.0, 148.0], [208.0, 108.163], [228.0, 73.522], [218.474, 68.022]], "leg_l": [[191.0, 150.0], [214.0, 110.163], [234.0, 75.522], [224.474, 70.022]]}, {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[185.0, 148.0], [141.5, 148.0], [100.0, 148.0]], "head": [80.437, 143.842], "nose": [[80.437, 133.842], [80.437, 126.842]], "arm_r": [[100.0, 148.0], [130.0, 148.0], [160.0, 148.0]], "arm_l": [[106.0, 150.0], [135.982, 151.047], [165.963, 152.094]], "leg_r": [[185.0, 148.0], [230.552, 141.598], [270.163, 136.031], [268.632, 125.138]], "leg_l": [[191.0, 150.0], [236.552, 143.598], [276.163, 138.031], [274.632, 127.138]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[185.0, 148.0], [141.5, 148.0], [100.0, 148.0]], "head": [80.437, 143.842], "nose": [[80.437, 133.842], [80.437, 126.842]], "arm_r": [[100.0, 148.0], [130.0, 148.0], [160.0, 148.0]], "arm_l": [[106.0, 150.0], [135.982, 151.047], [165.963, 152.094]], "leg_r": [[185.0, 148.0], [223.136, 122.277], [256.297, 99.909], [250.146, 90.79]], "leg_l": [[191.0, 150.0], [229.136, 124.277], [262.297, 101.909], [256.146, 92.79]]}}}, {"name": "Plank", "camera": 0.0, "frames": [{"order": ["arm_r", "leg_r", "spine", "leg_l", "arm_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[172.0, 114.0], [128.666, 117.791], [87.323, 121.408]], "head": [67.4, 123.151], "nose": [[58.739, 128.151], [52.677, 131.651]], "arm_r": [[93.323, 123.408], [93.323, 153.408], [63.323, 153.408]], "arm_l": [[87.323, 121.408], [87.323, 151.408], [57.323, 151.408]], "leg_r": [[178.0, 116.0], [204.385, 153.681], [244.385, 153.681], [244.385, 164.681]], "leg_l": [[172.0, 114.0], [198.385, 151.681], [238.385, 151.681], [238.385, 162.681]]}, {"order": ["arm_r", "leg_r", "spine", "leg_l", "arm_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[168.0, 137.0], [125.161, 129.446], [84.291, 122.24]], "head": [64.595, 118.767], "nose": [[55.935, 123.767], [49.873, 127.267]], "arm_r": [[90.291, 124.24], [90.291, 154.24], [60.291, 154.24]], "arm_l": [[84.291, 122.24], [84.291, 152.24], [54.291, 152.24]], "leg_r": [[174.0, 139.0], [219.301, 146.988], [258.693, 153.934], [256.783, 164.767]], "leg_l": [[168.0, 137.0], [213.301, 144.988], [252.693, 151.934], [250.783, 162.767]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_r", "leg_r", "spine", "leg_l", "arm_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[170.0, 125.5], [126.541, 123.603], [85.081, 121.792]], "head": [65.1, 120.92], "nose": [[56.44, 125.92], [50.378, 129.42]], "arm_r": [[91.081, 123.792], [91.081, 153.792], [61.081, 153.792]], "arm_l": [[85.081, 121.792], [85.081, 151.792], [55.081, 151.792]], "leg_r": [[176.0, 127.5], [214.796, 152.216], [254.644, 155.702], [253.685, 166.66]], "leg_l": [[170.0, 125.5], [208.796, 150.216], [248.644, 153.702], [247.685, 164.66]]}}}, {"name": "Reverse Crunch", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[172.0, 148.0], [128.5, 148.0], [87.0, 148.0]], "head": [67.437, 143.842], "nose": [[67.437, 133.842], [67.437, 126.842]], "arm_r": [[87.0, 148.0], [117.0, 148.0], [147.0, 148.0]], "arm_l": [[93.0, 150.0], [122.982, 151.047], [152.963, 152.094]], "leg_r": [[172.0, 148.0], [164.012, 102.699], [201.6, 116.38], [205.362, 106.043]], "leg_l": [[178.0, 150.0], [170.012, 104.699], [207.6, 118.38], [211.362, 108.043]]}, {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[166.0, 136.0], [124.618, 154.524], [82.625, 143.469]], "head": [62.637, 144.167], "nose": [[62.637, 134.167], [62.637, 127.167]], "arm_r": [[82.625, 143.469], [112.511, 146.083], [142.397, 148.698]], "arm_l": [[88.625, 145.469], [118.607, 146.516], [148.588, 147.563]], "leg_r": [[166.0, 136.0], [146.56, 94.31], [185.952, 101.256], [187.862, 90.423]], "leg_l": [[172.0, 138.0], [152.56, 96.31], [191.952, 103.256], [193.862, 92.423]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[169.0, 142.0], [126.032, 151.335], [84.408, 145.781]], "head": [64.484, 144.037], "nose": [[64.484, 134.037], [64.484, 127.037]], "arm_r": [[84.408, 145.781], [114.379, 147.089], [144.351, 148.398]], "arm_l": [[90.408, 147.781], [120.39, 148.828], [150.371, 149.875]], "leg_r": [[169.0, 142.0], [155.168, 98.129], [193.805, 108.482], [196.652, 97.857]], "leg_l": [[175.0, 144.0], [161.168, 100.129], [199.805, 110.482], [202.652, 99.857]]}}}, {"name": "Rotary", "camera": 90.0, "frames": [{"order": ["spine", "arm_l", "arm_r", "leg_l", "leg_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "far", "leg_l": "near"}, "spine": [[160.0, 122.0], [160.0, 78.5], [160.0, 37.0]], "head": [160.0, 17.0], "nose": [[170.0, 17.0], [173.709, 17.0]], "arm_r": [[152.929, 37.0], [174.525, 47.261], [197.157, 52.47]], "arm_l": [[167.071, 37.0], [188.666, 47.261], [211.298, 52.47]], "leg_r": [[153.0, 122.0], [140.321, 128.154], [136.55, 167.206], [133.701, 164.863]], "leg_l": [[167.0, 122.0], [179.679, 128.154], [183.45, 167.206], [186.299, 164.863]]}, {"order": ["spine", "arm_r", "arm_l", "leg_l", "leg_r", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[160.0, 122.0], [160.0, 78.5], [160.0, 37.0]], "head": [160.0, 17.0], "nose": [[150.0, 17.0], [146.291, 17.0]], "arm_r": [[152.929, 37.0], [131.334, 47.261], [108.702, 52.47]], "arm_l": [[167.071, 37.0], [145.475, 47.261], [122.843, 52.47]], "leg_r": [[153.0, 122.0], [140.321, 128.154], [136.55, 167.206], [133.701, 164.863]], "leg_l": [[167.0, 122.0], [179.679, 128.154], [183.45, 167.206], [186.299, 164.863]]}], "tween": {"t": 0.5, "sample": {"order": ["spine", "arm_l", "arm_r", "leg_l", "leg_r", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[160.0, 122.0], [160.0, 78.5], [160.0, 37.0]], "head": [160.0, 17.0], "nose": null, "arm_r": [[149.0, 37.0], [149.0, 47.261], [149.0, 52.47]], "arm_l": [[171.0, 37.0], [171.0, 47.261], [171.0, 52.47]], "leg_r": [[153.0, 122.0], [140.321, 128.154], [136.55, 167.206], [133.701, 164.863]], "leg_l": [[167.0, 122.0], [179.679, 128.154], [183.45, 167.206], [186.299, 164.863]]}}}, {"name": "Seated Row", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[140.0, 122.0], [142.699, 78.541], [149.593, 37.572]], "head": [153.066, 17.876], "nose": [[163.028, 17.005], [170.001, 16.395]], "arm_r": [[149.593, 37.572], [170.108, 59.462], [200.0, 62.0]], "arm_l": [[155.593, 39.572], [174.009, 63.254], [204.0, 64.0]], "leg_r": [[140.0, 122.0], [183.885, 108.212], [188.0, 148.0], [198.942, 146.868]], "leg_l": [[146.0, 124.0], [189.512, 109.077], [192.0, 149.0], [202.979, 148.316]]}, {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[140.0, 122.0], [142.699, 78.541], [149.593, 37.572]], "head": [153.066, 17.876], "nose": [[163.028, 17.005], [170.001, 16.395]], "arm_r": [[149.593, 37.572], [130.28, 60.529], [158.0, 72.0]], "arm_l": [[155.593, 39.572], [134.847, 61.243], [162.0, 74.0]], "leg_r": [[140.0, 122.0], [183.885, 108.212], [188.0, 148.0], [198.942, 146.868]], "leg_l": [[146.0, 124.0], [189.512, 109.077], [192.0, 149.0], [202.979, 148.316]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[140.0, 122.0], [142.699, 78.541], [149.593, 37.572]], "head": [153.066, 17.876], "nose": [[163.028, 17.005], [170.001, 16.395]], "arm_r": [[149.593, 37.572], [149.005, 67.567], [179.0, 67.0]], "arm_l": [[155.593, 39.572], [153.004, 69.46], [183.0, 69.0]], "leg_r": [[140.0, 122.0], [183.885, 108.212], [188.0, 148.0], [198.942, 146.868]], "leg_l": [[146.0, 124.0], [189.512, 109.077], [192.0, 149.0], [202.979, 148.316]]}}}, {"name": "Shoulder Press", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[120.0, 130.0], [103.02, 89.766], [95.132, 48.841]], "head": [98.605, 29.145], "nose": [[108.508, 27.753], [115.44, 26.779]], "arm_r": [[95.132, 48.841], [110.132, 74.822], [110.132, 44.822]], "arm_l": [[101.132, 50.841], [116.132, 76.822], [116.132, 46.822]], "leg_r": [[120.0, 130.0], [161.917, 111.054], [164.0, 151.0], [174.985, 150.427]], "leg_l": [[126.0, 132.0], [167.427, 112.004], [168.0, 152.0], [178.999, 151.842]]}, {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[120.0, 130.0], [103.02, 89.766], [95.132, 48.841]], "head": [98.605, 29.145], "nose": [[108.508, 27.753], [115.44, 26.779]], "arm_r": [[95.132, 48.841], [112.766, 24.57], [137.036, 6.937]], "arm_l": [[101.132, 50.841], [118.766, 26.57], [143.036, 8.937]], "leg_r": [[120.0, 130.0], [161.917, 111.054], [164.0, 151.0], [174.985, 150.427]], "leg_l": [[126.0, 132.0], [167.427, 112.004], [168.0, 152.0], [178.999, 151.842]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[120.0, 130.0], [103.02, 89.766], [95.132, 48.841]], "head": [98.605, 29.145], "nose": [[108.508, 27.753], [115.44, 26.779]], "arm_r": [[95.132, 48.841], [125.091, 50.411], [138.711, 23.681]], "arm_l": [[101.132, 50.841], [131.091, 52.411], [144.711, 25.681]], "leg_r": [[120.0, 130.0], [161.917, 111.054], [164.0, 151.0], [174.985, 150.427]], "leg_l": [[126.0, 132.0], [167.427, 112.004], [168.0, 152.0], [178.999, 151.842]]}}}, {"name": "Side Plank", "camera": 0.0, "frames": [{"order": ["arm_r", "leg_r", "spine", "leg_l", "arm_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[174.0, 150.0], [132.629, 136.558], [93.16, 123.734]], "head": [74.139, 117.553], "nose": [[64.177, 116.682], [57.204, 116.072]], "arm_r": [[99.16, 125.734], [127.351, 135.994], [156.329, 143.759]], "arm_l": [[93.16, 123.734], [89.959, 153.562], [60.0, 152.0]], "leg_r": [[180.0, 152.0], [225.993, 152.803], [265.987, 153.501], [265.795, 164.499]], "leg_l": [[174.0, 150.0], [219.993, 150.803], [259.987, 151.501], [259.795, 162.499]]}, {"order": ["arm_r", "leg_r", "spine", "leg_l", "arm_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[174.0, 137.0], [131.161, 129.446], [90.291, 122.24]], "head": [70.595, 118.767], "nose": [[60.595, 118.767], [53.595, 118.767]], "arm_r": [[96.291, 124.24], [101.501, 94.696], [106.71, 65.151]], "arm_l": [[90.291, 122.24], [89.999, 152.238], [60.0, 152.0]], "leg_r": [[180.0, 139.0], [225.301, 146.988], [264.693, 153.934], [262.783, 164.767]], "leg_l": [[174.0, 137.0], [219.301, 144.988], [258.693, 151.934], [256.783, 162.767]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_r", "leg_r", "spine", "leg_l", "arm_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[174.0, 143.5], [131.792, 132.976], [91.525, 122.937]], "head": [72.119, 118.098], "nose": [[62.128, 117.662], [55.135, 117.357]], "arm_r": [[97.525, 124.937], [123.506, 109.937], [148.807, 93.818]], "arm_l": [[91.525, 122.937], [89.987, 152.897], [60.0, 152.0]], "leg_r": [[180.0, 145.5], [225.788, 149.909], [265.604, 153.743], [264.55, 164.692]], "leg_l": [[174.0, 143.5], [219.788, 147.909], [259.604, 151.743], [258.55, 162.692]]}}}, {"name": "Tricep Press", "camera": 0.0, "frames": [{"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[118.0, 124.0], [109.722, 81.276], [104.688, 40.062]], "head": [106.083, 20.111], "nose": [[116.028, 19.065], [122.99, 18.334]], "arm_r": [[104.688, 40.062], [94.678, 68.343], [124.0, 62.0]], "arm_l": [[110.688, 42.062], [98.504, 69.477], [128.0, 64.0]], "leg_r": [[118.0, 124.0], [162.267, 111.494], [156.0, 151.0], [166.864, 152.724]], "leg_l": [[124.0, 126.0], [168.072, 112.823], [160.0, 152.0], [170.774, 154.22]]}, {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[118.0, 124.0], [109.722, 81.276], [104.688, 40.062]], "head": [106.083, 20.111], "nose": [[116.028, 19.065], [122.99, 18.334]], "arm_r": [[104.688, 40.062], [109.666, 69.646], [124.0, 96.0]], "arm_l": [[110.688, 42.062], [113.094, 71.965], [128.0, 98.0]], "leg_r": [[118.0, 124.0], [162.267, 111.494], [156.0, 151.0], [166.864, 152.724]], "leg_l": [[124.0, 126.0], [168.072, 112.823], [160.0, 152.0], [170.774, 154.22]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_l", "leg_l", "spine", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[118.0, 124.0], [109.722, 81.276], [104.688, 40.062]], "head": [106.083, 20.111], "nose": [[116.028, 19.065], [122.99, 18.334]], "arm_r": [[104.688, 40.062], [95.816, 68.72], [124.0, 79.0]], "arm_l": [[110.688, 42.062], [100.046, 70.111], [128.0, 81.0]], "leg_r": [[118.0, 124.0], [162.267, 111.494], [156.0, 151.0], [166.864, 152.724]], "leg_l": [[124.0, 126.0], [168.072, 112.823], [160.0, 152.0], [170.774, 154.22]]}}}]}