Getting started

From a sprite on disk to a normal map in your engine. Five minutes, and the only decision that really matters is the last one.

1. Open a sprite

File ▸ Import ▸ Base sprite…, or drag a PNG onto the window. A sprite with transparency around it is what the tool wants — the transparent edge is the silhouette, and the silhouette is what it solves from.

The application opens with a sample sprite already loaded, so you can look around before committing your own artwork.

Artwork with no transparency has no silhouette, and the status bar will say so. A fully opaque rectangle gives the solver nothing to work from and the result will be close to meaningless. Trim your sprite, or paint the background out.

2. Look at it

The result appears immediately and updates as you change things. Four view modes sit at the right of the options bar:

  • Art — your artwork, unchanged.
  • Lit — the artwork lit by the normal map. This is the one to judge by.
  • Normal — the map itself, in the usual purple.
  • Split — art and lit side by side, with a divider you can drag.

Press V for the Lights tool and drag a light across the artwork. A surface that responds convincingly as the light moves is a good normal map; one that stays flat, or that lights up in the wrong places, is telling you something.

3. Set the detection scale, if it looks wrong

The tool measures your line width when the sprite loads and writes what it found into Contrast radius in the inspector, under Drawn lines. It also names what it measured — "hairline ink", "soft brushwork" and so on — just above the control.

That measurement is usually right and is worth a glance. If your artwork mixes one-pixel ink with broad brushwork, the measurement lands between them and neither is served well; set it by hand to whichever matters more.

4. Correct anything obviously wrong

At this point most sprites are close. The usual remaining problems and their fixes:

What you seeReach for
A limb blends into the body behind itIn front D — fill the nearer part
A hard edge looks roundedCut outline C — paint along the outline
Painted shading read as an inked foldRemove stroke E
A fold the detection missedAdd stroke B
A flat panel bulging outwardFlatten F

Each is covered properly in Painting hints. Undo with Ctrl+Z — it applies to painting, and every stroke is one step.

5. Export

File ▸ Export normal map… opens a dialog. The important field is the target: pick the engine you are shipping in, not a coordinate system. Unity, Godot 4, Unreal Engine 5, and raw OpenGL or DirectX if you know which you want.

Getting this wrong produces no error message. It produces artwork where every bump reads as a dent, which is easy to miss on a noisy surface and unmistakable on a hard crease. If you are unsure which your pipeline expects, export a calibration target once — see Exporting — and you will be right for every sprite afterwards.

Then what

  • Save your work as a project: File ▸ Save project (Ctrl+S). It embeds the sprite, so it reopens intact, and later saves go back to the same file without asking.
  • Save just the settings as a preset, to reuse on other sprites and to hand to the batch tool. See Files and presets.
  • Got a whole animation? Frames and animation.