Stand up (seen from the front)

Standing up drawn facing the camera: the character rises from the ground, a chair or a ledge back to an ordinary standing pose, for a game that shows its character from the front.

A cartoon person and a dog facing the camera, 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 (seen from the front) is Stand up drawn facing the camera instead of in profile, for a game that shows its character from the front. It rises out of the pose Sit (seen from the front) holds, from the ground, a chair or a ledge, ending at the same neutral standing pose every time.

The principle it shows: arcs

The rise uses the same mechanism as the side view's stand-up: the body's own height is worked out from the legs' bending angles as they straighten, rather than drawn separately, so the push upward still traces a natural arc. Because a front view has no knee-fold to tell the ground, the chair and the ledge apart, the rise starts from the same pose and plays the same way regardless of which surface the character is meant to be standing up from.

The program, line by line

settings: h = 540, leg = 0.24, on = 0
when it starts
  show the front view
  if (on == 0):
    set left leg 85, right leg 85, left shin 0, right shin 0, left foot 0, right foot 0, left arm 16, right arm 16, left forearm 20, right forearm 20, dy (h*leg/2*(2 - cos((85)*pi/180) - cos((0)*pi/180) + 0.55*sin((0)*pi/180)))
  if (on == 1):
    set left leg 85, right leg 85, left shin 0, right shin 0, left foot 0, right foot 0, left arm 16, right arm 16, left forearm 20, right forearm 20, dy (h*leg/2*(2 - cos((85)*pi/180) - cos((0)*pi/180) + 0.55*sin((0)*pi/180)))
  if (on == 2):
    set left leg 85, right leg 85, left shin 0, right shin 0, left foot 0, right foot 0, left arm 16, right arm 16, left forearm 20, right forearm 20, dy (h*leg/2*(2 - cos((85)*pi/180) - cos((0)*pi/180) + 0.55*sin((0)*pi/180)))
  if (on == 0):
    at the same time:
      — 1:
        glide left leg 30, right leg 30, left shin 30, right shin 30, left foot 0, right foot 0, left arm 30, right arm 30, left forearm 10, right forearm 10 over 0.5 s (smooth)
      — 2:
        set dy 0
        for 0.5 s:
          dy follows (h*leg/2*(2 - cos(((85 + -55*smoothstep(min(local/0.5, 1))))*pi/180) - cos(((0 + 30*smoothstep(min(local/0.5, 1))))*pi/180) + 0.55*sin(((0 + 30*smoothstep(min(local/0.5, 1))))*pi/180)))
    set dy (h*leg/2*(2 - cos((30)*pi/180) - cos((30)*pi/180) + 0.55*sin((30)*pi/180)))
  if (on == 1):
    at the same time:
      — 1:
        glide left leg 30, right leg 30, left shin 30, right shin 30, left foot 0, right foot 0, left arm 30, right arm 30, left forearm 10, right forearm 10 over 0.5 s (smooth)
      — 2:
        set dy 0
        for 0.5 s:
          dy follows (h*leg/2*(2 - cos(((85 + -55*smoothstep(min(local/0.5, 1))))*pi/180) - cos(((0 + 30*smoothstep(min(local/0.5, 1))))*pi/180) + 0.55*sin(((0 + 30*smoothstep(min(local/0.5, 1))))*pi/180)))
    set dy (h*leg/2*(2 - cos((30)*pi/180) - cos((30)*pi/180) + 0.55*sin((30)*pi/180)))
  if (on == 2):
    at the same time:
      — 1:
        glide left leg 30, right leg 30, left shin 30, right shin 30, left foot 0, right foot 0, left arm 30, right arm 30, left forearm 10, right forearm 10 over 0.5 s (smooth)
      — 2:
        set dy 0
        for 0.5 s:
          dy follows (h*leg/2*(2 - cos(((85 + -55*smoothstep(min(local/0.5, 1))))*pi/180) - cos(((0 + 30*smoothstep(min(local/0.5, 1))))*pi/180) + 0.55*sin(((0 + 30*smoothstep(min(local/0.5, 1))))*pi/180)))
    set dy (h*leg/2*(2 - cos((30)*pi/180) - cos((30)*pi/180) + 0.55*sin((30)*pi/180)))
  at the same time:
    — 1:
      glide left leg 0, right leg 0, left shin 0, right shin 0, left foot 0, right foot 0, left arm 0, right arm 0, left forearm 0, right forearm 0 over 0.35 s (out)
    — 2:
      set dy 0
      for 0.35 s:
        dy follows (h*leg/2*(2 - cos(((30 + -30*sin((min(local/0.35, 1))*pi/2)))*pi/180) - cos(((30 + -30*sin((min(local/0.35, 1))*pi/2)))*pi/180) + 0.55*sin(((30 + -30*sin((min(local/0.35, 1))*pi/2)))*pi/180)))
  set dy (h*leg/2*(2 - cos((0)*pi/180) - cos((0)*pi/180) + 0.55*sin((0)*pi/180)))

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

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

h*leg/2*(2 - cos(((85 + -55*smoothstep(min(local/0.5, 1))))*pi/180) - cos(((0 + 30*smoothstep(min(local/0.5, 1))))*pi/180) + 0.55*sin(((0 + 30*smoothstep(min(local/0.5, 1))))*pi/180))

h*leg/2*(2 - cos((30)*pi/180) - cos((30)*pi/180) + 0.55*sin((30)*pi/180))

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

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

Try this

  1. Take 0.8 seconds for the rise instead of 0.5. The stand-up becomes a slower, more deliberate push rather than a quick one.

    In the program: ramp · over 0.5 → 0.8

  2. End the move with the left arm still raised 60 degrees instead of back at the side. The character finishes standing with one arm held up, rather than fully at rest.

    In the program: ramp · to.part:arm:-1 0 → 60

How it differs from Stand up and Sit (seen from the front)

Stand up is the same motion drawn in profile, where the on setting genuinely changes the rise for the ground, a chair and a ledge. Sit (seen from the front) is the pose this move leaves behind.

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, arms, legs
4 legs (a dog)yeswhole body, turns, front legs, back legs
no legs (the monster with no legs)yeswhole body, arms

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