Normal maps for 2D sprites that keep their shape. Most tools read brightness as height, which fails on drawn art. This one solves for a surface that fits the silhouette, then lets you paint in what the picture cannot say. Exports for Unity, Godot, Unreal, and raw OpenGL or DirectX.

Daftar masuk untuk menambah item ini ke senarai hajat anda, ikuti atau tandakannya sebagai diabaikan

Bahasa Bahasa Melayu tidak disokong

Produk ini tidak menyokong bahasa tempatan anda. Sila semak senarai bahasa yang disokong di bawah sebelum membuat pembelian

Permainan ini belum tersedia di Steam lagi

Tarikh Keluaran Dirancang: Disember 2026

Berminat?
Tambah ke senarai hajat anda dan terima pemberitahuan apabila permainan sudah tersedia.
 

Tentang Perisian Ini

Totally Normal Mapper generates normal maps for 2D sprites — for pixel art, for hand-painted sprites, for anything drawn rather than photographed.

Why drawn art breaks the usual approach

Most normal map generators read your artwork's brightness as height. That works on a photograph of rock, where a dark
patch really is a recess. It fails on drawn art, because shading is a decision the artist made and not a measurement of
the surface. Paint a shadow under a character's arm and a brightness-based tool reads a valley.

This one starts somewhere else. The silhouette is the one thing known for certain about the surface, so it solves for the
normals that fit the silhouette, and then lets you correct the result by painting the facts the picture does not state.

What it is good at

  • Shading does not corrupt it. Line detection uses colour rather than brightness, so a dark painted shadow is not
    mistaken for an inked fold — and nothing is differentiated, so nothing gets blurred.
  • Pixel art stays sharp. Output is solved at the sprite's own resolution. A 32x32 sprite exports as a 32x32
    normal map with its edges intact, not a soft approximation of one.
  • A live lit preview. Drag lights over the artwork and watch the surface respond. Art, normal, lit and split
    views, so you can judge the map against the thing it is for.
  • Whole animations at once. Load every frame as a batch. Settings are shared so the frames cannot disagree, hints
    stay per frame, and one command exports the lot.
  • Photoshop and Aseprite layers as masks. Import a PSD or an .aseprite file and map its layers straight onto hint
    layers, so a mask matches your artwork exactly instead of being traced with a brush. Re-read the file after editing it.
  • A real batch tool. Save the settings you dialled in, hand them to tnmap, and apply them to two hundred sprites.
    Ships as a standalone executable with nothing to install.

When the picture is ambiguous, you say so

A hint is a fact about your artwork that the artwork itself does not state — that an arm is in front of a torso, that an
eye socket is concave, that a belt buckle is flat. Painting one is not retouching the output. You are not pushing pixels
toward a look; you are adding something the solver then has to satisfy along with everything else. There are nine hint
layers, and the tools that paint them behave like the brushes you already use.

Exports your engine will accept

Every engine agrees on what a normal map means and disagrees on how to write it down. The disagreement is one bit —
whether green counts upward or downward — and getting it wrong produces no error message. It produces artwork where every
bump reads as a dent. So the export targets are named after engines rather than conventions:
  • Unity — green up, no flip needed
  • Godot 4 — green up, invert off
  • Unreal Engine 5 — green down, already flipped in the file
  • OpenGL — raw green up, matching Blender and most offline renderers
  • DirectX — raw green down, matching 3ds Max and Source 2

The batch tool

A scenery set is two hundred files that have to be consistent. tnmap is a standalone executable that applies one saved
configuration to all of them. It needs nothing installed — no runtime, no interpreter, not even this application — so it
belongs in a build script as readily as in a terminal.

What it is not

It is not a height map painter and not a 3D modeller, and it will not turn a sprite into a lit scene on its own. It
produces one thing: a normal map your engine can use, at the resolution you drew at.

Windows. Native macOS and Linux builds are planned.

Keperluan Sistem

    Minimum:
    • Memerlukan pemproses 64-bit dan sistem pengendalian
    • OS: Windows 10 64-bit, version 1809 or later
    • Pemproses: Any 64-bit x86 processor
    • Memori: 4 GB RAM
    • Grafik: Any GPU with WebGPU support, which in practice means Direct3D 12. Without one the solver runs on the processor: same output, slower.
    • Storan: 1500 MB ruang tersedia
    • Nota Tambahan: 64-bit only. Minimum window size 1024x700. No network connection required at any point.
    Dicadangkan:
    • Memerlukan pemproses 64-bit dan sistem pengendalian
    • OS: Windows 11 64-bit
    • Pemproses: Four cores or more
    • Memori: 8 GB RAM
    • Grafik: A discrete GPU with Direct3D 12
    • Storan: 2 GB ruang tersedia
    • Nota Tambahan: A display of 1600x1000 or larger, which is the application's default window size.
Penapis Ulasan