| name | basketball-freethrow |
| description | Mimes a calm basketball free throw, setting the ball, dipping the knees, and extending up with a wrist follow-through. Use when the command mentions free throw, freethrow, foul shot, or shoot a free throw. |
| category | sport |
| disable-model-invocation | true |
| subskills | ["move-arm","move-leg","move-hand-and-fingers","balance-and-posture"] |
basketball-freethrow
A controlled shooting motion: set the ball with both hands, dip the knees, then extend up and out and flick the wrist into a "gooseneck" follow-through. A non-looping sequence.
How
- Set & dip: shooting hand under (
RightUpperArm:[80,0,-10],RightForearm:[0,0,120]), guide hand on the side (LeftUpperArm:[80,0,20],LeftForearm:[0,0,-100]), knees soft (*UpLeg:[20,0,0],*Leg:[30,0,0]), root.y:-0.1.
- Extend up: legs straight, arm reaches up (
RightUpperArm:[20,0,80]), root.y:0.
- Follow-through: wrist snaps (
RightUpperArm:[10,0,90],RightHand:[40,0,0]).
Example
- "shoot a free throw" ->
{"durationMs":1600,"say":"Nothing but net.","sequence":{"loop":false,"frames":[{"t":0,"pose":{"RightUpperArm":[80,0,-10],"RightForearm":[0,0,120],"LeftUpperArm":[80,0,20],"LeftForearm":[0,0,-100],"LeftUpLeg":[20,0,0],"RightUpLeg":[20,0,0],"LeftLeg":[30,0,0],"RightLeg":[30,0,0]},"root":{"y":-0.1}},{"t":0.6,"pose":{"RightUpperArm":[20,0,80],"RightForearm":[0,0,20],"LeftUpLeg":[0,0,180],"RightUpLeg":[0,0,180],"LeftLeg":[0,0,0],"RightLeg":[0,0,0]},"root":{"y":0}},{"t":1,"pose":{"RightUpperArm":[10,0,90],"RightForearm":[0,0,0],"RightHand":[40,0,0]}}]}}