diff --git a/CHANGELOG.md b/CHANGELOG.md index 811d183..6b9d466 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ **July 2026** +Form guides are now viewed from a slight elevation, with the floor drawn as a plane the figure stands on. + 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. diff --git a/Exercise Library/Abdominal/frames/frame-1.svg b/Exercise Library/Abdominal/frames/frame-1.svg index 05a8ef7..d866148 100644 --- a/Exercise Library/Abdominal/frames/frame-1.svg +++ b/Exercise Library/Abdominal/frames/frame-1.svg @@ -1,21 +1,21 @@ Abdominal - + - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Abdominal/frames/frame-2.svg b/Exercise Library/Abdominal/frames/frame-2.svg index 6263075..e73aebd 100644 --- a/Exercise Library/Abdominal/frames/frame-2.svg +++ b/Exercise Library/Abdominal/frames/frame-2.svg @@ -1,21 +1,21 @@ Abdominal - + - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Abdominal/preview.gif b/Exercise Library/Abdominal/preview.gif index 2ae1c6c..213838a 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 6263075..e73aebd 100644 --- a/Exercise Library/Abdominal/visual.svg +++ b/Exercise Library/Abdominal/visual.svg @@ -1,21 +1,21 @@ Abdominal - + - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Abductor/frames/frame-1.svg b/Exercise Library/Abductor/frames/frame-1.svg index e58b216..337069a 100644 --- a/Exercise Library/Abductor/frames/frame-1.svg +++ b/Exercise Library/Abductor/frames/frame-1.svg @@ -1,19 +1,19 @@ Abductor - + - + - - - - - - - - + + + + + + + + near diff --git a/Exercise Library/Abductor/frames/frame-2.svg b/Exercise Library/Abductor/frames/frame-2.svg index da2b2be..5e57c73 100644 --- a/Exercise Library/Abductor/frames/frame-2.svg +++ b/Exercise Library/Abductor/frames/frame-2.svg @@ -1,19 +1,19 @@ Abductor - + - + - - - - - - - - + + + + + + + + near diff --git a/Exercise Library/Abductor/preview.gif b/Exercise Library/Abductor/preview.gif index a3e186c..9fb7b18 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 da2b2be..5e57c73 100644 --- a/Exercise Library/Abductor/visual.svg +++ b/Exercise Library/Abductor/visual.svg @@ -1,19 +1,19 @@ Abductor - + - + - - - - - - - - + + + + + + + + near diff --git a/Exercise Library/Adductor/frames/frame-1.svg b/Exercise Library/Adductor/frames/frame-1.svg index ff6a0d0..2d7a391 100644 --- a/Exercise Library/Adductor/frames/frame-1.svg +++ b/Exercise Library/Adductor/frames/frame-1.svg @@ -1,19 +1,19 @@ Adductor - + - + - - - - - - - - + + + + + + + + near diff --git a/Exercise Library/Adductor/frames/frame-2.svg b/Exercise Library/Adductor/frames/frame-2.svg index cf026d3..67edb7c 100644 --- a/Exercise Library/Adductor/frames/frame-2.svg +++ b/Exercise Library/Adductor/frames/frame-2.svg @@ -1,19 +1,19 @@ Adductor - + - + - - - - - - - - + + + + + + + + near diff --git a/Exercise Library/Adductor/preview.gif b/Exercise Library/Adductor/preview.gif index ab72d06..b6b6690 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 cf026d3..67edb7c 100644 --- a/Exercise Library/Adductor/visual.svg +++ b/Exercise Library/Adductor/visual.svg @@ -1,19 +1,19 @@ Adductor - + - + - - - - - - - - + + + + + + + + near diff --git a/Exercise Library/Arm Curl/frames/frame-1.svg b/Exercise Library/Arm Curl/frames/frame-1.svg index 97c7862..a807f37 100644 --- a/Exercise Library/Arm Curl/frames/frame-1.svg +++ b/Exercise Library/Arm Curl/frames/frame-1.svg @@ -1,19 +1,19 @@ Arm Curl - + - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Arm Curl/frames/frame-2.svg b/Exercise Library/Arm Curl/frames/frame-2.svg index 4236f77..18064b1 100644 --- a/Exercise Library/Arm Curl/frames/frame-2.svg +++ b/Exercise Library/Arm Curl/frames/frame-2.svg @@ -1,19 +1,19 @@ Arm Curl - + - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Arm Curl/preview.gif b/Exercise Library/Arm Curl/preview.gif index 112945d..79d160a 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 4236f77..18064b1 100644 --- a/Exercise Library/Arm Curl/visual.svg +++ b/Exercise Library/Arm Curl/visual.svg @@ -1,19 +1,19 @@ Arm Curl - + - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Bird Dog/frames/frame-1.svg b/Exercise Library/Bird Dog/frames/frame-1.svg index a665659..1faf224 100644 --- a/Exercise Library/Bird Dog/frames/frame-1.svg +++ b/Exercise Library/Bird Dog/frames/frame-1.svg @@ -1,15 +1,15 @@ Bird Dog - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Bird Dog/frames/frame-2.svg b/Exercise Library/Bird Dog/frames/frame-2.svg index a651643..42a0060 100644 --- a/Exercise Library/Bird Dog/frames/frame-2.svg +++ b/Exercise Library/Bird Dog/frames/frame-2.svg @@ -1,15 +1,15 @@ Bird Dog - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Bird Dog/frames/frame-3.svg b/Exercise Library/Bird Dog/frames/frame-3.svg index a665659..1faf224 100644 --- a/Exercise Library/Bird Dog/frames/frame-3.svg +++ b/Exercise Library/Bird Dog/frames/frame-3.svg @@ -1,15 +1,15 @@ Bird Dog - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Bird Dog/frames/frame-4.svg b/Exercise Library/Bird Dog/frames/frame-4.svg index 451db2b..dbf49c1 100644 --- a/Exercise Library/Bird Dog/frames/frame-4.svg +++ b/Exercise Library/Bird Dog/frames/frame-4.svg @@ -1,15 +1,15 @@ Bird Dog - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Bird Dog/orbit.gif b/Exercise Library/Bird Dog/orbit.gif index a9fb0b7..a5b3058 100644 Binary files a/Exercise Library/Bird Dog/orbit.gif and b/Exercise Library/Bird Dog/orbit.gif differ diff --git a/Exercise Library/Bird Dog/preview.gif b/Exercise Library/Bird Dog/preview.gif index 61faee3..962f06a 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 a651643..42a0060 100644 --- a/Exercise Library/Bird Dog/visual.svg +++ b/Exercise Library/Bird Dog/visual.svg @@ -1,15 +1,15 @@ Bird Dog - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Calfs/frames/frame-1.svg b/Exercise Library/Calfs/frames/frame-1.svg index d0d1af7..ce2aa8c 100644 --- a/Exercise Library/Calfs/frames/frame-1.svg +++ b/Exercise Library/Calfs/frames/frame-1.svg @@ -1,23 +1,23 @@ Calfs - + - - - - - - - - - - - + + + + + + + + + + + near diff --git a/Exercise Library/Calfs/frames/frame-2.svg b/Exercise Library/Calfs/frames/frame-2.svg index a1c0c59..1b20024 100644 --- a/Exercise Library/Calfs/frames/frame-2.svg +++ b/Exercise Library/Calfs/frames/frame-2.svg @@ -1,23 +1,23 @@ Calfs - + - - - - - - - - - - - + + + + + + + + + + + near diff --git a/Exercise Library/Calfs/preview.gif b/Exercise Library/Calfs/preview.gif index eeb354f..8024f21 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 a1c0c59..1b20024 100644 --- a/Exercise Library/Calfs/visual.svg +++ b/Exercise Library/Calfs/visual.svg @@ -1,23 +1,23 @@ Calfs - + - - - - - - - - - - - + + + + + + + + + + + near diff --git a/Exercise Library/Cat-Cow/frames/frame-1.svg b/Exercise Library/Cat-Cow/frames/frame-1.svg index 991f939..7b5dde3 100644 --- a/Exercise Library/Cat-Cow/frames/frame-1.svg +++ b/Exercise Library/Cat-Cow/frames/frame-1.svg @@ -1,15 +1,15 @@ Cat-Cow - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Cat-Cow/frames/frame-2.svg b/Exercise Library/Cat-Cow/frames/frame-2.svg index 9eeedfb..61d90cb 100644 --- a/Exercise Library/Cat-Cow/frames/frame-2.svg +++ b/Exercise Library/Cat-Cow/frames/frame-2.svg @@ -1,15 +1,15 @@ Cat-Cow - - - - - - - - + + + + + + + + - + near diff --git a/Exercise Library/Cat-Cow/preview.gif b/Exercise Library/Cat-Cow/preview.gif index b4ad78e..6137a55 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 991f939..7b5dde3 100644 --- a/Exercise Library/Cat-Cow/visual.svg +++ b/Exercise Library/Cat-Cow/visual.svg @@ -1,15 +1,15 @@ Cat-Cow - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Chest Press/frames/frame-1.svg b/Exercise Library/Chest Press/frames/frame-1.svg index 393c779..969cb85 100644 --- a/Exercise Library/Chest Press/frames/frame-1.svg +++ b/Exercise Library/Chest Press/frames/frame-1.svg @@ -1,20 +1,20 @@ Chest Press - + - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Chest Press/frames/frame-2.svg b/Exercise Library/Chest Press/frames/frame-2.svg index bd58417..4e2a747 100644 --- a/Exercise Library/Chest Press/frames/frame-2.svg +++ b/Exercise Library/Chest Press/frames/frame-2.svg @@ -1,20 +1,20 @@ Chest Press - + - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Chest Press/preview.gif b/Exercise Library/Chest Press/preview.gif index 6d5b473..7fb20aa 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 bd58417..4e2a747 100644 --- a/Exercise Library/Chest Press/visual.svg +++ b/Exercise Library/Chest Press/visual.svg @@ -1,20 +1,20 @@ Chest Press - + - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Dead Bug/frames/frame-1.svg b/Exercise Library/Dead Bug/frames/frame-1.svg index 3be08b6..e983772 100644 --- a/Exercise Library/Dead Bug/frames/frame-1.svg +++ b/Exercise Library/Dead Bug/frames/frame-1.svg @@ -1,15 +1,15 @@ Dead Bug - - - - - + + + + + - - - - + + + + near diff --git a/Exercise Library/Dead Bug/frames/frame-2.svg b/Exercise Library/Dead Bug/frames/frame-2.svg index 0542d5b..9dffaaa 100644 --- a/Exercise Library/Dead Bug/frames/frame-2.svg +++ b/Exercise Library/Dead Bug/frames/frame-2.svg @@ -1,15 +1,15 @@ Dead Bug - - - - - + + + + + - - - - + + + + near diff --git a/Exercise Library/Dead Bug/frames/frame-3.svg b/Exercise Library/Dead Bug/frames/frame-3.svg index 3be08b6..e983772 100644 --- a/Exercise Library/Dead Bug/frames/frame-3.svg +++ b/Exercise Library/Dead Bug/frames/frame-3.svg @@ -1,15 +1,15 @@ Dead Bug - - - - - + + + + + - - - - + + + + near diff --git a/Exercise Library/Dead Bug/frames/frame-4.svg b/Exercise Library/Dead Bug/frames/frame-4.svg index 9a4e639..abd63c8 100644 --- a/Exercise Library/Dead Bug/frames/frame-4.svg +++ b/Exercise Library/Dead Bug/frames/frame-4.svg @@ -1,15 +1,15 @@ Dead Bug - - - - - + + + + + - - - - + + + + near diff --git a/Exercise Library/Dead Bug/preview.gif b/Exercise Library/Dead Bug/preview.gif index 29dcf81..5a14020 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 0542d5b..9dffaaa 100644 --- a/Exercise Library/Dead Bug/visual.svg +++ b/Exercise Library/Dead Bug/visual.svg @@ -1,15 +1,15 @@ Dead Bug - - - - - + + + + + - - - - + + + + near diff --git a/Exercise Library/Hollow Body Hold/frames/frame-1.svg b/Exercise Library/Hollow Body Hold/frames/frame-1.svg index 8ca322f..10e6f00 100644 --- a/Exercise Library/Hollow Body Hold/frames/frame-1.svg +++ b/Exercise Library/Hollow Body Hold/frames/frame-1.svg @@ -1,14 +1,14 @@ Hollow Body Hold - - - - + + + + - - - - + + + + near diff --git a/Exercise Library/Hollow Body Hold/frames/frame-2.svg b/Exercise Library/Hollow Body Hold/frames/frame-2.svg index 258d1da..e287eed 100644 --- a/Exercise Library/Hollow Body Hold/frames/frame-2.svg +++ b/Exercise Library/Hollow Body Hold/frames/frame-2.svg @@ -1,14 +1,14 @@ Hollow Body Hold - - - - - - - - - + + + + + + + + + near diff --git a/Exercise Library/Hollow Body Hold/preview.gif b/Exercise Library/Hollow Body Hold/preview.gif index df14b76..4f277c8 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 258d1da..e287eed 100644 --- a/Exercise Library/Hollow Body Hold/visual.svg +++ b/Exercise Library/Hollow Body Hold/visual.svg @@ -1,14 +1,14 @@ Hollow Body Hold - - - - - - - - - + + + + + + + + + near diff --git a/Exercise Library/Lat Pull Down/frames/frame-1.svg b/Exercise Library/Lat Pull Down/frames/frame-1.svg index 18679de..323ea59 100644 --- a/Exercise Library/Lat Pull Down/frames/frame-1.svg +++ b/Exercise Library/Lat Pull Down/frames/frame-1.svg @@ -1,20 +1,20 @@ Lat Pull Down - + - - - - - - - - - - - + + + + + + + + + + + near diff --git a/Exercise Library/Lat Pull Down/frames/frame-2.svg b/Exercise Library/Lat Pull Down/frames/frame-2.svg index ed5c263..f61b8b8 100644 --- a/Exercise Library/Lat Pull Down/frames/frame-2.svg +++ b/Exercise Library/Lat Pull Down/frames/frame-2.svg @@ -1,20 +1,20 @@ Lat Pull Down - + - - - - - - - - - - - + + + + + + + + + + + near diff --git a/Exercise Library/Lat Pull Down/preview.gif b/Exercise Library/Lat Pull Down/preview.gif index 9d66537..2fd197c 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 ed5c263..f61b8b8 100644 --- a/Exercise Library/Lat Pull Down/visual.svg +++ b/Exercise Library/Lat Pull Down/visual.svg @@ -1,20 +1,20 @@ Lat Pull Down - + - - - - - - - - - - - + + + + + + + + + + + near diff --git a/Exercise Library/Leg Curl/frames/frame-1.svg b/Exercise Library/Leg Curl/frames/frame-1.svg index bf60000..d1c465d 100644 --- a/Exercise Library/Leg Curl/frames/frame-1.svg +++ b/Exercise Library/Leg Curl/frames/frame-1.svg @@ -1,6 +1,6 @@ Leg Curl - + @@ -8,16 +8,16 @@ - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Leg Curl/frames/frame-2.svg b/Exercise Library/Leg Curl/frames/frame-2.svg index 3033bad..bc8d4a3 100644 --- a/Exercise Library/Leg Curl/frames/frame-2.svg +++ b/Exercise Library/Leg Curl/frames/frame-2.svg @@ -1,6 +1,6 @@ Leg Curl - + @@ -8,16 +8,16 @@ - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Leg Curl/motion.json b/Exercise Library/Leg Curl/motion.json index 5da1351..c82136d 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": "roller", "at": ["foot_r", "foot_l"], "side": -1, "r": 5, "back": -2} + {"type": "roller", "at": ["foot_r", "foot_l"], "side": -1, "r": 5, "back": 3} ], "frames": [ { diff --git a/Exercise Library/Leg Curl/preview.gif b/Exercise Library/Leg Curl/preview.gif index 25e0acf..7acb147 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 3033bad..bc8d4a3 100644 --- a/Exercise Library/Leg Curl/visual.svg +++ b/Exercise Library/Leg Curl/visual.svg @@ -1,6 +1,6 @@ Leg Curl - + @@ -8,16 +8,16 @@ - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Leg Extension/frames/frame-1.svg b/Exercise Library/Leg Extension/frames/frame-1.svg index 8153d82..221b04b 100644 --- a/Exercise Library/Leg Extension/frames/frame-1.svg +++ b/Exercise Library/Leg Extension/frames/frame-1.svg @@ -1,22 +1,22 @@ Leg Extension - + - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Leg Extension/frames/frame-2.svg b/Exercise Library/Leg Extension/frames/frame-2.svg index 68aa763..4ceaf18 100644 --- a/Exercise Library/Leg Extension/frames/frame-2.svg +++ b/Exercise Library/Leg Extension/frames/frame-2.svg @@ -1,22 +1,22 @@ Leg Extension - + - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Leg Extension/motion.json b/Exercise Library/Leg Extension/motion.json index 28eed52..afcbadf 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": "roller", "at": ["foot_r", "foot_l"], "side": 1, "r": 5, "back": -2} + {"type": "roller", "at": ["foot_r", "foot_l"], "side": 1, "r": 5, "back": 7} ], "frames": [ { diff --git a/Exercise Library/Leg Extension/preview.gif b/Exercise Library/Leg Extension/preview.gif index d600537..a49fdd3 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 68aa763..4ceaf18 100644 --- a/Exercise Library/Leg Extension/visual.svg +++ b/Exercise Library/Leg Extension/visual.svg @@ -1,22 +1,22 @@ Leg Extension - + - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Leg Press/frames/frame-1.svg b/Exercise Library/Leg Press/frames/frame-1.svg index 1137ab4..31152ca 100644 --- a/Exercise Library/Leg Press/frames/frame-1.svg +++ b/Exercise Library/Leg Press/frames/frame-1.svg @@ -1,22 +1,22 @@ Leg Press - + - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Leg Press/frames/frame-2.svg b/Exercise Library/Leg Press/frames/frame-2.svg index 93b4b0a..d8a03d1 100644 --- a/Exercise Library/Leg Press/frames/frame-2.svg +++ b/Exercise Library/Leg Press/frames/frame-2.svg @@ -1,22 +1,22 @@ Leg Press - + - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Leg Press/preview.gif b/Exercise Library/Leg Press/preview.gif index 8ae8bb2..8d3ad35 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 93b4b0a..d8a03d1 100644 --- a/Exercise Library/Leg Press/visual.svg +++ b/Exercise Library/Leg Press/visual.svg @@ -1,22 +1,22 @@ Leg Press - + - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Leg Raises/frames/frame-1.svg b/Exercise Library/Leg Raises/frames/frame-1.svg index 2dd524c..bd6a149 100644 --- a/Exercise Library/Leg Raises/frames/frame-1.svg +++ b/Exercise Library/Leg Raises/frames/frame-1.svg @@ -1,14 +1,14 @@ Leg Raises - - - - - + + + + - - - + + + + near diff --git a/Exercise Library/Leg Raises/frames/frame-2.svg b/Exercise Library/Leg Raises/frames/frame-2.svg index 5274a9a..521b283 100644 --- a/Exercise Library/Leg Raises/frames/frame-2.svg +++ b/Exercise Library/Leg Raises/frames/frame-2.svg @@ -1,14 +1,14 @@ Leg Raises - - - - - + + + + + - - - + + + near diff --git a/Exercise Library/Leg Raises/preview.gif b/Exercise Library/Leg Raises/preview.gif index 5c73425..1de2144 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 2dd524c..bd6a149 100644 --- a/Exercise Library/Leg Raises/visual.svg +++ b/Exercise Library/Leg Raises/visual.svg @@ -1,14 +1,14 @@ Leg Raises - - - - - + + + + - - - + + + + near diff --git a/Exercise Library/Plank/frames/frame-1.svg b/Exercise Library/Plank/frames/frame-1.svg index e71c9e2..7666465 100644 --- a/Exercise Library/Plank/frames/frame-1.svg +++ b/Exercise Library/Plank/frames/frame-1.svg @@ -1,15 +1,15 @@ Plank - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Plank/frames/frame-2.svg b/Exercise Library/Plank/frames/frame-2.svg index bb7fb34..fda4352 100644 --- a/Exercise Library/Plank/frames/frame-2.svg +++ b/Exercise Library/Plank/frames/frame-2.svg @@ -1,15 +1,15 @@ Plank - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Plank/preview.gif b/Exercise Library/Plank/preview.gif index 476c9e8..be5a48d 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 bb7fb34..fda4352 100644 --- a/Exercise Library/Plank/visual.svg +++ b/Exercise Library/Plank/visual.svg @@ -1,15 +1,15 @@ Plank - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Reverse Crunch/frames/frame-1.svg b/Exercise Library/Reverse Crunch/frames/frame-1.svg index ce36dd4..b886e6e 100644 --- a/Exercise Library/Reverse Crunch/frames/frame-1.svg +++ b/Exercise Library/Reverse Crunch/frames/frame-1.svg @@ -1,14 +1,14 @@ Reverse Crunch - - - - - + + + + + - - - + + + near diff --git a/Exercise Library/Reverse Crunch/frames/frame-2.svg b/Exercise Library/Reverse Crunch/frames/frame-2.svg index 1ac7741..cae658b 100644 --- a/Exercise Library/Reverse Crunch/frames/frame-2.svg +++ b/Exercise Library/Reverse Crunch/frames/frame-2.svg @@ -1,14 +1,14 @@ Reverse Crunch - - - - - - - - - + + + + + + + + + near diff --git a/Exercise Library/Reverse Crunch/preview.gif b/Exercise Library/Reverse Crunch/preview.gif index 042a60d..db6281a 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 1ac7741..cae658b 100644 --- a/Exercise Library/Reverse Crunch/visual.svg +++ b/Exercise Library/Reverse Crunch/visual.svg @@ -1,14 +1,14 @@ Reverse Crunch - - - - - - - - - + + + + + + + + + near diff --git a/Exercise Library/Rotary/frames/frame-1.svg b/Exercise Library/Rotary/frames/frame-1.svg index a780975..e213352 100644 --- a/Exercise Library/Rotary/frames/frame-1.svg +++ b/Exercise Library/Rotary/frames/frame-1.svg @@ -1,19 +1,19 @@ Rotary - + - + - - - - - - - - + + + + + + + + near diff --git a/Exercise Library/Rotary/frames/frame-2.svg b/Exercise Library/Rotary/frames/frame-2.svg index c1c105e..1d6026d 100644 --- a/Exercise Library/Rotary/frames/frame-2.svg +++ b/Exercise Library/Rotary/frames/frame-2.svg @@ -1,19 +1,19 @@ Rotary - + - + - - - - - - - - + + + + + + + + near diff --git a/Exercise Library/Rotary/preview.gif b/Exercise Library/Rotary/preview.gif index 25150c5..402bdf4 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 a780975..e213352 100644 --- a/Exercise Library/Rotary/visual.svg +++ b/Exercise Library/Rotary/visual.svg @@ -1,19 +1,19 @@ Rotary - + - + - - - - - - - - + + + + + + + + near diff --git a/Exercise Library/SYSTEM.md b/Exercise Library/SYSTEM.md index 3dc1fe7..e68b53d 100644 --- a/Exercise Library/SYSTEM.md +++ b/Exercise Library/SYSTEM.md @@ -79,6 +79,11 @@ never touches a motion script** — proportions are the skeleton's problem. proportions. Face-on machines (abductor/adductor, rotary torso) author genuine abduction or spine rotation and let projection do the rest. The camera can also orbit while the motion loops (`--orbit`). +- **Elevation** — the default viewpoint pitches down 10° (`CAMERA_PITCH`; + override per motion via `"camera": {"pitch": ...}`), so the floor reads as + a plane — drawn as a rectangle — and near/far contacts straddle it. + Elevation is pure presentation: pins solve in the flat authored view and + the *posed* body tilts, so authored canvas targets never go out of reach. - **Feet** — each leg ends in a foot bone off the ankle. Dorsiflexion 0 keeps the foot perpendicular to the shin (right for standing, seated machines, planks); kneeling poses trail it back (−55), raises point it. diff --git a/Exercise Library/Seated Row/frames/frame-1.svg b/Exercise Library/Seated Row/frames/frame-1.svg index 277112d..1df21c6 100644 --- a/Exercise Library/Seated Row/frames/frame-1.svg +++ b/Exercise Library/Seated Row/frames/frame-1.svg @@ -1,20 +1,20 @@ Seated Row - + - - - - - - - - - - - + + + + + + + + + + + near diff --git a/Exercise Library/Seated Row/frames/frame-2.svg b/Exercise Library/Seated Row/frames/frame-2.svg index 27623dd..e922f73 100644 --- a/Exercise Library/Seated Row/frames/frame-2.svg +++ b/Exercise Library/Seated Row/frames/frame-2.svg @@ -1,20 +1,20 @@ Seated Row - + - - - - - - - - - - - + + + + + + + + + + + near diff --git a/Exercise Library/Seated Row/preview.gif b/Exercise Library/Seated Row/preview.gif index 3c2c757..3dd82f2 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 27623dd..e922f73 100644 --- a/Exercise Library/Seated Row/visual.svg +++ b/Exercise Library/Seated Row/visual.svg @@ -1,20 +1,20 @@ Seated Row - + - - - - - - - - - - - + + + + + + + + + + + near diff --git a/Exercise Library/Shoulder Press/frames/frame-1.svg b/Exercise Library/Shoulder Press/frames/frame-1.svg index 0ca08df..6a127bf 100644 --- a/Exercise Library/Shoulder Press/frames/frame-1.svg +++ b/Exercise Library/Shoulder Press/frames/frame-1.svg @@ -1,20 +1,20 @@ Shoulder Press - + - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Shoulder Press/frames/frame-2.svg b/Exercise Library/Shoulder Press/frames/frame-2.svg index a4ca04f..9bc4e03 100644 --- a/Exercise Library/Shoulder Press/frames/frame-2.svg +++ b/Exercise Library/Shoulder Press/frames/frame-2.svg @@ -1,20 +1,20 @@ Shoulder Press - + - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Shoulder Press/preview.gif b/Exercise Library/Shoulder Press/preview.gif index a8912d1..2d3d65c 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 a4ca04f..9bc4e03 100644 --- a/Exercise Library/Shoulder Press/visual.svg +++ b/Exercise Library/Shoulder Press/visual.svg @@ -1,20 +1,20 @@ Shoulder Press - + - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Side Plank/frames/frame-1.svg b/Exercise Library/Side Plank/frames/frame-1.svg index cb39e33..f91e782 100644 --- a/Exercise Library/Side Plank/frames/frame-1.svg +++ b/Exercise Library/Side Plank/frames/frame-1.svg @@ -1,15 +1,15 @@ Side Plank - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Side Plank/frames/frame-2.svg b/Exercise Library/Side Plank/frames/frame-2.svg index 99ec4f5..8ebeb57 100644 --- a/Exercise Library/Side Plank/frames/frame-2.svg +++ b/Exercise Library/Side Plank/frames/frame-2.svg @@ -1,15 +1,15 @@ Side Plank - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Side Plank/preview.gif b/Exercise Library/Side Plank/preview.gif index 4d97284..b361f3c 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 99ec4f5..8ebeb57 100644 --- a/Exercise Library/Side Plank/visual.svg +++ b/Exercise Library/Side Plank/visual.svg @@ -1,15 +1,15 @@ Side Plank - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Tricep Press/frames/frame-1.svg b/Exercise Library/Tricep Press/frames/frame-1.svg index 528f2b1..a6e74f0 100644 --- a/Exercise Library/Tricep Press/frames/frame-1.svg +++ b/Exercise Library/Tricep Press/frames/frame-1.svg @@ -1,20 +1,20 @@ Tricep Press - + - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Tricep Press/frames/frame-2.svg b/Exercise Library/Tricep Press/frames/frame-2.svg index 31d949e..dc95e0c 100644 --- a/Exercise Library/Tricep Press/frames/frame-2.svg +++ b/Exercise Library/Tricep Press/frames/frame-2.svg @@ -1,20 +1,20 @@ Tricep Press - + - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/Tricep Press/preview.gif b/Exercise Library/Tricep Press/preview.gif index 4160dc1..35f7acf 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 31d949e..dc95e0c 100644 --- a/Exercise Library/Tricep Press/visual.svg +++ b/Exercise Library/Tricep Press/visual.svg @@ -1,20 +1,20 @@ Tricep Press - + - - - - - - - - - - + + + + + + + + + + near diff --git a/Exercise Library/contact-sheet.png b/Exercise Library/contact-sheet.png index 357487c..fc6cabd 100644 Binary files a/Exercise Library/contact-sheet.png and b/Exercise Library/contact-sheet.png differ diff --git a/Exercise Library/demo-sheet.png b/Exercise Library/demo-sheet.png index d149962..9d5bc10 100644 Binary files a/Exercise Library/demo-sheet.png and b/Exercise Library/demo-sheet.png differ diff --git a/Exercise Library/kinematics.py b/Exercise Library/kinematics.py index d265092..6fbf16c 100644 --- a/Exercise Library/kinematics.py +++ b/Exercise Library/kinematics.py @@ -231,12 +231,15 @@ def fk_limb(kind, attach, joint, lower, ankle, prof, parent, sigma): return [attach, knee, ank, toe] -def pose(nf, prof, cam_yaw): +def pose(nf, prof, cam_yaw, cam_pitch=0.0): """FK a normalized frame into view space (x right, y up, z toward the - camera; origin at the root anchor). Returns points, parent frames (for - IK inversion), the nose direction, and the lateral depth factor k.""" + camera; origin at the root anchor). `cam_pitch` tilts the viewpoint down + from slightly above (the scene rotates about the root). Returns points, + parent frames (for IK inversion), the nose direction, and the lateral + depth factor k.""" r = nf["root"] - f_root = chain(rot_y(-cam_yaw), rot_y(r["yaw"]), rot_z(-r["pitch"]), rot_x(r["roll"])) + f_root = chain(rot_x(cam_pitch), rot_y(-cam_yaw), + rot_y(r["yaw"]), rot_z(-r["pitch"]), rot_x(r["roll"])) origin = (0.0, 0.0, 0.0) s1, s2 = nf["spine"] @@ -328,12 +331,12 @@ def view_from_canvas(pt, anchor, depth): return (pt[0] - anchor[0], anchor[1] - pt[1], depth) -def resolve(nf, prof, cam_yaw): +def resolve(nf, prof, cam_yaw, cam_pitch=0.0): """Pose a normalized frame and apply pins: for each pinned limb, solve IK against the canvas target (at the limb's FK depth), write the solved anatomical angles back into the frame, and re-pose. Returns (frame with IK-resolved angles, pose dict).""" - p = pose(nf, prof, cam_yaw) + p = pose(nf, prof, cam_yaw, cam_pitch) anchor = nf["root"]["pos"] solved = False for limb, (attach_key, sigma, pin) in LIMBS.items(): @@ -356,7 +359,7 @@ def resolve(nf, prof, cam_yaw): nf["hip_" + side], nf["knee_" + side] = upper, lower solved = True if solved: - p = pose(nf, prof, cam_yaw) + p = pose(nf, prof, cam_yaw, cam_pitch) return nf, p diff --git a/Exercise Library/render.py b/Exercise Library/render.py index c2d81cb..13020f3 100644 --- a/Exercise Library/render.py +++ b/Exercise Library/render.py @@ -29,6 +29,11 @@ import kinematics as K LIB = Path(__file__).parent CANVAS = (320, 180) GROUND_Y = 152 +# The default viewpoint is slightly elevated: the camera pitches down a +# touch, so the floor reads as a plane (drawn as a rectangle) instead of a +# line. Motions can override via "camera": {"pitch": ...}. +CAMERA_PITCH = 10.0 +FLOOR_HALF_DEPTH = 30.0 PALETTES = { "default": { @@ -97,7 +102,7 @@ def _bucket(depth): return round(depth / DEPTH_BUCKET) -def frame_geometry(nf, prof, cam, flipped=False): +def frame_geometry(nf, prof, cam, flipped=False, pitch=CAMERA_PITCH): """Resolve one normalized frame into drawable 2D geometry. Returns (nf with IK-resolved angles and original pins, geo, order, shade): @@ -108,7 +113,7 @@ def frame_geometry(nf, prof, cam, flipped=False): offset, scaled by how side-on the view is, so overlapping limbs stay distinguishable in profile views. """ - p0 = K.pose(nf, prof, cam) + p0 = K.pose(nf, prof, cam, pitch) shade, order_parts = {}, [] for right, left in PAIRS: dr, dl = _chain_depth(p0["points"][right]), _chain_depth(p0["points"][left]) @@ -128,8 +133,12 @@ def frame_geometry(nf, prof, cam, flipped=False): if shade[limb] == "far" and pin in work["pins"]: work["pins"][pin] = [work["pins"][pin][0] - off[0], work["pins"][pin][1] - off[1]] - work, p = K.resolve(work, prof, cam) + # Pins are canvas targets in the authored, unpitched view: solve IK flat, + # then tilt the *posed* body - the camera elevation is pure presentation, + # so contacts straddle the floor plane instead of pins going out of reach. + work, _ = K.resolve(work, prof, cam, 0.0) work["pins"] = dict(nf["pins"]) # keep authored pins; only angles resolved + p = K.pose(work, prof, cam, pitch) anchor = nf["root"]["pos"] @@ -336,6 +345,15 @@ def draw_prims(d, prims, colors, scale): # ------------------------------------------------------------------- drawing +def floor_rect_svg(colors): + """The floor plane under the elevated camera: a rectangle straddling the + ground line (the old horizontal line was the pitch-zero degenerate case).""" + fh = FLOOR_HALF_DEPTH * math.sin(math.radians(CAMERA_PITCH)) + return (f' ') + + def part_style(part, working, colors, shade): """Near pair members draw in the dark ink, far members in the light one; the spine is always dark. Working parts swap ink for the accent teals.""" @@ -360,8 +378,7 @@ def svg_for_frame(name, geo, order, shade, working, colors, props=None): w, h = CANVAS parts = [f'', f' {name}', - f' '] + floor_rect_svg(colors)] parts += svg_prims(bg, colors) for part in order: if part == "head": @@ -414,7 +431,10 @@ def draw_geo(geo, order, shade, working, colors, scale=2, font=None, props=None) for x, y in (pts[0], pts[-1]): d.ellipse([x - r, y - r, x + r, y + r], fill=color) - line([(16, GROUND_Y + 4), (CANVAS[0] - 16, GROUND_Y + 4)], colors["ground"], 3) + fh = FLOOR_HALF_DEPTH * math.sin(math.radians(CAMERA_PITCH)) + d.rounded_rectangle([16 * scale, (GROUND_Y + 4 - fh) * scale, + (CANVAS[0] - 16) * scale, (GROUND_Y + 4 + fh) * scale], + radius=3 * scale, outline=colors["ground"], width=3 * scale) draw_prims(d, bg, colors, scale) for part in order: if part == "head": @@ -466,6 +486,7 @@ def prepare(motion, figure="neutral", flip=False, strict=False): skel = K.load_skeleton() prof = skel["profiles"][figure] cam = float(motion.get("camera", {}).get("yaw", 0.0)) + (180.0 if flip else 0.0) + pitch = float(motion.get("camera", {}).get("pitch", CAMERA_PITCH)) norms = [K.normalize_frame(kf) for kf in motion["frames"]] issues = [] for i, nf in enumerate(norms, start=1): @@ -481,17 +502,17 @@ def prepare(motion, figure="neutral", flip=False, strict=False): if flip: norms = [mirror_frame(nf, CANVAS[0]) for nf in norms] props = flip_props(props, CANVAS[0]) - return norms, prof, cam, props + return norms, prof, cam, pitch, props def render_exercise(folder, figure="neutral", flip=False, strict=False): motion = load_motion(folder) working = set(motion.get("working", [])) hide = set(motion.get("hide", [])) - norms, prof, cam, props = prepare(motion, figure, flip, strict) + norms, prof, cam, pitch, props = prepare(motion, figure, flip, strict) def geometry(nf): - _, geo, order, shade = frame_geometry(nf, prof, cam, flip) + _, geo, order, shade = frame_geometry(nf, prof, cam, flip, pitch) for limb in hide: geo.pop(limb, None) return geo, order, shade @@ -499,7 +520,7 @@ def render_exercise(folder, figure="neutral", flip=False, strict=False): resolved = [] key_geos = [] for nf in norms: - out, geo, order, shade = frame_geometry(nf, prof, cam, flip) + out, geo, order, shade = frame_geometry(nf, prof, cam, flip, pitch) for limb in hide: geo.pop(limb, None) resolved.append(out) @@ -536,8 +557,8 @@ def render_orbit(folder, figure="neutral"): motion = load_motion(folder) working = set(motion.get("working", [])) hide = set(motion.get("hide", [])) - norms, prof, cam, props = prepare(motion, figure) - resolved = [frame_geometry(nf, prof, cam)[0] for nf in norms] + norms, prof, cam, pitch, props = prepare(motion, figure) + resolved = [frame_geometry(nf, prof, cam, pitch=pitch)[0] for nf in norms] font = legend_font() colors = PALETTES["default"] ticks = timeline(resolved) @@ -546,9 +567,9 @@ def render_orbit(folder, figure="neutral"): yaw = cam + 360.0 * i / len(ticks) # 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, _, _, _ = frame_geometry(nf, prof, cam, pitch=pitch) posed["pins"] = {} - _, geo, order, shade = frame_geometry(posed, prof, yaw) + _, geo, order, shade = frame_geometry(posed, prof, yaw, pitch=pitch) for limb in hide: geo.pop(limb, None) imgs.append(draw_geo(geo, order, shade, working, colors, font=font, props=props)) @@ -563,9 +584,9 @@ def contact_sheet(folders, figure="neutral", out=None): for folder in folders: motion = load_motion(folder) working, hide = set(motion.get("working", [])), set(motion.get("hide", [])) - norms, prof, cam, props = prepare(motion, figure) + norms, prof, cam, pitch, props = prepare(motion, figure) for i, nf in enumerate(norms, start=1): - _, geo, order, shade = frame_geometry(nf, prof, cam) + _, geo, order, shade = frame_geometry(nf, prof, cam, pitch=pitch) for limb in hide: geo.pop(limb, None) cells.append((f"{motion['name']} {i}/{len(norms)}", @@ -589,8 +610,8 @@ def demo_sheet(folder): ("themed (indigo)", "neutral", False, "indigo")] cells = [] for label, figure, flip, palette in variants: - norms, prof, cam, props = prepare(motion, figure, flip) - _, geo, order, shade = frame_geometry(norms[idx], prof, cam, flip) + norms, prof, cam, pitch, props = prepare(motion, figure, flip) + _, geo, order, shade = frame_geometry(norms[idx], prof, cam, flip, pitch) for limb in hide: geo.pop(limb, None) cells.append((f"{motion['name']} — {label}", diff --git a/Workouts/ExerciseFigure/ExerciseFigureView.swift b/Workouts/ExerciseFigure/ExerciseFigureView.swift index b36e491..d5bf8f9 100644 --- a/Workouts/ExerciseFigure/ExerciseFigureView.swift +++ b/Workouts/ExerciseFigure/ExerciseFigureView.swift @@ -109,10 +109,13 @@ struct ExerciseFigureView: View { let geo = figure.geometry(at: time) - // Ground line. - stroke(&ctx, [CGPoint(x: 16, y: Self.groundY + 4), - CGPoint(x: Self.designSize.width - 16, y: Self.groundY + 4)], - color: .figureGround, width: 3) + // The floor plane under the elevated camera: a rectangle straddling the + // ground line (a horizontal line is the pitch-zero degenerate case). + let floorHalf = MotionSolver.floorHalfDepth * sin(figure.timeline.pitch * .pi / 180) + let floor = CGRect(x: 16, y: Self.groundY + 4 - floorHalf, + width: Self.designSize.width - 32, height: 2 * floorHalf) + ctx.stroke(Path(roundedRect: floor, cornerRadius: 3), with: .color(.figureGround), + style: StrokeStyle(lineWidth: 3, lineCap: .round, lineJoin: .round)) // Equipment behind the figure: scene shapes and cables. drawBackgroundProps(&ctx, geo) diff --git a/Workouts/ExerciseFigure/ExerciseMotion.swift b/Workouts/ExerciseFigure/ExerciseMotion.swift index 86322e2..aeeefe7 100644 --- a/Workouts/ExerciseFigure/ExerciseMotion.swift +++ b/Workouts/ExerciseFigure/ExerciseMotion.swift @@ -104,6 +104,8 @@ struct RootValue: Codable { /// The orthographic camera: `yaw` 0 is the classic side view, 90 face-on. struct MotionCamera: Codable { let yaw: Double? + /// Camera elevation override; nil uses the standard slightly-raised viewpoint. + let pitch: Double? } /// A prop's joint reference: one joint (`"hand_r"`, `"knee_l"`, `"elbow_r"`, …) diff --git a/Workouts/ExerciseFigure/MotionSolver.swift b/Workouts/ExerciseFigure/MotionSolver.swift index f5f87ee..0279b5b 100644 --- a/Workouts/ExerciseFigure/MotionSolver.swift +++ b/Workouts/ExerciseFigure/MotionSolver.swift @@ -279,9 +279,12 @@ enum MotionSolver { return [attach, knee, ankleJoint, toe] } - /// FK a normalized frame into view space through the camera yaw. - static func pose(_ nf: NormalizedFrame, prof: SkeletonProfile, cam: Double) -> FigurePose { - let fRoot = chain(Mat3.rotY(-cam), Mat3.rotY(nf.yaw), Mat3.rotZ(-nf.pitch), Mat3.rotX(nf.roll)) + /// FK a normalized frame into view space through the camera yaw; `camPitch` + /// tilts the viewpoint down from slightly above (the scene rotates about the root). + static func pose(_ nf: NormalizedFrame, prof: SkeletonProfile, cam: Double, + camPitch: Double = 0) -> FigurePose { + let fRoot = chain(Mat3.rotX(camPitch), Mat3.rotY(-cam), + Mat3.rotY(nf.yaw), Mat3.rotZ(-nf.pitch), Mat3.rotX(nf.roll)) let origin = Vec3(0, 0, 0) let s1 = nf.spine[0], s2 = nf.spine[1] let f1 = chain(fRoot, Mat3.rotZ(-s1.flexion), Mat3.rotX(s1.lateral), Mat3.rotY(-s1.rotation)) @@ -397,8 +400,15 @@ enum MotionSolver { /// restored afterward), the depth-sorted draw order (head last), the spine curve, /// and the foreshortened gaze nose tick (hidden when the face points at/away from /// the camera). - static func frameGeometry(_ nf: NormalizedFrame, prof: SkeletonProfile, cam: Double) -> (NormalizedFrame, FigureGeometry) { - let p0 = pose(nf, prof: prof, cam: cam) + /// The standard slightly-elevated viewpoint: the camera pitches down a touch so + /// the floor reads as a plane. Kept 1:1 with the reference renderer's CAMERA_PITCH. + static let defaultPitch: Double = 10 + /// Floor plane half-depth; its projected height is `floorHalfDepth · sin(pitch)`. + static let floorHalfDepth: Double = 30 + + static func frameGeometry(_ nf: NormalizedFrame, prof: SkeletonProfile, cam: Double, + pitch: Double = MotionSolver.defaultPitch) -> (NormalizedFrame, FigureGeometry) { + let p0 = pose(nf, prof: prof, cam: cam, camPitch: pitch) var shade: [FigureLimb: Shade] = [:] for (right, left) in pairs { guard let rp = p0.limbs[right], let lp = p0.limbs[left] else { continue } @@ -421,8 +431,14 @@ enum MotionSolver { work.pins[limb.pinKey] = CGPoint(x: pin.x - off.x, y: pin.y - off.y) } } + // Pins are canvas targets in the authored, unpitched view: solve IK flat, + // then tilt the *posed* body - the camera elevation is pure presentation, + // so contacts straddle the floor plane instead of pins going out of reach. var (resolved, p) = resolve(work, prof: prof, cam: cam) resolved.pins = nf.pins // keep authored pins; only angles resolved + if pitch != 0 { + p = pose(resolved, prof: prof, cam: cam, camPitch: pitch) + } let anchor = nf.rootPos func scr(_ v: Vec3, _ limbOffset: CGPoint = .zero) -> CGPoint { @@ -476,18 +492,21 @@ struct MotionTimeline { let resolved: [NormalizedFrame] let profile: SkeletonProfile let cam: Double + let pitch: Double let duration: Double init?(motion: ExerciseMotion, profile: SkeletonProfile) { let cam = motion.camera?.yaw ?? 0 + let pitch = motion.camera?.pitch ?? MotionSolver.defaultPitch let norms = motion.frames.map { MotionSolver.normalize($0) } guard !norms.isEmpty else { return nil } - let resolved = norms.map { MotionSolver.frameGeometry($0, prof: profile, cam: cam).0 } + let resolved = norms.map { MotionSolver.frameGeometry($0, prof: profile, cam: cam, pitch: pitch).0 } let duration = resolved.reduce(0) { $0 + $1.hold + $1.tween } guard duration > 0 else { return nil } self.resolved = resolved self.profile = profile self.cam = cam + self.pitch = pitch self.duration = duration } @@ -516,10 +535,10 @@ struct MotionTimeline { func geometry(at time: Double, yawOffset: Double = 0) -> FigureGeometry { let frame = frame(at: time) guard yawOffset != 0 else { - return MotionSolver.frameGeometry(frame, prof: profile, cam: cam).1 + return MotionSolver.frameGeometry(frame, prof: profile, cam: cam, pitch: pitch).1 } - var posed = MotionSolver.frameGeometry(frame, prof: profile, cam: cam).0 + var posed = MotionSolver.frameGeometry(frame, prof: profile, cam: cam, pitch: pitch).0 posed.pins = [:] - return MotionSolver.frameGeometry(posed, prof: profile, cam: cam + yawOffset).1 + return MotionSolver.frameGeometry(posed, prof: profile, cam: cam + yawOffset, pitch: pitch).1 } } diff --git a/Workouts/Resources/ExerciseMotions/Leg Curl.motion.json b/Workouts/Resources/ExerciseMotions/Leg Curl.motion.json index 5da1351..c82136d 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": "roller", "at": ["foot_r", "foot_l"], "side": -1, "r": 5, "back": -2} + {"type": "roller", "at": ["foot_r", "foot_l"], "side": -1, "r": 5, "back": 3} ], "frames": [ { diff --git a/Workouts/Resources/ExerciseMotions/Leg Extension.motion.json b/Workouts/Resources/ExerciseMotions/Leg Extension.motion.json index 28eed52..afcbadf 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": "roller", "at": ["foot_r", "foot_l"], "side": 1, "r": 5, "back": -2} + {"type": "roller", "at": ["foot_r", "foot_l"], "side": 1, "r": 5, "back": 7} ], "frames": [ { diff --git a/WorkoutsTests/ExerciseMotionTests.swift b/WorkoutsTests/ExerciseMotionTests.swift index 17414db..9894420 100644 --- a/WorkoutsTests/ExerciseMotionTests.swift +++ b/WorkoutsTests/ExerciseMotionTests.swift @@ -34,24 +34,27 @@ struct ExerciseMotionTests { let frame = MotionSolver.normalize(resources.motion.frames[0]) let (resolved, geo) = MotionSolver.frameGeometry(frame, prof: resources.profile, cam: cam) + // Pins solve in the flat authored view, then the posed body tilts through the + // default camera pitch — so drawn hands straddle the floor plane around their + // authored canvas targets (x exact, y shifted by each hand's depth). let handR = try #require(geo.limbs[.armR]?.last) - #expect(abs(handR.x - 111) < 1e-3) - #expect(abs(handR.y - 154) < 1e-3) + #expect(abs(handR.x - 111) < 1e-2) + #expect(abs(handR.y - 151.391) < 1e-2) let handL = try #require(geo.limbs[.armL]?.last) - #expect(abs(handL.x - 105) < 1e-3) - #expect(abs(handL.y - 152) < 1e-3) + #expect(abs(handL.x - 105) < 1e-2) + #expect(abs(handL.y - 153.211) < 1e-2) #expect(abs(geo.headCenter.x - 86.195568) < 1e-4) - #expect(abs(geo.headCenter.y - 95.140457) < 1e-4) + #expect(abs(geo.headCenter.y - 95.305438) < 1e-4) // The right arm is the far member here, so its angles solve against the - // offset target; the drawn hand still lands on the authored pin above. + // offset target; the drawn hand still lands on the authored pin (flat view). #expect(geo.shade[.armR] == .far) #expect(geo.shade[.armL] == .near) - #expect(abs(resolved.shoulderR.flexion - 73.289190) < 1e-4) - #expect(abs(resolved.elbowR.flexion - 17.443758) < 1e-4) - // 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"]) + #expect(abs(resolved.shoulderR.flexion - 73.384213) < 1e-4) + #expect(abs(resolved.elbowR.flexion - 17.076663) < 1e-4) + // Depth-sorted under the elevated camera (arm attach points are the widest). + #expect(geo.order == ["arm_r", "leg_r", "leg_l", "spine", "arm_l", "head"]) } /// Mid-tween of resolved frames 1→2: a hand pinned in BOTH frames stays planted @@ -67,12 +70,14 @@ struct ExerciseMotionTests { #expect(mid.pins["hand_l"] == nil) let (_, geo) = MotionSolver.frameGeometry(mid, prof: resources.profile, cam: cam) + let (_, geo0) = MotionSolver.frameGeometry(r0, prof: resources.profile, cam: cam) let plantedHand = try #require(geo.limbs[.armR]?.last) - #expect(abs(plantedHand.x - 111) < 1e-3) - #expect(abs(plantedHand.y - 154) < 1e-3) + let plantedHand0 = try #require(geo0.limbs[.armR]?.last) + #expect(hypot(plantedHand.x - plantedHand0.x, plantedHand.y - plantedHand0.y) < 1e-3) let releasedHand = try #require(geo.limbs[.armL]?.last) - #expect(hypot(releasedHand.x - 105, releasedHand.y - 152) > 1) + let releasedHand0 = try #require(geo0.limbs[.armL]?.last) + #expect(hypot(releasedHand.x - releasedHand0.x, releasedHand.y - releasedHand0.y) > 1) } /// Prop-free bodyweight motions slowly orbit the camera while looping; motions with diff --git a/WorkoutsTests/Fixtures/figure-fixtures.json b/WorkoutsTests/Fixtures/figure-fixtures.json index 590b97e..b56c80a 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", "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]]}}}]} +{"profile": "neutral", "pitch": 10.0, "exercises": [{"name": "Abdominal", "camera": 0.0, "frames": [{"order": ["leg_l", "arm_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, 83.316], [125.0, 42.394]], "head": [127.784, 22.89], "nose": [[137.69, 24.261], [144.621, 25.22]], "arm_r": [[125.0, 44.305], [153.596, 35.371], [155.0, 64.882]], "arm_l": [[130.909, 42.454], [159.516, 33.554], [161.0, 63.062]], "leg_r": [[128.0, 127.216], [171.174, 111.583], [168.0, 150.851], [178.965, 151.711]], "leg_l": [[133.909, 126.754], [176.354, 109.292], [172.0, 148.45], [182.935, 149.629]]}, {"order": ["leg_l", "arm_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, 76.738], [167.641, 57.71]], "head": [186.184, 50.331], "nose": [[193.667, 56.966], [198.869, 61.579]], "arm_r": [[167.641, 59.62], [195.9, 49.703], [190.0, 78.67]], "arm_l": [[173.55, 57.769], [201.814, 47.865], [196.0, 76.849]], "leg_r": [[128.0, 127.216], [171.174, 111.583], [168.0, 150.851], [178.965, 151.711]], "leg_l": [[133.909, 126.754], [176.354, 109.292], [172.0, 148.45], [182.935, 149.629]]}], "tween": {"t": 0.5, "sample": {"order": ["leg_l", "arm_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, 81.31], [148.0, 46.225]], "head": [160.314, 30.704], "nose": [[169.401, 34.877], [175.745, 37.79]], "arm_r": [[148.0, 48.135], [177.477, 42.641], [172.5, 71.776]], "arm_l": [[153.909, 46.284], [183.389, 40.806], [178.5, 69.955]], "leg_r": [[128.0, 127.216], [171.174, 111.583], [168.0, 150.851], [178.965, 151.711]], "leg_l": [[133.909, 126.754], [176.354, 109.292], [172.0, 148.45], [182.935, 149.629]]}}}, {"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, 73.161], [160.0, 32.291]], "head": [160.0, 12.595], "nose": null, "arm_r": [[149.0, 32.291], [139.729, 60.823], [131.328, 86.682]], "arm_l": [[171.0, 32.291], [180.271, 60.823], [188.672, 86.682]], "leg_r": [[153.0, 116.0], [147.394, 133.103], [145.105, 172.832], [143.922, 171.655]], "leg_l": [[167.0, 116.0], [172.606, 133.103], [174.895, 172.832], [176.078, 171.655]]}, {"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, 73.161], [160.0, 32.291]], "head": [160.0, 12.595], "nose": null, "arm_r": [[149.0, 32.291], [139.729, 60.823], [131.328, 86.682]], "arm_l": [[171.0, 32.291], [180.271, 60.823], [188.672, 86.682]], "leg_r": [[153.0, 116.0], [130.0, 130.923], [120.611, 169.762], [115.754, 168.124]], "leg_l": [[167.0, 116.0], [190.0, 130.923], [199.389, 169.762], [204.246, 168.124]]}], "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, 73.161], [160.0, 32.291]], "head": [160.0, 12.595], "nose": null, "arm_r": [[149.0, 32.291], [139.729, 60.823], [131.328, 86.682]], "arm_l": [[171.0, 32.291], [180.271, 60.823], [188.672, 86.682]], "leg_r": [[153.0, 116.0], [138.404, 132.341], [132.445, 171.759], [129.364, 170.421]], "leg_l": [[167.0, 116.0], [181.596, 132.341], [187.555, 171.759], [190.636, 170.421]]}}}, {"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, 73.161], [160.0, 32.291]], "head": [160.0, 12.595], "nose": null, "arm_r": [[149.0, 32.291], [139.729, 60.823], [131.328, 86.682]], "arm_l": [[171.0, 32.291], [180.271, 60.823], [188.672, 86.682]], "leg_r": [[153.0, 116.0], [130.0, 130.923], [120.611, 169.762], [115.754, 168.124]], "leg_l": [[167.0, 116.0], [190.0, 130.923], [199.389, 169.762], [204.246, 168.124]]}, {"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, 73.161], [160.0, 32.291]], "head": [160.0, 12.595], "nose": null, "arm_r": [[149.0, 32.291], [139.729, 60.823], [131.328, 86.682]], "arm_l": [[171.0, 32.291], [180.271, 60.823], [188.672, 86.682]], "leg_r": [[153.0, 116.0], [147.394, 133.103], [145.105, 172.832], [143.922, 171.655]], "leg_l": [[167.0, 116.0], [172.606, 133.103], [174.895, 172.832], [176.078, 171.655]]}], "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, 73.161], [160.0, 32.291]], "head": [160.0, 12.595], "nose": null, "arm_r": [[149.0, 32.291], [139.729, 60.823], [131.328, 86.682]], "arm_l": [[171.0, 32.291], [180.271, 60.823], [188.672, 86.682]], "leg_r": [[153.0, 116.0], [138.404, 132.341], [132.445, 171.759], [129.364, 170.421]], "leg_l": [[167.0, 116.0], [181.596, 132.341], [187.555, 171.759], [190.636, 170.421]]}}}, {"name": "Arm Curl", "camera": 0.0, "frames": [{"order": ["leg_l", "arm_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, 81.149], [134.43, 40.418]], "head": [137.214, 20.913], "nose": [[146.738, 23.961], [153.396, 26.091]], "arm_r": [[134.43, 42.328], [159.005, 59.274], [174.903, 84.329]], "arm_l": [[140.339, 40.477], [164.914, 57.423], [180.811, 82.478]], "leg_r": [[130.0, 125.216], [173.836, 111.486], [176.0, 150.821], [186.984, 150.235]], "leg_l": [[135.909, 124.754], [179.406, 110.016], [180.0, 149.404], [190.999, 149.243]]}, {"order": ["leg_l", "arm_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, 81.149], [134.43, 40.418]], "head": [137.214, 20.913], "nose": [[146.738, 23.961], [153.396, 26.091]], "arm_r": [[134.43, 42.328], [159.005, 59.274], [178.289, 36.642]], "arm_l": [[140.339, 40.477], [164.914, 57.423], [184.197, 34.791]], "leg_r": [[130.0, 125.216], [173.836, 111.486], [176.0, 150.821], [186.984, 150.235]], "leg_l": [[135.909, 124.754], [179.406, 110.016], [180.0, 149.404], [190.999, 149.243]]}], "tween": {"t": 0.5, "sample": {"order": ["leg_l", "arm_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, 81.149], [134.43, 40.418]], "head": [137.214, 20.913], "nose": [[146.738, 23.961], [153.396, 26.091]], "arm_r": [[134.43, 42.328], [159.005, 59.274], [188.932, 61.335]], "arm_l": [[140.339, 40.477], [164.914, 57.423], [194.841, 59.484]], "leg_r": [[130.0, 125.216], [173.836, 111.486], [176.0, 150.821], [186.984, 150.235]], "leg_l": [[135.909, 124.754], [179.406, 110.016], [180.0, 149.404], [190.999, 149.243]]}}}, {"name": "Bird Dog", "camera": 0.0, "frames": [{"order": ["arm_r", "leg_r", "leg_l", "spine", "arm_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[190.0, 106.0], [147.036, 99.298], [106.046, 92.905]], "head": [86.196, 95.305], "nose": [[77.108, 99.479], [70.764, 102.392]], "arm_r": [[111.955, 92.965], [115.931, 122.248], [111.0, 151.391]], "arm_l": [[106.046, 94.815], [110.072, 124.092], [105.0, 153.211]], "leg_r": [[195.909, 106.754], [201.515, 151.718], [241.515, 151.718], [250.526, 157.931]], "leg_l": [[190.0, 107.216], [195.606, 152.179], [235.606, 152.179], [244.617, 158.393]]}, {"order": ["arm_r", "leg_r", "leg_l", "spine", "arm_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[190.0, 106.0], [147.036, 99.298], [106.046, 92.905]], "head": [86.196, 95.305], "nose": [[76.527, 97.857], [69.765, 99.641]], "arm_r": [[111.955, 92.965], [115.931, 122.248], [111.0, 151.391]], "arm_l": [[106.046, 94.815], [77.681, 85.197], [49.315, 75.578]], "leg_r": [[195.909, 106.754], [240.341, 95.029], [278.978, 84.834], [286.049, 93.132]], "leg_l": [[190.0, 107.216], [195.606, 152.179], [235.606, 152.179], [244.617, 158.393]]}, {"order": ["arm_r", "leg_r", "leg_l", "spine", "arm_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[190.0, 106.0], [147.036, 99.298], [106.046, 92.905]], "head": [86.196, 95.305], "nose": [[77.108, 99.479], [70.764, 102.392]], "arm_r": [[111.955, 92.965], [115.931, 122.248], [111.0, 151.391]], "arm_l": [[106.046, 94.815], [110.072, 124.092], [105.0, 153.211]], "leg_r": [[195.909, 106.754], [201.515, 151.718], [241.515, 151.718], [250.526, 157.931]], "leg_l": [[190.0, 107.216], [195.606, 152.179], [235.606, 152.179], [244.617, 158.393]]}, {"order": ["leg_r", "arm_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.298], [106.046, 92.905]], "head": [86.196, 95.305], "nose": [[76.527, 97.857], [69.765, 99.641]], "arm_r": [[111.955, 92.965], [83.59, 83.346], [55.224, 73.727]], "arm_l": [[106.046, 94.815], [110.072, 124.092], [105.0, 153.211]], "leg_r": [[195.909, 106.754], [201.515, 151.718], [241.515, 151.718], [250.526, 157.931]], "leg_l": [[190.0, 107.216], [234.433, 95.491], [273.07, 85.295], [280.14, 93.594]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_r", "leg_r", "leg_l", "spine", "arm_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[190.0, 106.0], [147.036, 99.298], [106.046, 92.905]], "head": [86.196, 95.305], "nose": [[76.782, 98.68], [70.204, 101.037]], "arm_r": [[111.955, 92.965], [115.931, 122.248], [111.0, 151.391]], "arm_l": [[106.046, 94.815], [82.85, 113.55], [57.036, 128.604]], "leg_r": [[195.909, 106.754], [234.045, 132.086], [273.702, 126.944], [281.812, 134.263]], "leg_l": [[190.0, 107.216], [195.606, 152.179], [235.606, 152.179], [244.617, 158.393]]}}, "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, 94.809], [122.952, 84.132]], "head": [107.098, 84.457], "nose": [[97.959, 88.517], [92.892, 90.767]], "arm_r": [[134.291, 84.179], [123.903, 111.896], [112.556, 139.245]], "arm_l": [[116.332, 85.657], [111.24, 114.773], [105.078, 143.687]], "leg_r": [[198.932, 106.602], [203.409, 152.152], [235.354, 156.332], [242.551, 163.487]], "leg_l": [[185.787, 106.971], [190.264, 152.52], [222.21, 156.7], [229.406, 163.855]]}}, {"yaw": 180.0, "sample": {"order": ["leg_l", "arm_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.298], [273.954, 92.905]], "head": [293.804, 95.305], "nose": [[302.892, 99.479], [309.236, 102.392]], "arm_r": [[273.954, 94.815], [246.072, 105.72], [217.953, 116.017]], "arm_l": [[279.862, 92.965], [251.531, 102.679], [222.99, 111.783]], "leg_r": [[190.0, 107.216], [184.394, 152.179], [144.394, 152.179], [135.383, 158.393]], "leg_l": [[195.909, 106.754], [190.303, 151.718], [150.303, 151.718], [141.292, 157.931]]}}]}, {"name": "Calfs", "camera": 0.0, "frames": [{"order": ["leg_l", "arm_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, 76.013], [128.143, 35.161]], "head": [131.616, 15.764], "nose": [[141.468, 17.475], [148.362, 18.672]], "arm_r": [[128.143, 37.071], [155.658, 48.846], [166.0, 76.579]], "arm_l": [[134.052, 35.221], [161.853, 46.324], [170.0, 74.758]], "leg_r": [[140.0, 119.216], [185.998, 118.826], [212.0, 148.76], [218.69, 140.16]], "leg_l": [[145.909, 118.754], [191.871, 116.91], [216.0, 148.328], [223.202, 140.14]]}, {"order": ["leg_l", "arm_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, 76.013], [128.143, 35.161]], "head": [131.616, 15.764], "nose": [[141.468, 17.475], [148.362, 18.672]], "arm_r": [[128.143, 37.071], [155.658, 48.846], [166.0, 76.579]], "arm_l": [[134.052, 35.221], [161.853, 46.324], [170.0, 74.758]], "leg_r": [[140.0, 119.216], [185.175, 110.675], [212.0, 139.897], [222.04, 135.471]], "leg_l": [[145.909, 118.754], [190.801, 108.872], [216.0, 139.465], [226.266, 135.574]]}], "tween": {"t": 0.5, "sample": {"order": ["leg_l", "arm_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, 76.013], [128.143, 35.161]], "head": [131.616, 15.764], "nose": [[141.468, 17.475], [148.362, 18.672]], "arm_r": [[128.143, 37.071], [155.658, 48.846], [166.0, 76.579]], "arm_l": [[134.052, 35.221], [161.853, 46.324], [170.0, 74.758]], "leg_r": [[140.0, 119.216], [185.76, 114.596], [212.0, 144.328], [220.669, 137.659]], "leg_l": [[145.909, 118.754], [191.504, 112.755], [216.0, 143.897], [225.037, 137.72]]}}}, {"name": "Cat-Cow", "camera": 0.0, "frames": [{"order": ["arm_r", "leg_r", "leg_l", "spine", "arm_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[190.0, 106.0], [145.16, 123.58], [109.354, 94.413]], "head": [89.43, 96.13], "nose": [[79.806, 93.412], [73.077, 91.512]], "arm_r": [[115.262, 94.473], [120.88, 123.494], [111.0, 151.391]], "arm_l": [[109.354, 96.323], [114.968, 125.346], [105.0, 153.211]], "leg_r": [[195.909, 106.754], [201.515, 151.718], [241.515, 151.718], [250.526, 157.931]], "leg_l": [[190.0, 107.216], [195.606, 152.179], [235.606, 152.179], [244.617, 158.393]]}, {"order": ["arm_r", "leg_r", "leg_l", "spine", "arm_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[190.0, 106.0], [152.084, 74.855], [109.947, 96.703]], "head": [93.564, 108.0], "nose": [[86.439, 115.017], [81.489, 119.892]], "arm_r": [[115.855, 96.763], [124.559, 125.036], [111.0, 151.391]], "arm_l": [[109.947, 98.613], [118.631, 126.893], [105.0, 153.211]], "leg_r": [[195.909, 106.754], [201.515, 151.718], [241.515, 151.718], [250.526, 157.931]], "leg_l": [[190.0, 107.216], [195.606, 152.179], [235.606, 152.179], [244.617, 158.393]]}], "tween": {"t": 0.5, "sample": {"order": ["arm_r", "leg_r", "leg_l", "spine", "arm_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[190.0, 106.0], [147.073, 98.952], [105.742, 95.058]], "head": [86.948, 101.795], "nose": [[77.258, 104.263], [70.481, 105.989]], "arm_r": [[111.651, 95.118], [120.47, 123.357], [111.0, 151.391]], "arm_l": [[105.742, 96.969], [114.561, 125.208], [105.0, 153.211]], "leg_r": [[195.909, 106.754], [201.515, 151.718], [241.515, 151.718], [250.526, 157.931]], "leg_l": [[190.0, 107.216], [195.606, 152.179], [235.606, 152.179], [244.617, 158.393]]}}}, {"name": "Chest Press", "camera": 0.0, "frames": [{"order": ["leg_l", "arm_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.733], [98.304, 40.178]], "head": [100.395, 20.589], "nose": [[110.358, 19.731], [117.331, 19.13]], "arm_r": [[98.304, 42.088], [93.095, 71.183], [116.076, 52.192]], "arm_l": [[104.213, 40.237], [99.004, 69.332], [121.985, 50.342]], "leg_r": [[116.0, 123.216], [160.688, 112.472], [158.0, 151.775], [168.975, 152.503]], "leg_l": [[121.909, 122.754], [166.389, 111.204], [162.0, 150.359], [172.934, 151.547]]}, {"order": ["leg_l", "arm_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.733], [98.304, 40.178]], "head": [100.395, 20.589], "nose": [[110.358, 19.731], [117.331, 19.13]], "arm_r": [[98.304, 42.088], [128.14, 45.176], [157.249, 52.323]], "arm_l": [[104.213, 40.237], [134.049, 43.325], [163.158, 50.473]], "leg_r": [[116.0, 123.216], [160.688, 112.472], [158.0, 151.775], [168.975, 152.503]], "leg_l": [[121.909, 122.754], [166.389, 111.204], [162.0, 150.359], [172.934, 151.547]]}], "tween": {"t": 0.5, "sample": {"order": ["leg_l", "arm_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.733], [98.304, 40.178]], "head": [100.395, 20.589], "nose": [[110.358, 19.731], [117.331, 19.13]], "arm_r": [[98.304, 42.088], [116.359, 65.683], [145.59, 59.037]], "arm_l": [[104.213, 40.237], [122.267, 63.832], [151.499, 57.186]], "leg_r": [[116.0, 123.216], [160.688, 112.472], [158.0, 151.775], [168.975, 152.503]], "leg_l": [[121.909, 122.754], [166.389, 111.204], [162.0, 150.359], [172.934, 151.547]]}}}, {"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.905], "nose": [[80.437, 133.905], [80.437, 127.011]], "arm_r": [[100.0, 149.91], [100.0, 120.366], [100.0, 90.822]], "arm_l": [[105.909, 148.059], [105.909, 118.515], [105.909, 88.971]], "leg_r": [[185.0, 149.216], [205.165, 108.499], [244.557, 115.34], [246.468, 104.671]], "leg_l": [[190.909, 148.754], [211.074, 108.038], [250.466, 114.878], [252.376, 104.21]]}, {"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.905], "nose": [[80.437, 133.905], [80.437, 127.011]], "arm_r": [[100.0, 149.91], [78.787, 129.019], [57.574, 108.128]], "arm_l": [[105.909, 148.059], [105.909, 118.515], [105.909, 88.971]], "leg_r": [[185.0, 149.216], [205.165, 108.499], [244.557, 115.34], [246.468, 104.671]], "leg_l": [[190.909, 148.754], [235.127, 136.267], [273.577, 125.409], [270.545, 114.996]]}, {"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.905], "nose": [[80.437, 133.905], [80.437, 127.011]], "arm_r": [[100.0, 149.91], [100.0, 120.366], [100.0, 90.822]], "arm_l": [[105.909, 148.059], [105.909, 118.515], [105.909, 88.971]], "leg_r": [[185.0, 149.216], [205.165, 108.499], [244.557, 115.34], [246.468, 104.671]], "leg_l": [[190.909, 148.754], [211.074, 108.038], [250.466, 114.878], [252.376, 104.21]]}, {"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.905], "nose": [[80.437, 133.905], [80.437, 127.011]], "arm_r": [[100.0, 149.91], [100.0, 120.366], [100.0, 90.822]], "arm_l": [[105.909, 148.059], [84.696, 127.169], [63.482, 106.278]], "leg_r": [[185.0, 149.216], [229.218, 136.729], [267.669, 125.871], [264.636, 115.458]], "leg_l": [[190.909, 148.754], [211.074, 108.038], [250.466, 114.878], [252.376, 104.21]]}], "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.905], "nose": [[80.437, 133.905], [80.437, 127.011]], "arm_r": [[100.0, 149.91], [88.519, 122.615], [77.039, 95.32]], "arm_l": [[105.909, 148.059], [105.909, 118.515], [105.909, 88.971]], "leg_r": [[185.0, 149.216], [205.165, 108.499], [244.557, 115.34], [246.468, 104.671]], "leg_l": [[190.909, 148.754], [226.147, 119.635], [266.092, 117.573], [265.516, 106.755]]}}}, {"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.905], "nose": [[80.437, 133.905], [80.437, 127.011]], "arm_r": [[100.0, 149.91], [70.0, 149.91], [40.0, 149.91]], "arm_l": [[105.909, 148.059], [135.909, 148.059], [165.909, 148.059]], "leg_r": [[185.0, 149.216], [231.0, 149.216], [271.0, 149.216], [271.0, 138.383]], "leg_l": [[190.909, 148.754], [236.909, 148.754], [276.909, 148.754], [276.909, 137.921]]}, {"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.434], [102.768, 129.427]], "head": [87.448, 116.767], "nose": [[93.933, 109.155], [98.433, 103.874]], "arm_r": [[102.768, 131.337], [75.579, 118.851], [48.39, 106.365]], "arm_l": [[108.677, 129.486], [136.868, 139.591], [165.059, 149.696]], "leg_r": [[185.0, 149.216], [229.995, 139.797], [269.121, 131.607], [266.834, 121.011]], "leg_l": [[190.909, 148.754], [235.904, 139.335], [275.03, 131.145], [272.743, 120.549]]}], "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.267], [100.697, 138.601]], "head": [82.721, 129.967], "nose": [[86.188, 120.587], [88.582, 114.109]], "arm_r": [[100.697, 140.511], [71.408, 134.117], [42.119, 127.722]], "arm_l": [[106.606, 138.661], [136.15, 143.791], [165.694, 148.921]], "leg_r": [[185.0, 149.216], [230.748, 144.48], [270.529, 140.363], [269.379, 129.589]], "leg_l": [[190.909, 148.754], [236.657, 144.019], [276.438, 139.901], [275.288, 129.128]]}}}, {"name": "Lat Pull Down", "camera": 0.0, "frames": [{"order": ["leg_l", "arm_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, 79.248], [147.75, 38.349]], "head": [149.493, 18.728], "nose": [[155.287, 10.578], [159.302, 4.931]], "arm_r": [[147.75, 40.26], [174.771, 27.426], [194.0, 4.748]], "arm_l": [[153.658, 38.409], [181.607, 27.671], [198.0, 2.928]], "leg_r": [[150.0, 123.216], [194.414, 111.422], [193.0, 150.79], [203.993, 151.173]], "leg_l": [[155.909, 122.754], [200.077, 110.098], [197.0, 149.374], [207.967, 150.207]]}, {"order": ["leg_l", "arm_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, 79.248], [147.75, 38.349]], "head": [149.493, 18.728], "nose": [[158.186, 13.785], [164.248, 10.339]], "arm_r": [[147.75, 40.26], [171.723, 58.02], [194.0, 38.232]], "arm_l": [[153.658, 38.409], [176.752, 57.267], [198.0, 36.411]], "leg_r": [[150.0, 123.216], [194.414, 111.422], [193.0, 150.79], [203.993, 151.173]], "leg_l": [[155.909, 122.754], [200.077, 110.098], [197.0, 149.374], [207.967, 150.207]]}], "tween": {"t": 0.5, "sample": {"order": ["leg_l", "arm_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, 79.248], [147.75, 38.349]], "head": [149.493, 18.728], "nose": [[156.917, 12.029], [162.078, 7.371]], "arm_r": [[147.75, 40.26], [177.186, 45.958], [194.0, 21.49]], "arm_l": [[153.658, 38.409], [182.861, 45.176], [198.0, 19.669]], "leg_r": [[150.0, 123.216], [194.414, 111.422], [193.0, 150.79], [203.993, 151.173]], "leg_l": [[155.909, 122.754], [200.077, 110.098], [197.0, 149.374], [207.967, 150.207]]}}}, {"name": "Leg Curl", "camera": 0.0, "frames": [{"order": ["leg_l", "arm_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, 76.19], [91.716, 36.447]], "head": [97.229, 17.514], "nose": [[106.643, 20.888], [113.221, 23.246]], "arm_r": [[91.716, 38.358], [99.481, 66.895], [114.481, 92.481]], "arm_l": [[97.625, 36.507], [105.39, 65.044], [120.39, 90.631]], "leg_r": [[118.0, 117.216], [163.301, 109.349], [203.204, 106.601], [202.436, 95.795]], "leg_l": [[123.909, 116.754], [169.21, 108.888], [209.113, 106.14], [208.345, 95.333]]}, {"order": ["leg_l", "arm_l", "leg_r", "spine", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "near", "leg_l": "far"}, "spine": [[118.0, 116.0], [101.728, 76.19], [91.716, 36.447]], "head": [97.229, 17.514], "nose": [[106.643, 20.888], [113.221, 23.246]], "arm_r": [[91.716, 38.358], [99.481, 66.895], [114.481, 92.481]], "arm_l": [[97.625, 36.507], [105.39, 65.044], [120.39, 90.631]], "leg_r": [[118.0, 117.216], [163.301, 109.349], [159.815, 148.591], [170.773, 149.536]], "leg_l": [[123.909, 116.754], [169.21, 108.888], [165.724, 148.13], [176.682, 149.074]]}], "tween": {"t": 0.5, "sample": {"order": ["leg_l", "arm_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, 76.19], [91.716, 36.447]], "head": [97.229, 17.514], "nose": [[106.643, 20.888], [113.221, 23.246]], "arm_r": [[91.716, 38.358], [99.481, 66.895], [114.481, 92.481]], "arm_l": [[97.625, 36.507], [105.39, 65.044], [120.39, 90.631]], "leg_r": [[118.0, 117.216], [163.301, 109.349], [191.338, 137.446], [199.183, 129.853]], "leg_l": [[123.909, 116.754], [169.21, 108.888], [197.246, 136.984], [205.092, 129.391]]}}}, {"name": "Leg Extension", "camera": 0.0, "frames": [{"order": ["leg_l", "arm_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, 76.19], [91.716, 36.447]], "head": [97.229, 17.514], "nose": [[106.643, 20.888], [113.221, 23.246]], "arm_r": [[91.716, 38.358], [99.481, 66.895], [114.481, 92.481]], "arm_l": [[97.625, 36.507], [105.39, 65.044], [120.39, 90.631]], "leg_r": [[118.0, 117.216], [163.301, 109.349], [168.176, 148.448], [179.094, 147.128]], "leg_l": [[123.909, 116.754], [169.21, 108.888], [174.085, 147.986], [185.003, 146.666]]}, {"order": ["leg_l", "arm_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, 76.19], [91.716, 36.447]], "head": [97.229, 17.514], "nose": [[106.643, 20.888], [113.221, 23.246]], "arm_r": [[91.716, 38.358], [99.481, 66.895], [114.481, 92.481]], "arm_l": [[97.625, 36.507], [105.39, 65.044], [120.39, 90.631]], "leg_r": [[118.0, 117.216], [163.301, 109.349], [203.204, 106.601], [202.436, 95.795]], "leg_l": [[123.909, 116.754], [169.21, 108.888], [209.113, 106.14], [208.345, 95.333]]}], "tween": {"t": 0.5, "sample": {"order": ["leg_l", "arm_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, 76.19], [91.716, 36.447]], "head": [97.229, 17.514], "nose": [[106.643, 20.888], [113.221, 23.246]], "arm_r": [[91.716, 38.358], [99.481, 66.895], [114.481, 92.481]], "arm_l": [[97.625, 36.507], [105.39, 65.044], [120.39, 90.631]], "leg_r": [[118.0, 117.216], [163.301, 109.349], [194.166, 134.406], [201.163, 126.047]], "leg_l": [[123.909, 116.754], [169.21, 108.888], [200.075, 133.944], [207.072, 125.585]]}}}, {"name": "Leg Press", "camera": 0.0, "frames": [{"order": ["leg_l", "arm_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, 78.084], [105.417, 39.589]], "head": [110.593, 20.564], "nose": [[120.262, 23.115], [127.023, 24.9]], "arm_r": [[105.417, 41.499], [113.181, 70.037], [141.372, 80.141]], "arm_l": [[111.325, 39.648], [119.09, 68.186], [147.281, 78.291]], "leg_r": [[140.0, 117.216], [157.129, 75.172], [185.0, 103.428], [192.89, 95.88]], "leg_l": [[145.909, 116.754], [161.7, 74.206], [189.0, 102.997], [197.04, 95.603]]}, {"order": ["leg_l", "arm_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, 78.084], [105.417, 39.589]], "head": [110.593, 20.564], "nose": [[120.262, 23.115], [127.023, 24.9]], "arm_r": [[105.417, 41.499], [113.181, 70.037], [141.372, 80.141]], "arm_l": [[111.325, 39.648], [119.09, 68.186], [147.281, 78.291]], "leg_r": [[140.0, 117.216], [180.564, 95.852], [220.0, 102.443], [221.84, 91.763]], "leg_l": [[145.909, 116.754], [185.065, 92.98], [224.0, 102.012], [226.522, 91.468]]}], "tween": {"t": 0.5, "sample": {"order": ["leg_l", "arm_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, 78.084], [105.417, 39.589]], "head": [110.593, 20.564], "nose": [[120.262, 23.115], [127.023, 24.9]], "arm_r": [[105.417, 41.499], [113.181, 70.037], [141.372, 80.141]], "arm_l": [[111.325, 39.648], [119.09, 68.186], [147.281, 78.291]], "leg_r": [[140.0, 117.216], [168.724, 81.832], [202.5, 102.936], [208.393, 93.789]], "leg_l": [[145.909, 116.754], [173.379, 80.418], [206.5, 102.504], [212.668, 93.534]]}}}, {"name": "Leg Raises", "camera": 0.0, "frames": [{"order": ["arm_l", "spine", "leg_l", "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.905], "nose": [[80.437, 133.905], [80.437, 127.011]], "arm_r": [[100.0, 149.91], [130.0, 149.91], [160.0, 149.91]], "arm_l": [[105.909, 148.059], [135.891, 149.091], [165.872, 150.122]], "leg_r": [[185.0, 149.216], [208.0, 109.984], [228.0, 75.869], [218.474, 70.452]], "leg_l": [[190.909, 148.754], [213.909, 109.522], [233.909, 75.407], [224.383, 69.991]]}, {"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.905], "nose": [[80.437, 133.905], [80.437, 127.011]], "arm_r": [[100.0, 149.91], [130.0, 149.91], [160.0, 149.91]], "arm_l": [[105.909, 148.059], [135.891, 149.091], [165.872, 150.122]], "leg_r": [[185.0, 149.216], [230.552, 142.911], [270.163, 137.428], [268.632, 126.701]], "leg_l": [[190.909, 148.754], [236.461, 142.449], [276.072, 136.967], [274.541, 126.24]]}], "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.905], "nose": [[80.437, 133.905], [80.437, 127.011]], "arm_r": [[100.0, 149.91], [130.0, 149.91], [160.0, 149.91]], "arm_l": [[105.909, 148.059], [135.891, 149.091], [165.872, 150.122]], "leg_r": [[185.0, 149.216], [223.136, 123.883], [256.297, 101.856], [250.146, 92.875]], "leg_l": [[190.909, 148.754], [229.045, 123.422], [262.206, 101.394], [256.055, 92.413]]}}}, {"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.734], [87.323, 121.296]], "head": [67.4, 123.012], "nose": [[58.706, 127.955], [52.644, 131.402]], "arm_r": [[93.232, 121.355], [93.232, 150.899], [63.232, 150.899]], "arm_l": [[87.323, 123.206], [87.323, 152.75], [57.323, 152.75]], "leg_r": [[177.909, 114.754], [204.293, 151.863], [244.293, 151.863], [244.293, 162.695]], "leg_l": [[172.0, 115.216], [198.385, 152.324], [238.385, 152.324], [238.385, 163.157]]}, {"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.561], [84.291, 122.464]], "head": [64.595, 119.044], "nose": [[55.902, 123.987], [49.84, 127.433]], "arm_r": [[90.2, 122.524], [90.2, 152.068], [60.2, 152.068]], "arm_l": [[84.291, 124.374], [84.291, 153.919], [54.291, 153.919]], "leg_r": [[173.909, 137.754], [219.21, 145.621], [258.602, 152.461], [256.692, 163.129]], "leg_l": [[168.0, 138.216], [213.301, 146.082], [252.693, 152.922], [250.783, 163.591]]}], "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.631], [85.081, 121.849]], "head": [65.1, 120.99], "nose": [[56.407, 125.932], [50.345, 129.379]], "arm_r": [[90.99, 121.908], [90.99, 151.452], [60.99, 151.452]], "arm_l": [[85.081, 123.759], [85.081, 153.303], [55.081, 153.303]], "leg_r": [[175.909, 126.254], [214.705, 150.594], [254.553, 154.028], [253.594, 164.819]], "leg_l": [[170.0, 126.716], [208.796, 151.056], [248.644, 154.489], [247.685, 165.281]]}}}, {"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.905], "nose": [[67.437, 133.905], [67.437, 127.011]], "arm_r": [[87.0, 149.91], [117.0, 149.91], [147.0, 149.91]], "arm_l": [[92.909, 148.059], [122.891, 149.091], [152.872, 150.122]], "leg_r": [[172.0, 149.216], [164.012, 104.603], [201.6, 118.076], [205.362, 107.896]], "leg_l": [[177.909, 148.754], [169.921, 104.141], [207.509, 117.614], [211.271, 107.435]]}, {"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.243], [82.625, 143.355]], "head": [62.637, 144.043], "nose": [[62.637, 134.043], [62.637, 127.149]], "arm_r": [[82.625, 145.265], [112.511, 147.84], [142.397, 150.415]], "arm_l": [[88.534, 143.415], [118.516, 144.446], [148.497, 145.477]], "leg_r": [[166.0, 137.216], [146.56, 96.159], [185.952, 102.999], [187.862, 92.331]], "leg_l": [[171.909, 136.754], [152.468, 95.697], [191.861, 102.538], [193.771, 91.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": [[169.0, 142.0], [126.032, 151.193], [84.408, 145.723]], "head": [64.484, 144.007], "nose": [[64.484, 134.007], [64.484, 127.113]], "arm_r": [[84.408, 147.633], [114.379, 148.922], [144.351, 150.211]], "arm_l": [[90.317, 145.783], [120.298, 146.814], [150.28, 147.845]], "leg_r": [[169.0, 143.216], [155.168, 100.011], [193.805, 110.207], [196.652, 99.743]], "leg_l": [[174.909, 142.754], [161.076, 99.55], [199.713, 109.745], [202.56, 99.281]]}}}, {"name": "Rotary", "camera": 90.0, "frames": [{"order": ["spine", "arm_l", "leg_l", "leg_r", "arm_r", "head"], "shade": {"arm_r": "near", "arm_l": "far", "leg_r": "far", "leg_l": "near"}, "spine": [[160.0, 122.0], [160.0, 79.161], [160.0, 38.291]], "head": [160.0, 18.595], "nose": [[169.635, 21.273], [173.344, 22.304]], "arm_r": [[152.929, 39.755], [174.525, 53.006], [197.157, 61.434]], "arm_l": [[167.071, 36.828], [188.666, 50.079], [211.298, 58.507]], "leg_r": [[153.0, 122.0], [140.321, 135.664], [136.55, 175.476], [133.701, 174.968]], "leg_l": [[167.0, 122.0], [179.679, 135.664], [183.45, 175.476], [186.299, 174.968]]}, {"order": ["spine", "arm_r", "leg_l", "leg_r", "arm_l", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[160.0, 122.0], [160.0, 79.161], [160.0, 38.291]], "head": [160.0, 18.595], "nose": [[150.365, 21.273], [146.656, 22.304]], "arm_r": [[152.929, 36.828], [131.334, 50.079], [108.702, 58.507]], "arm_l": [[167.071, 39.755], [145.475, 53.006], [122.843, 61.434]], "leg_r": [[153.0, 122.0], [140.321, 135.664], [136.55, 175.476], [133.701, 174.968]], "leg_l": [[167.0, 122.0], [179.679, 135.664], [183.45, 175.476], [186.299, 174.968]]}], "tween": {"t": 0.5, "sample": {"order": ["spine", "leg_l", "leg_r", "arm_l", "arm_r", "head"], "shade": {"arm_r": "far", "arm_l": "near", "leg_r": "far", "leg_l": "near"}, "spine": [[160.0, 122.0], [160.0, 79.161], [160.0, 38.291]], "head": [160.0, 18.595], "nose": null, "arm_r": [[149.0, 38.291], [149.0, 53.291], [149.0, 63.552]], "arm_l": [[171.0, 38.291], [171.0, 53.291], [171.0, 63.552]], "leg_r": [[153.0, 122.0], [140.321, 135.664], [136.55, 175.476], [133.701, 174.968]], "leg_l": [[167.0, 122.0], [179.679, 135.664], [183.45, 175.476], [186.299, 174.968]]}}}, {"name": "Seated Row", "camera": 0.0, "frames": [{"order": ["leg_l", "arm_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, 79.201], [149.593, 38.855]], "head": [153.066, 19.458], "nose": [[163.029, 18.6], [170.002, 17.999]], "arm_r": [[149.593, 40.765], [170.108, 62.322], [200.0, 64.822]], "arm_l": [[155.502, 38.915], [174.012, 62.165], [204.0, 63.001]], "leg_r": [[140.0, 123.216], [183.885, 109.637], [188.0, 148.821], [198.942, 147.706]], "leg_l": [[145.909, 122.754], [189.433, 108.093], [192.0, 147.404], [202.977, 146.709]]}, {"order": ["leg_l", "arm_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, 79.201], [149.593, 38.855]], "head": [153.066, 19.458], "nose": [[163.029, 18.6], [170.002, 17.999]], "arm_r": [[149.593, 40.765], [130.28, 63.373], [158.0, 74.67]], "arm_l": [[155.502, 38.915], [134.829, 60.324], [162.0, 72.849]], "leg_r": [[140.0, 123.216], [183.885, 109.637], [188.0, 148.821], [198.942, 147.706]], "leg_l": [[145.909, 122.754], [189.433, 108.093], [192.0, 147.404], [202.977, 146.709]]}], "tween": {"t": 0.5, "sample": {"order": ["leg_l", "arm_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, 79.201], [149.593, 38.855]], "head": [153.066, 19.458], "nose": [[163.029, 18.6], [170.002, 17.999]], "arm_r": [[149.593, 40.765], [149.005, 70.304], [179.0, 69.746]], "arm_l": [[155.502, 38.915], [153.003, 68.356], [183.0, 67.925]], "leg_r": [[140.0, 123.216], [183.885, 109.637], [188.0, 148.821], [198.942, 147.706]], "leg_l": [[145.909, 122.754], [189.433, 108.093], [192.0, 147.404], [202.977, 146.709]]}}}, {"name": "Shoulder Press", "camera": 0.0, "frames": [{"order": ["leg_l", "arm_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, 90.377], [95.132, 50.074]], "head": [98.605, 30.677], "nose": [[108.511, 29.306], [115.443, 28.346]], "arm_r": [[95.132, 51.984], [110.132, 77.57], [110.132, 48.026]], "arm_l": [[101.041, 50.133], [116.041, 75.719], [116.041, 46.175]], "leg_r": [[120.0, 131.216], [161.917, 112.558], [164.0, 151.897], [174.985, 151.332]], "leg_l": [[125.909, 130.754], [167.351, 111.093], [168.0, 150.48], [178.999, 150.304]]}, {"order": ["leg_l", "arm_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, 90.377], [95.132, 50.074]], "head": [98.605, 30.677], "nose": [[108.511, 29.306], [115.443, 28.346]], "arm_r": [[95.132, 51.984], [112.766, 28.082], [137.036, 10.716]], "arm_l": [[101.041, 50.133], [118.675, 26.231], [142.945, 8.866]], "leg_r": [[120.0, 131.216], [161.917, 112.558], [164.0, 151.897], [174.985, 151.332]], "leg_l": [[125.909, 130.754], [167.351, 111.093], [168.0, 150.48], [178.999, 150.304]]}], "tween": {"t": 0.5, "sample": {"order": ["leg_l", "arm_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, 90.377], [95.132, 50.074]], "head": [98.605, 30.677], "nose": [[108.511, 29.306], [115.443, 28.346]], "arm_r": [[95.132, 51.984], [125.091, 53.53], [138.711, 27.206]], "arm_l": [[101.041, 50.133], [131.0, 51.679], [144.62, 25.355]], "leg_r": [[120.0, 131.216], [161.917, 112.558], [164.0, 151.897], [174.985, 151.332]], "leg_l": [[125.909, 130.754], [167.351, 111.093], [168.0, 150.48], [178.999, 150.304]]}}}, {"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.762], [93.16, 124.133]], "head": [74.139, 118.046], "nose": [[64.176, 117.188], [57.203, 116.587]], "arm_r": [[99.069, 124.192], [127.26, 134.297], [156.238, 141.943]], "arm_l": [[93.16, 126.043], [89.959, 155.418], [60.0, 153.88]], "leg_r": [[179.909, 150.754], [225.902, 151.545], [265.896, 152.232], [265.704, 163.063]], "leg_l": [[174.0, 151.216], [219.993, 152.006], [259.987, 152.694], [259.795, 163.525]]}, {"order": ["leg_r", "arm_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.561], [90.291, 122.464]], "head": [70.595, 119.044], "nose": [[60.595, 119.044], [53.595, 119.044]], "arm_r": [[96.2, 122.524], [101.41, 93.428], [106.619, 64.333]], "arm_l": [[90.291, 124.374], [89.999, 153.917], [60.0, 153.682]], "leg_r": [[179.909, 137.754], [225.21, 145.621], [264.602, 152.461], [262.692, 163.129]], "leg_l": [[174.0, 138.216], [219.301, 146.082], [258.693, 152.922], [256.783, 163.591]]}], "tween": {"t": 0.5, "sample": {"order": ["leg_r", "arm_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, 133.136], [91.525, 123.249]], "head": [72.119, 118.484], "nose": [[62.128, 118.055], [55.135, 117.754]], "arm_r": [[97.434, 123.309], [123.414, 108.536], [148.716, 92.662]], "arm_l": [[91.525, 125.159], [89.987, 154.665], [60.0, 153.781]], "leg_r": [[179.909, 144.254], [225.697, 148.596], [265.513, 152.372], [264.459, 163.155]], "leg_l": [[174.0, 144.716], [219.788, 149.057], [259.604, 152.833], [258.55, 163.616]]}}}, {"name": "Tricep Press", "camera": 0.0, "frames": [{"order": ["leg_l", "arm_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.925], [104.688, 41.337]], "head": [106.083, 21.689], "nose": [[116.03, 20.659], [122.991, 19.939]], "arm_r": [[104.688, 43.247], [94.678, 71.099], [124.0, 64.852]], "arm_l": [[110.597, 41.397], [98.506, 68.435], [128.0, 63.031]], "leg_r": [[118.0, 125.216], [162.267, 112.9], [156.0, 151.805], [166.864, 153.503]], "leg_l": [[123.909, 124.754], [167.985, 111.79], [160.0, 150.389], [170.779, 152.551]]}, {"order": ["leg_l", "arm_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.925], [104.688, 41.337]], "head": [106.083, 21.689], "nose": [[116.03, 20.659], [122.991, 19.939]], "arm_r": [[104.688, 43.247], [109.666, 72.382], [124.0, 98.336]], "arm_l": [[110.597, 41.397], [113.172, 70.832], [128.0, 96.515]], "leg_r": [[118.0, 125.216], [162.267, 112.9], [156.0, 151.805], [166.864, 153.503]], "leg_l": [[123.909, 124.754], [167.985, 111.79], [160.0, 150.389], [170.779, 152.551]]}], "tween": {"t": 0.5, "sample": {"order": ["leg_l", "arm_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.925], [104.688, 41.337]], "head": [106.083, 21.689], "nose": [[116.03, 20.659], [122.991, 19.939]], "arm_r": [[104.688, 43.247], [95.816, 71.47], [124.0, 81.594]], "arm_l": [[110.597, 41.397], [100.045, 69.053], [128.0, 79.773]], "leg_r": [[118.0, 125.216], [162.267, 112.9], [156.0, 151.805], [166.864, 153.503]], "leg_l": [[123.909, 124.754], [167.985, 111.79], [160.0, 150.389], [170.779, 152.551]]}}}]}