Documentation

Totally Normal Mapper generates normal maps for 2D sprites. This documentation covers every function in the application, the batch tool that ships alongside it, and the handful of things about how it works that are worth knowing as a user.

What it does differently

Most normal map generators read the artwork's brightness as height. Bright means high, dark means low, and the surface is whatever gradient falls out. On a photograph of rock that is a fair guess. On drawn art it is the wrong question, because the shading is a decision somebody made about how the character should look, not a measurement of a surface. A generator working from brightness cannot tell a painted shadow from a real fold, so it carves your paint choices into the geometry.

This tool starts somewhere else. The silhouette is the one thing an image states about a surface with certainty: where the artwork ends, the surface has turned away from the viewer. From that boundary the tool works out a surface that fits, and reads your line work — which it detects by colour rather than by brightness — as places the surface folds.

Two consequences follow, and they are the practical reasons to use it:

  • Shading in the artwork does not corrupt the result. Detection ignores how dark something is in favour of how colourful it is, so a grey shadow over green skin is not mistaken for an inked line.
  • Pixel art stays sharp. Nothing is being differentiated, so nothing is being blurred. A 32×32 sprite exports as a 32×32 normal map with its edges intact.

What it asks of you in return

A silhouette does not contain every answer. An arm crossing a body looks, to any algorithm, exactly like a fold in one continuous surface. A hard-cut edge and a surface curving away look identical from outside. Where the picture is genuinely ambiguous, the tool does not guess — it lets you paint the missing fact onto a hint layer, and hints are most of what you will spend your time on once the basics are set. Painting hints is the page to read properly.

Where to start