NormalMap

How to Make a Normal Map (Height Map or Photo)

Making a normal map comes down to three things: a good grayscale height source, sensible strength, and a clean PNG export. This guide walks through the whole process, using the free generator on this site.

Quick answer: Make a normal map in four steps: get a grayscale height map (or convert a photo to grayscale), set Strength around 2-2.5, pick OpenGL or DirectX convention, then export a PNG and load it as Non-Color in your 3D app.

Step 1 - Get or make a height map

A height map is a grayscale image where white is the highest point and black the lowest. You can export one from a sculpting tool (ZBrush, Blender), from generative software (Substance, Gaea), or by converting a photo to grayscale and boosting contrast.

  • Sculpted detail: bake a displacement or grab a height pass
  • Hand-drawn: paint in a 16-bit grayscale document
  • Photo: desaturate, set levels so it spans black to white, then blur slightly

Step 2 - Adjust strength and smoothing

Strength controls how steep the encoded slopes are. Low-contrast height maps need more strength; noisy photos need more smoothing. Start at 2-2.5 and iterate while watching the preview. Raise strength until edges read clearly, then back off if detail turns gritty.

Step 3 - Pick the right convention

OpenGL (Y+ up) is the default and suits Blender, Unity and glTF. Tick 'Flip green (DirectX)' only when the target engine or an imported asset expects DirectX convention. Getting this wrong makes lighting look inverted - bumps appear as dents.

Step 4 - Export and test in-engine

Download the PNG (never JPEG) and load it in your 3D application with the texture set to Non-Color / Normal map. Rotate a light across the surface - bumps should catch highlights on the facing side and shade on the opposite side. If it is reversed, flip the green channel and regenerate.

Frequently Asked Questions

Can I make a normal map from a photo?
Yes, but clean it up first: convert to grayscale, increase contrast, and smooth. Photos carry noise that turns into a gritty normal map, so a slight blur before generating helps a lot.
What strength should I start with?
Around 2 to 2.5. Low-contrast sources need more; noisy sources need less and more smoothing.
Why does my normal map look inverted?
The green channel convention is wrong for your target. Toggle 'Flip green (DirectX)' and regenerate.

Related Tools