Inbetweening
Generating cels between two or more drawings by transporting the artist's own strokes — the sheet, the correspondence editor, and the limits.
Reference
- Panel
- Timeline
- Section
- Generate Inbetween
- Menu
- Animation ▸ Show Timeline
Inbetweening fills the frames between two drawings you have already made. It runs entirely on the device, and it performs no generative pixel synthesis. There is no model and no image generation anywhere in it. Every stroke it outputs is one of your own strokes, transported — moved, morphed, faded — never invented. The generated frames are ordinary cels; draw over any of them.
Selecting the keys
On the Timeline header, between Remove cel and the onion-skin menu. Opens the Generate Inbetween sheet. Disabled until the cel selection is a valid candidate.
Keys are chosen by tapping cel blocks in the dope sheet; tapping a selected cel again deselects it. The Inbetween button enables only when all of the following hold:
- Between two and eight cels are selected.
- They are all on the same track.
- They are on distinct frames.
- Every one of them holds a real drawing. A single blank cel disqualifies the whole selection — a blank has nothing to interpolate.
Selecting three or more cels means the middle ones are breakdowns, which changes how timing and arc are decided. Selecting exactly two enables hand-anchoring of raster patches.
What the engine does
- Weld. Each key's strokes are welded into shapes. Strokes that continue or retrace one another — a head roughed in over three overlapping passes, a lid and an iris — become one logical stroke. Individual passes have no stable identity across two drawings; the shape they compose does.
- Match. Shapes are matched between the keys, then the member strokes are matched locally inside each matched shape pair.
- Morph. Matched pairs are morphed point by point at a common node count.
- Transport. Strokes that matched nothing are carried along the motion field the matched strokes imply, so an appearing stroke slides into place rather than materialising where it will end up. Unmatched strokes fade in or out.
A stroke matched to nothing fades instead, which generally reads better than a wrong match.
Raster content — a lifted selection is pixels, not a polyline — is handled two ways. A raster patch can be hand-anchored to a source shape and travel along that tether, or it can be traced: its alpha is thresholded at a deliberately low floor (the faint tapering tail of a pencil line is still the line), morphologically closed to seal grain gaps, thinned to a one-pixel skeleton, and walked into polylines. Traced raster lines are first-class — selectable, weldable, matchable and morphable.
Timing, arc and regeneration
| Selection | Timing comes from | Easing | Arc comes from |
|---|---|---|---|
| Two keys | The easing curve in the sheet | Applied | The Arc slider |
| Three or more keys | The frames you put the breakdowns on | Not applied | The breakdown drawings |
| Loop on | Wraps back to the first key | Not applied | — |
With breakdowns, neither timing nor arc is guessed and neither is overridden in the sheet: reparametrising time would slide the drawn poses off the frames chosen for them. To retime a breakdown, move its cel.
Generation clears the cels strictly between the selected keys before it runs — a pose worth keeping is, by definition, selected as a key. The whole action is one undo step. If a gap is shorter than the number of frames requested, the gap is opened and later cels shift right to make room; the sheet warns rather than quietly generating fewer. After generating, the keys stay selected and the playhead moves to the frame after the first key.
The Generate Inbetween sheet
The sheet is titled Generate Inbetween, with Cancel and Generate in the toolbar. Generate is disabled whenever the selection stops being a valid candidate.
Preview
A horizontal strip of thumbnails: the first key or keys blue, the inbetweens grey, the last key orange. It samples two frames per gap and is recomputed straight from the engine whenever a control changes, using the same settings the real generation uses — what the strip shows is what Generate bakes.
Frames
How many cels to make in the gap. When the selection contains breakdowns the stepper reads Minimum frames per gap instead, since each gap has its own length.
A scrolling row of named curves; the active one is tinted. Hidden entirely when the selection contains breakdowns.
Drag the bezier handles directly. The vertical axis is shown from −0.35 to 1.35, giving headroom to reach overshoot handles; the horizontal axis is clamped to 0–1. Hidden when the selection contains breakdowns.
The named easing presets are:
| Preset | Feel |
|---|---|
| Linear | Constant speed throughout |
| Ease In | Starts slowly, arrives at speed |
| Ease Out | Starts at speed, settles in |
| Ease In-Out | Slow at both ends |
| Smooth | A soft, front-loaded ease |
| Back | Overshoots the destination and returns |
| Anticipate | Pulls back before moving off |
| Antic+Over | Pulls back, then overshoots |
Motion
Closes the action back onto the first drawing. The closing key is virtual — the first key's own drawing, one wrap-gap past the last — and is never inserted as a cel. Evenly spaced walk keys wrap at their own rhythm.
Limits the Wave, Stretch and Imperfection modifiers to the bounds of the current lasso region, so a cape can ripple, a fist can smear, or a loose sketch can boil while the rest of the drawing stays rigid. Requires a region of at least three points. While a scope is set the sheet reads Modifiers scoped to selection and the button becomes Whole drawing.
"bows the motion path sideways." Two drawings say nothing about which way a motion bows, so this is not derived — it is the artist's handle. With breakdowns present it is replaced by a read-only row reading From breakdown.
"strokes far from the centre drag behind."
"stroke tips trail their roots (tails, hair)."
"overshoot and ring down like jelly."
Feel
A disclosure group titled Feel — stretch, wave, boil, fade. Once any of its controls is off its default the title reports the count, for example "Feel — stretch, wave, boil, fade (2 active)".
"fast strokes elongate and smear."
"flag/cloth/hair ripple from the anchored end." The slider sets the amplitude; the wavelength and cycle count are fixed.
"hand-drawn wobble, so inbetweens don't look too clean."
"how fast appearing/vanishing strokes fade (low = snap, e.g. a blink)."
Strokes
Shown once a correspondence has been computed. It reports Matched, Fading out and Fading in counts, and opens the editor.
Opens the correspondence editor full-screen.
Raise it when strokes that should match are fading instead. Lower it when unrelated strokes are being pulled together.
The correspondence editor
Titled Stroke Links. Geometry cannot always settle a correspondence: when a profile turns to face the viewer, the visible eye migrates inward while the far eye appears at the outer edge, and with nothing else in the drawing to establish the motion both readings are equally consistent. This is where the artist settles it; everything downstream stays automatic.
The editor works at shape level — the same welded logical strokes generation matches at. Taps land on ink, and the tool understands which shape that ink belongs to.
The two keys are shown side by side, divided by a dashed line, at one shared scale so the drawings read at their true relative size, but each centred on its own drawing so that a real move never pushes half the face out of its pane.
Shown only with three or more keys: Key 1 → 2, Key 2 → 3, and so on. Changing the segment
clears the current selections and raster links and re-derives the automatic matches.
Resets zoom and pan. Appears only once zoomed in; the label reports the current zoom.
Discards every hand-made override and clears the selections. Disabled when there are none.
With a first-cel shape selected: declares that this ink is not in the second drawing and should fade out.
With a linked second-cel shape selected: declares that this ink is new and should fade in rather than be matched.
With a hand-anchored raster patch selected: releases its tether.
Links them. Tapping several partners makes a many-to-many link, and tapping an already-pinned partner again unlinks it.
Inspects its link and reports its cost. A bare tap never rewires anything on its own.
Anchors the patch's motion to that shape. Available only when exactly two keys are selected.
Pans. A release under 8 pt of travel still reads as a tap.
The colour language is the whole point of the editor — a wrong pairing, a chin painted the same colour as an ear, is impossible to miss.
| Colour | Meaning |
|---|---|
| A shared hue on both panes | Same colour = linked pair |
| Blue | Unmatched, first cel |
| Orange | Unmatched, second cel |
| Green | Pinned by hand, and raster tethers |
Hand-made pins are always honoured, whatever they cost the solver. Shapes pinned to a shared partner are merged into one shape per side — that is what a many-to-many link means. Overrides are kept per segment.
With no cels selected the editor reads "No cels selected — Select two drawing cels on one track."
Limits and failure modes
Inbetweening degrades rather than emitting garbage: where it cannot establish a correspondence it fades rather than guessing. The real limits are these.
- Large rotations read the short way round. Above roughly 100° of turn between two keys the sheet warns and names the segment. The fix is a breakdown between them.
- Symmetric shapes are ambiguous outright. A wheel has no way to say which spoke went where; it needs a key per spoke interval.
- Blank cels cannot be inbetweened. One in the selection disqualifies the whole thing.
- Eight keys maximum. Selecting a ninth drops the oldest.
- Raster patches can be hand-anchored across one direct key-to-key transition only — the option requires exactly two selected keys, because a breakdown has several active segments while a raster patch has one authored destination.
- Regenerating destroys unselected cels inside the span. Any drawing between the keys that is worth keeping must be selected as a key.
- Ambiguous correspondence is unsolvable by geometry. No cost function settles the profile-turn case, which is precisely why the correspondence editor exists.
