Simply Broken
Exploring / Launch Videos, Built from Code / v3
Version 3 · 22 August 2026

A rigged fox, not a sprite

The note on the last cut was exact: he jumped around like a PowerPoint icon. He did. Every version until now moved one flat drawing of a fox from place to place, which is not animation, it is transport. This one takes the fox apart into six pieces with their own pivots and animates the pieces. He walks on four legs, his head lags his body, his tail carries through after he stops, and he blinks. Twenty seconds, rendered in thirteen.

The finished render. 20 seconds, 1920 by 1080, 600 frames, 1.0 MB after a web encode. Every pose in it is computed from joint angles; there is no drawn pose anywhere in the file.
The thing that changed

You cannot animate a character you cannot take apart

This is the whole lesson, and it cost three attempts to learn properly. Our fox existed as flat cutouts: one image per pose, fourteen of them. A flat image can be moved, scaled and rotated. It cannot walk, because walking is parts moving against each other.

Two ways to get parts failed before the third worked.

First, drawing a rig by hand in SVG. The machinery worked on the first try, the drawing did not: four passes and it still read as a generic cartoon fox rather than ours. Second, cutting the existing artwork along its own ink outline. That fails for a structural reason worth knowing: in this character the head flows into the chest with no dividing line, so a region split returns one shape of 243,000 pixels. There is nothing to cut along.

Six separated fox body parts on one sheet: a head with both ears, a torso with a neck stub, a bushy tail, a front leg with its paw, a back leg with its paw, and a spare ear.
The puppet sheet. Six parts, generated as ONE image rather than six, which is the trick: one generation means one consistent style by construction, instead of six near misses that have to be reconciled.

The parts came out of the same image pipeline that produced the character in the first place. Then a connected component pass cut them apart, and each piece became a layer with its own pivot: the hips, the shoulders, the base of the tail, the base of the neck.

The walk

Six frames of one stride

Six consecutive frames of one walking stride, showing the front and back legs swinging in opposite phase, the body rising and falling, and the tail swinging behind.
One stride, 0.72 seconds, sampled six times. The legs are in a different position in every frame because they are four separate layers on hip pivots, not a picture of a fox.
What is riggedWhat it does, and why it matters
Four legsEach on a hip pivot. Diagonal pairs swing in antiphase, which is how four legged animals actually walk. The far pair carries a slight tint so the near pair reads in front.
Body bobRises twice per stride, at the middle of each swing. Without it the fox slides along a rail.
Head lagThe head bobs on the same rhythm but 60 milliseconds late. That offset is the single clearest signal that a thing is alive rather than rigid.
Tail follow throughSwings at half the leg rate while walking, then overshoots and settles on a spring when he stops. The tail arrives after the body does, always.
Head as a performanceHe looks up at the headline, tracks the typing across the search bar, snaps up when the answer lands, and counts the three results with three small turns.
BlinkDown in 60 milliseconds, up in 100. A symmetrical blink looks mechanical; real ones close faster than they open.
BreathingTwo percent of vertical scale on the torso under every held beat.
Plant and settleWhen he stops walking the body keeps rotating for a beat and comes back on a spring, and the tail whips a moment later still.
The rule this earned

Before animating any character, ask what it is made of. If the answer is one flat image, the honest next step is not a cleverer animation, it is a rig. Everything downstream, the walk, the lag, the follow through, the blink, is cheap once the parts exist and impossible before.

Cost

What this actually took

The rig parts cost a few cents of image generation. Everything else, the cutting, the rigging, the animation and the render, is the same free local toolchain as the first two cuts: headless Chrome and FFmpeg, no API key, nothing uploaded. The render is now the fastest part of the process by a wide margin: thirteen seconds for six hundred frames.

The rig is reusable, which is the real return.

A rendered film is finished the moment it exists. A rig is an asset: the next film, the next social cut, an app onboarding animation and a loading state all draw on the same six parts and the same joint code. The expensive part was deciding the character had to come apart. Doing it again costs almost nothing.

Next

What is still missing

  1. Sound. Three cuts in and it is still silent. Footsteps on the walk cycle would do more for this film than any further animation.
  2. More parts. The ears are painted into the head, so they cannot flick independently. A sheet with separated ears and a jaw would buy a lot of expression for one more generation.
  3. A sit and a turn. He can only walk and stand facing right. A second sheet in three quarter view would let him turn to camera.
Method

Run on 22 August 2026 on an Apple M4 desktop. HyperFrames 0.8.8, headless Chrome and FFmpeg. Rig parts generated as a single cutout sheet with gpt-image-2 at medium quality, after a low quality probe, then separated by a connected component pass at an alpha threshold of 128. 600 frames rendered in 12.9 seconds. The checker passed with zero errors; it caught one real bug during the build, a CSS transform on the blink lid that the animation would have silently overwritten.

Press Notes at the bottom right to mark up any block, or click any line to edit it directly.

Back to the topic · v2, the pose library · v1, the pipeline proved · All explorations