Blender AI
Normal Map Generator

Generate the height or high-poly source first, then convert it into a controlled tangent-space normal map. The useful workflow is not a colourful image alone: it is correct direction, color space, UV tangents and a tested result in Blender, Unity or Unreal.

Last verifiedOfficial product pages and pricing were checked on this date.
A Blender viewport showing a game chest beside matching grayscale height and blue-purple tangent-space normal maps

In short: generate or bake a height/detail source, turn it into a tangent-space normal map, keep the image as data, connect it through the material normal input and validate its direction in the final engine. A normal map changes lighting response, not silhouette. The generated texture is only useful when the channel convention, colour space and mesh tangents agree.

The common failure is not “the normal map looks wrong.” It is a specific disagreement between data and renderer: green channel inverted, source interpreted as sRGB, tangents missing or the wrong channel packed. If you test those contracts before adjusting artistic strength, most problems become easy to identify.

Can Blender AI generate a normal map?

Yes, when the workflow starts from real height or high-poly detail. Blender AI can generate material ideas, a height source or a detailed high-poly mesh. It cannot guarantee that every generated colour image is a physically coherent normal map. Treat the visual preview as the brief and the data conversion as the technical step.

SourceGood forWhat still needs checking
Grayscale height texturePanels, fabric, scratches, tileable surface detailLuminance, seams, scale and false baked lighting
High-poly meshAccurate detail transferred onto a game low-poly modelUVs, cage, ray distance and tangent space
Procedural shader detailControl, variation and clean data generationConversion to an image map and consistent scale
Generated colour conceptVisual direction and material paletteWhether any usable height or normal information exists

What does a normal map actually store?

A normal map stores surface-direction vectors in the RGB channels. In a tangent-space map, those vectors are relative to the mesh UV tangent, bitangent and normal. A neutral flat surface normally sits near the familiar blue-purple value, while the red and green channels tilt that direction across the surface.

This is why normal maps are data textures. Their colours are not the visible material colour. The renderer uses them to perturb lighting at shading time. Object-space normal maps store a different coordinate space and are not interchangeable with tangent-space maps.

  • R: horizontal direction relative to the tangent.
  • G: vertical direction, commonly the channel that varies between OpenGL and DirectX conventions.
  • B: the surface-facing direction in tangent space.

How do you turn height into a normal map in Blender?

Read the height texture as non-colour data, derive slope from its luminance and feed the result through a Bump node into the surface Normal input. Adjust the node strength and distance against a simple test scene before baking or exporting the image. The Blender shader-node documentation is the reference for node behaviour and colour management.

A practical setup is:

  1. Place a neutral gray-to-white height texture in the shader.
  2. Set the image Color Space to Non-Color.
  3. Feed the image through a Bump node.
  4. Connect Bump Normal to the surface Normal input.
  5. Inspect a raised ridge with one directional light.
  6. Bake or export a tangent-space normal image when required.

For detailed high-poly to low-poly transfer, use the texture-baking workflow. Baking compares real surface geometry, while height conversion infers slope from grayscale values.

Should you use OpenGL or DirectX normal direction?

Use the direction required by the target engine and content pipeline. The two conventions differ primarily in how the green channel is interpreted. A map that looks correct in Blender can appear lit backwards after import if the convention changes without conversion.

CheckCorrect resultWrong result
One light from aboveRaised bevels catch light from aboveBevels appear indented
Screen-space highlightLight moves consistently across surface detailDetail reacts in the opposite direction
Camera orbitDirection remains attached to the surfaceHighlights shift like a misaligned screen-space effect
Engine importCompression and normal type preserve directionFlat, noisy or inverted shading

Do not invert channels until you confirm the import convention. Make a backup of the source map and document whether the delivered file is OpenGL- or DirectX-style.

How do you apply a normal map in Blender?

For an image normal map, open the material’s Shader Editor and connect the image to the Color input of a Normal Map node, then connect the Normal Map node to the BSDF surface Normal input. Set the image to Non-Color and choose the tangent-space orientation the map was authored with.

Keep the mesh UVs and tangents intact. A normal map cannot compensate for stretched UV islands, missing tangents or an object with broken transforms. Test on a neutral material first so roughness, metallic reflections or baked colour do not hide direction errors.

  • Texture mode: use a normal-data texture, not a colour image.
  • Strength: adjust after direction is correct; high strength does not repair an inverted map.
  • UVs: keep island scale consistent so detail does not stretch across seams.
  • Material: inspect base colour, roughness and metallic channels independently.

Why does a normal map look inverted or washed out?

Inversion usually comes from the green-channel convention or an inverted height source. Washed-out detail commonly comes from sRGB interpretation, excessive image compression, a strength setting that is too low or a neutral base value that is not neutral. Diagnose one cause at a time.

SymptomLikely causeCheck
Bevels look pressed inwardOpposite green convention or reversed heightSingle directional light and channel comparison
Surface looks flatsRGB data, low strength or weak source contrastColor Space, node strength and height range
Noise and blocky ringsOveraggressive JPEG/block compressionLossless/PNG source and engine compression
Lighting changes at UV seamsTangent or UV mismatchSeam placement, smoothing, tangents and padding
Strength keeps looking wrongThe map direction is incorrectStop adjusting strength; fix channel direction first

How do you validate a normal map in Unity or Unreal?

Import the texture with the engine’s normal-map type, confirm it is not treated as sRGB colour, then test it on a lit sphere and on the final mesh. Compare neutral, raised and recessed areas. A sphere isolates direction; the final asset exposes UV, tangent and seam problems.

In Unity, inspect the texture importer and material slot with the Unity texture import reference. In Unreal, follow the normal-map guidance, then compare the final material under the project’s real lighting. Engine preview thumbnails are not enough.

  • Use a neutral test sphere before testing the hero asset.
  • Rotate one light around the surface and inspect direction.
  • Check tiling and seam density at gameplay distance.
  • Inspect texture compression and normal-map flags after import.
  • Verify the final shader uses the correct UV channel.

What should you generate and what needs hand checking?

Generate the material direction and height source freely. Hand-check the data contract: neutral value, height range, tangent convention, colour space, UV density and engine import. This is a small technical pass that prevents a visually attractive texture from becoming a lighting bug across the whole asset.

TaskAI-assistedHuman verification
Material conceptYesScale, direction and production restraint
Height sourceYesFalse lighting, seams and value range
High-to-low normal bakePartial geometry assistanceCage, ray distance, UVs and tangent space
Engine importNoNormal type, compression, UV channel and green convention
Final art acceptanceNoGameplay distance, lighting and material readability

Key takeaways

  • Generate height or high-poly detail before treating a texture as a normal map.
  • Normal maps store direction; they must be handled as Non-Color data.
  • Confirm OpenGL or DirectX direction with one controlled light before changing artistic strength.
  • Test the map on a sphere for direction and on the final mesh for UVs, tangents and seams.
  • Validate the actual Unity or Unreal import. A Blender viewport preview does not prove engine correctness.

Keep going

The pages that answer the next question.

Frequently asked questions

Short answers to what people ask before they commit.

Can Blender AI generate a normal map?⌄

Blender AI can generate the material artwork or height information that becomes a normal map. The final map still needs a deliberate height-to-normal conversion, correct color-space settings and a test in the destination renderer. A colourful generated image is not automatically a valid tangent-space normal map.

What does a normal map store?⌄

A normal map stores surface-direction vectors in the red, green and blue channels. It changes how light responds across a surface without adding geometry. Colour is data, not visible paint, which is why the texture must use the correct normal-map import and colour-space settings.

How do I make a normal map from a height map in Blender?⌄

Load the height texture as Non-Color data, use a Bump node to derive a normal from its luminance, connect the result to the surface Normal input and adjust strength or distance against a neutral test light. Export a baked tangent-space normal map when the destination engine requires one.

Should a normal map be OpenGL or DirectX?⌄

Use the convention requested by the destination engine and texture pipeline. The visual difference is usually the direction of the green channel. Unity and Unreal each expose their own import and material behaviour, so test the exported map rather than choosing a convention by guesswork.

Why does my Blender normal map look inverted?⌄

The green channel may use the wrong convention, the texture may be interpreted as sRGB colour, the object may lack correct tangents or the source height may be inverted. Test with one directional light before changing the art. A flipped lighting response usually identifies a channel or color-space problem.

Can I use a generated colour texture as a normal map?⌄

No. A colour texture cannot supply reliable surface-direction data unless it was generated specifically for that purpose. Use a height or grayscale source and a controlled conversion, or bake from an actual high-poly surface. Inspect the blue channel and neutral areas before using the map in production.

Should normal maps be sRGB or Non-Color?⌄

Normal maps are data and are normally imported as Non-Color or linear data, not sRGB colour. Use the destination engine’s dedicated normal-map texture type where available. Incorrect colour management can flatten, sharpen or distort the apparent surface direction.

Put the workflow to work.

Sign in with Google, pick a plan, and generate your first asset.

Compare plans
Blender AI Normal Map Generator: Height to Normal Map