Frames and animation
An animation is forty files that have to agree. Doing them one at a time through a user interface is not a workflow, and doing it by hand guarantees they disagree — which shows up in motion as flicker, and is far more noticeable than any single frame's error.
Opening a batch
Drop several PNGs onto the window, or File ▸ Import ▸ Animation frames…. A strip appears along the bottom with a thumbnail per frame.
Frames are ordered by name, counting numerically, so run_2 comes before run_10. Plain alphabetical order gets that
backwards, and the symptom is not "the tool sorted badly" — it is an animation that does not move properly.
Flat images only. A batch of layered documents is a reasonable thing to want, but each one carries the question the import dialog exists to ask, and answering it forty times is not a workflow.
Moving around
- , and . step to the previous and next frame, wrapping at the ends.
- Click any thumbnail to jump to it.
- A dot on a thumbnail means that frame has hints painted on it.
What is shared and what is not
This is the one thing about a batch worth getting straight, and the whole design follows from it.
Settings are shared. Every frame is solved with the same settings, because a per-frame setting is precisely how frames come to disagree. Change Follow overall form and it changes for the whole animation.
Hints are per frame. A hint is a claim about particular pixels — this outline is a hard edge, this limb is in front — and the pixels move. Sharing them would apply frame 1's silhouette to frame 40's pose, which does not fail gracefully: it produces confident nonsense.
The detection scale is measured once, not per frame. Your line width is a fact about your hand and your sprite scale, not about a particular frame, and re-measuring per frame would let it drift by a pixel between two frames — manufacturing exactly the flicker the strip exists to catch.
Undo is per frame. Stepping to another frame starts a fresh undo stack, because the old one addresses pixels of a different picture.
Exporting the animation
File ▸ Export every frame… asks for a folder once, then solves and writes every frame. Files are named
<original>_normal.png — the same names the batch tool writes, deliberately, so that a folder exported from
here and the same folder run through tnmap do not end up as two competing sets in your texture directory.
This solves each frame in turn and takes about as long as one solve multiplied by your frame count. The status bar counts up as it goes.
Projects and batches
File ▸ Save project saves the whole batch: every frame's artwork, every frame's hints, the shared settings and the light rig. Reopening restores the animation in order.
Which frame you were looking at is not saved; the order is. Reopening lands on frame 1.
What the strip cannot do yet
There is no way to delete a frame from an open batch, add one to it, or reorder them. All three are plausible and none has an obviously right shape — an editable strip starts to want a timeline, and that is a larger feature than it looks. Reopen the set you want in the meantime.
Checking for consistency
The reason to have the strip at all:
- Set your settings on the frame with the most going on.
- Step through every frame with . in Lit view, with a light placed somewhere raking.
- Watch for a frame that jumps. A single frame reading differently from its neighbours is nearly always one of two things: a silhouette that changed enough to alter what the detection found, or a hint painted on one frame and not the next.