Stand up

Standing up in the game cycles: the last third of sitting, leaning forward over the feet and pushing up from the ground, a chair or a ledge, back to an ordinary standing pose.

A cartoon person and a dog pushing up off bent legs, rising back to standing.

Use it in a cartoonOpen it in the block editorThe pack file (JSON)

What it is for

Stand up is the stand-up of the nine game cycles, the last third of sitting (sit down, sit, stand up): a game plays it the moment a character leaves a sit, leaning forward over its feet and pushing itself back up, from the ground, a chair or a ledge, by the same on setting as Sit down and Sit.

The principle it shows: arcs

Rising out of a sit uses the same mechanism sitting down does: the body's own position is worked out every frame from the hips' and knees' own angles, not drawn separately, so the push upward traces a natural arc rather than the legs and the body drifting apart. The move ends with one more small eased glide back to a perfectly neutral standing pose, the same whichever surface the character stood up from, so every version of this move lands on exactly the same standing shape.

The program, line by line

settings: h = 540, leg = 0.24, on = 0
when it starts
  show the side view
  if (on == 0):
    set hips 20, left leg 85, right leg 85, left shin 75, right shin 75, left foot -30, right foot -30, dx (-h*leg/2*(sin((105)*pi/180) + sin(((105) - (75))*pi/180))), dy (h*leg/2*(2 - cos((105)*pi/180) - cos(((105) - (75))*pi/180))), torso -14, left arm 34, right arm 34, left forearm 30, right forearm 30
  if (on == 1):
    set hips 24, left leg 64, right leg 64, left shin 88, right shin 88, left foot 0, right foot 0, dx (-h*leg/2*(sin((88)*pi/180) + sin(((88) - (88))*pi/180))), dy (h*leg/2*(2 - cos((88)*pi/180) - cos(((88) - (88))*pi/180))), torso -22, left arm 30, right arm 30, left forearm 40, right forearm 40
  if (on == 2):
    set hips 24, left leg 64, right leg 64, left shin 88, right shin 88, left foot 0, right foot 0, dx (-h*leg/2*(sin((88)*pi/180) + sin(((88) - (88))*pi/180))), dy 0, torso -22, left arm 22, right arm 22, left forearm 30, right forearm 30
  if (on == 0):
    at the same time:
      — 1:
        glide hips 8, left leg 16, right leg 16, left shin 40, right shin 40, left foot 16, right foot 16, torso -20, left arm 45, right arm 45, left forearm 10, right forearm 10 over 0.5 s (smooth)
      — 2:
        set dx 0, dy 0
        for 0.5 s:
          dy follows (h*leg/2*(2 - cos(((105 + -81*smoothstep(min(local/0.5, 1))))*pi/180) - cos((((105 + -81*smoothstep(min(local/0.5, 1)))) - ((75 + -35*smoothstep(min(local/0.5, 1)))))*pi/180)))
          dx follows (-h*leg/2*(sin(((105 + -81*smoothstep(min(local/0.5, 1))))*pi/180) + sin((((105 + -81*smoothstep(min(local/0.5, 1)))) - ((75 + -35*smoothstep(min(local/0.5, 1)))))*pi/180)))
    set dx (-h*leg/2*(sin((24)*pi/180) + sin(((24) - (40))*pi/180))), dy (h*leg/2*(2 - cos((24)*pi/180) - cos(((24) - (40))*pi/180)))
  if (on == 1):
    at the same time:
      — 1:
        glide hips 8, left leg 16, right leg 16, left shin 40, right shin 40, left foot 16, right foot 16, torso -20, left arm 45, right arm 45, left forearm 10, right forearm 10 over 0.5 s (smooth)
      — 2:
        set dx 0, dy 0
        for 0.5 s:
          dy follows (h*leg/2*(2 - cos(((88 + -64*smoothstep(min(local/0.5, 1))))*pi/180) - cos((((88 + -64*smoothstep(min(local/0.5, 1)))) - ((88 + -48*smoothstep(min(local/0.5, 1)))))*pi/180)))
          dx follows (-h*leg/2*(sin(((88 + -64*smoothstep(min(local/0.5, 1))))*pi/180) + sin((((88 + -64*smoothstep(min(local/0.5, 1)))) - ((88 + -48*smoothstep(min(local/0.5, 1)))))*pi/180)))
    set dx (-h*leg/2*(sin((24)*pi/180) + sin(((24) - (40))*pi/180))), dy (h*leg/2*(2 - cos((24)*pi/180) - cos(((24) - (40))*pi/180)))
  if (on == 2):
    at the same time:
      — 1:
        glide hips 8, left leg 16, right leg 16, left shin 40, right shin 40, left foot 16, right foot 16, torso -20, left arm 45, right arm 45, left forearm 10, right forearm 10 over 0.5 s (smooth)
      — 2:
        set dx 0, dy 0
        for 0.5 s:
          dx follows (-h*leg/2*(sin(((88 + -64*smoothstep(min(local/0.5, 1))))*pi/180) + sin((((88 + -64*smoothstep(min(local/0.5, 1)))) - ((88 + -48*smoothstep(min(local/0.5, 1)))))*pi/180)))
    set dx (-h*leg/2*(sin((24)*pi/180) + sin(((24) - (40))*pi/180))), dy 0
  at the same time:
    — 1:
      glide hips 0, left leg 0, right leg 0, left shin 0, right shin 0, left foot 0, right foot 0, torso 0, left arm 0, right arm 0, left forearm 0, right forearm 0 over 0.35 s (out)
    — 2:
      set dx 0, dy 0
      for 0.35 s:
        dy follows (h*leg/2*(2 - cos(((24 + -24*sin((min(local/0.35, 1))*pi/2)))*pi/180) - cos((((24 + -24*sin((min(local/0.35, 1))*pi/2))) - ((40 + -40*sin((min(local/0.35, 1))*pi/2))))*pi/180)))
        dx follows (-h*leg/2*(sin(((24 + -24*sin((min(local/0.35, 1))*pi/2)))*pi/180) + sin((((24 + -24*sin((min(local/0.35, 1))*pi/2))) - ((40 + -40*sin((min(local/0.35, 1))*pi/2))))*pi/180)))
  set dx (-h*leg/2*(sin((0)*pi/180) + sin(((0) - (0))*pi/180))), dy (h*leg/2*(2 - cos((0)*pi/180) - cos(((0) - (0))*pi/180)))

Written out in full, exactly as the engine prints them:

-h*leg/2*(sin((105)*pi/180) + sin(((105) - (75))*pi/180))

h*leg/2*(2 - cos((105)*pi/180) - cos(((105) - (75))*pi/180))

-h*leg/2*(sin((88)*pi/180) + sin(((88) - (88))*pi/180))

h*leg/2*(2 - cos((88)*pi/180) - cos(((88) - (88))*pi/180))

h*leg/2*(2 - cos(((105 + -81*smoothstep(min(local/0.5, 1))))*pi/180) - cos((((105 + -81*smoothstep(min(local/0.5, 1)))) - ((75 + -35*smoothstep(min(local/0.5, 1)))))*pi/180))

-h*leg/2*(sin(((105 + -81*smoothstep(min(local/0.5, 1))))*pi/180) + sin((((105 + -81*smoothstep(min(local/0.5, 1)))) - ((75 + -35*smoothstep(min(local/0.5, 1)))))*pi/180))

-h*leg/2*(sin((24)*pi/180) + sin(((24) - (40))*pi/180))

h*leg/2*(2 - cos((24)*pi/180) - cos(((24) - (40))*pi/180))

h*leg/2*(2 - cos(((88 + -64*smoothstep(min(local/0.5, 1))))*pi/180) - cos((((88 + -64*smoothstep(min(local/0.5, 1)))) - ((88 + -48*smoothstep(min(local/0.5, 1)))))*pi/180))

-h*leg/2*(sin(((88 + -64*smoothstep(min(local/0.5, 1))))*pi/180) + sin((((88 + -64*smoothstep(min(local/0.5, 1)))) - ((88 + -48*smoothstep(min(local/0.5, 1)))))*pi/180))

h*leg/2*(2 - cos(((24 + -24*sin((min(local/0.35, 1))*pi/2)))*pi/180) - cos((((24 + -24*sin((min(local/0.35, 1))*pi/2))) - ((40 + -40*sin((min(local/0.35, 1))*pi/2))))*pi/180))

-h*leg/2*(sin(((24 + -24*sin((min(local/0.35, 1))*pi/2)))*pi/180) + sin((((24 + -24*sin((min(local/0.35, 1))*pi/2))) - ((40 + -40*sin((min(local/0.35, 1))*pi/2))))*pi/180))

-h*leg/2*(sin((0)*pi/180) + sin(((0) - (0))*pi/180))

h*leg/2*(2 - cos((0)*pi/180) - cos(((0) - (0))*pi/180))

Try this

  1. Stand up from a chair instead of the ground (on 1 instead of 0). The starting bend is the chair's own, 64 and 88 degrees at the hips and knees, instead of the ground's 85 and 75, before the same push back to standing plays.

    In the program: params.on 0 → 1

  2. Stand up from a ledge instead (on 2 instead of 0). The legs start at the chair-like bend again, but this time the hips were never down at the ledge's own height, so the rise starts from a seated pose whose hips are already up.

    In the program: params.on 0 → 2

How it differs from Sit down and Sit

Sit down is this move's mirror, the same arcs run the other way into a sit. Sit is the pose this move leaves behind: a long, held loop rather than a motion toward anything.

Works on

Worked out by the build: it plays the move in the engine on each body and checks what moves on screen. Nobody types this table.
BodyMoves?What moves
2 legs (a person)yeswhole body, turns, body, head, arms, legs
4 legs (a dog)yeswhole body, body, head, front legs, back legs, tail, ears
no legs (the monster with no legs)yeswhole body, turns, body, arms, tail, ears

c4c:beh:stand_up · version 1.0.0 · c4c-free · by Jabbertoon