Normal Map Baking: The Complete Workflow from High Poly to Game-Ready
Learn normal map baking from high poly to low poly. Compare Blender, Substance Painter, and Marmoset, fix seams and artifacts, and set up baked maps in Unity and Unreal.
August 12, 2026
You sculpted a detailed sci-fi crate. Panel lines, rivets, scratches, a worn manufacturer stamp. The high poly model sits at 4 million triangles. Your game target is 800 triangles per prop. You cannot ship the sculpt. You bake a normal map instead, and the low poly crate picks up every scratch and rivet as pure lighting data. That is normal map baking: transferring surface detail from a high poly mesh onto a low poly mesh through a texture.
This guide covers the full normal map baking workflow, compares the tools that matter, fixes the errors that waste your afternoon, and shows how baked maps behave once they hit Unity or Unreal.
What Is Normal Map Baking?
Normal map baking takes the surface direction data of a high poly model and bakes it into a texture that a low poly model can use. The low poly mesh stays cheap to render. The normal map fakes the lighting of the expensive mesh on top of it.
How Normal Map Baking Works
Baking sends rays from the low poly surface outward along its vertex normals. Each ray hits the high poly surface and records the direction the high poly face is pointing. That direction gets encoded as RGB in the normal map. Red stores the X axis, green stores the Y axis, blue stores the Z axis. When the GPU samples the map, it perturbs the low poly normals so they catch light as if the high poly geometry were really there.
The result is a low poly mesh that looks high poly under lighting. No extra geometry. No extra vertex cost. Just a texture read.
Tangent Space vs Object Space Normal Maps
Most game normal maps use tangent space. A tangent space normal map is relative to the UV layout of the model, so you can reuse the same map across different meshes and it rotates correctly with the object. The flat blue color (128, 128, 255) means “pointing straight out, no perturbation.”
Object space normal maps store direction in world coordinates. They look colorful and chaotic. They survive deformation poorly, so they break on animated characters. Use tangent space for characters, props, and anything that moves. Use object space only for static, non-deforming surfaces where you need absolute world direction.
Why Bake Normal Maps Instead of Shipping High Poly
A 4 million triangle crate costs 4 million vertex shader executions per frame, plus draw call overhead, plus memory. An 800 triangle crate with a normal map costs 800 vertices and one texture sample. On a scene with 200 props, that difference is the gap between 60 fps and a slideshow.
Baking also decouples detail from performance. You author detail once at high resolution, then ship it as a 2K or 4K texture that any low poly mesh can wear.
The Normal Map Baking Workflow from High Poly to Low Poly
The pipeline has five stages. Skip one and you get seams, flipped normals, or a map that does nothing.
Step 1: Build or Import a High Poly Source Model
Start with the detailed mesh. This is your ZBrush sculpt, your subdivided boolean, or a generatively produced high poly. The high poly needs clean, manifold geometry with the surface detail you want to capture: bevels, panel gaps, fabric weave, skin pores.
If the source model is generated rather than sculpted by hand, an AI-generated high poly mesh with PBR textures can serve as the bake source instead of spending hours in ZBrush. We cover that approach in a later section.
Step 2: Model the Low Poly Game Mesh
Build the low poly version that ships in the game. Match the silhouette of the high poly. Keep edge flow clean so the mesh deforms well and shades smoothly. For topology principles that hold up under baking, see our clean topology mesh best practices.
The low poly does not need the detail. It needs the shape. The normal map supplies the rest.
Step 3: Unwrap Clean UVs
Unwrap the low poly mesh. No overlaps. Even texel density across islands. Enough padding between islands so the bake margin does not bleed one island into another.
Bad UVs are the number one cause of baking failures. If two islands share space, the baker writes detail from both into the same texels and you get doubled or smeared detail. For edge loop strategy that supports clean unwrapping, see our quads vs triangles guide.
Step 4: Set Up a Cage or Ray Distance
The baker needs to know how far to shoot rays. You have two options.
Cage mesh. A cage is a copy of the low poly, inflated outward along normals. Rays travel from the cage surface to the high poly. A cage gives you precise control over problem areas like deep recesses or thin protrusions. Use a cage when the high poly has overhangs, cavities, or sharp extrusions that a fixed ray distance would miss.
Ray distance. A fixed ray distance shoots rays a set length from the low poly surface. Set it too short and rays never reach the high poly, leaving blank spots. Set it too long and rays pass through the high poly and hit the back side, inverting detail. A safe starting range is 0.01 to 0.1 units depending on your scene scale, then tune per mesh.
Step 5: Bake and Export Texture Maps
Run the bake. The output is a normal map, usually PNG or TIFF. Also bake an ambient occlusion map if you want contact shadows in crevices, and a curvature map if your tool supports it for edge wear. Export at 2K for most props, 4K for hero assets seen up close.
For a full guide on the PBR texture set that pairs with your normal map, see our textures for games PNG guide.
Normal Map Baking Tools Compared
Four tools dominate production. They bake the same math but differ in speed, control, and pipeline fit.
Blender Normal Map Baking
Blender bakes normal maps for free. Set the render engine to Cycles, add an Image Texture node to the low poly material, select the high poly and low poly, enable Selected to Active, and hit Bake with type Normal. Blender supports cage meshes through the Extrusion and Max Distance fields. For the exact panel layout, see Blender’s official baking documentation.
The downside is workflow friction. Blender’s baker is powerful but bare. No live preview, no built-in ID map, and you manage margins and padding by hand. For solo devs and tight budgets it is the default. For teams shipping daily, it is slow.
Substance Painter Baking
Substance Painter is the studio standard. It bakes normal, ambient occlusion, curvature, position, and ID maps in one pass, with a live viewport that shows errors before you commit. Its matching algorithm handles most meshes without a manual cage, and it exports straight into a texturing project. The Adobe Substance 3D Painter baking guide covers every bake setting in depth.
The cost is a subscription and a learning curve. If you only bake and never texture, Painter is heavier than you need. If you texture in Painter anyway, baking there removes a tool switch.
Marmoset Toolbag
Marmoset Toolbag is the visualization-first option. Its baker is fast, with an interactive cage editor and the best real-time preview in the field. Artists use it to validate bakes before they reach the engine. It is a one-time purchase, not a subscription. The Marmoset Toolbag baker remains the fastest way to validate a normal map before engine import.
The limitation is scope. Toolbag bakes and shows, but it is not a full texturing suite. Most teams use it alongside Painter or Substance for the paint pass.
ZBrush and Other Baking Options
ZBrush bakes through its Projection Master and UV Master workflows, strong if your high poly already lives there. Toolbag and Painter both ingest ZBrush exports cleanly. For pure normal map baking without sculpting, ZBrush is overkill.
Which Tool Should You Use?
Match the tool to the pipeline, not the hype.
Tool | Best for | Cost | Cage support | Live preview |
Blender | Solo devs, free pipeline | Free | Yes (Extrusion) | No |
Substance Painter | Teams that texture in Painter | Subscription | Yes (auto + manual) | Yes |
Marmoset Toolbag | Bake validation, fast iteration | One-time | Yes (interactive) | Yes |
ZBrush | Sculpt-to-bake in one app | One-time | Limited | Partial |
Common Normal Map Baking Errors and How to Fix Them
These five errors account for most baking support threads. Each has a root cause and a fix.
Seams Appear at UV Borders
Why Normal Map Seams Happen at UV Borders
A normal map is encoded in tangent space, which depends on the UV direction. At every UV border, the tangent frame flips, so the baked detail has a visible line where two islands meet.
How to Fix Normal Map Seam Artifacts
Align the UV shell edges so the texel density and orientation match across the seam. Add enough margin in the bake settings (2 to 4 pixels) so the dilated edge data overlaps cleanly. In Painter, enable the dilated border option. In Blender, raise the Margin value. For hard surface models, place seams in concave areas where lighting hides the line.
Cage or Ray Distance Too Short or Too Long
How to Set Ray Distance for Normal Map Baking
If the bake has blank patches, rays never reached the high poly. If detail looks inverted or mirrored, rays passed through and hit the back face.
Open the cage in your baker and inflate it until it sits just outside the high poly everywhere. If you use ray distance, start at 0.05 and creep up until blank spots fill, then back off if back faces appear. Per-mesh tuning beats a global setting.
Hard Edges Break the Normal Map
How to Fix Hard Edge Normal Map Artifacts
A hard edge on the low poly creates a 90 degree normal jump that the tangent space map cannot represent smoothly. You get a dark line or a lit seam along the edge.
Set smoothing groups or hardened normals to match the high poly’s shading. Bake with the low poly’s smoothing groups intact, or use the high poly’s smoothing as the source. The low poly and high poly should agree on where edges are hard before you bake.
UV Overlap Causes Doubled Detail
How to Detect and Fix UV Overlap
Overlapping UV islands write two sets of detail into the same texels. The result looks smeared or ghosted.
Unwrap again with zero overlap. Use a UV checker texture to spot overlaps visually before baking. Most bakers offer an overlap warning. Heed it. For the raycast and cage mechanics behind this, the Polycount texture baking wiki breaks down the math in detail.
Normals Look Inverted or Wrong Color
Fix Inverted Normal Map Color Space and Axis
A map that looks mostly purple or green, or that lights from the wrong side, is likely in the wrong color space or flipped axis.
Confirm the normal map is set to Non-Color data in your engine, not sRGB. Check the baker’s flip options (Flip X, Flip Y, Flip G) if the detail points the wrong way. Blender and OpenGL use green-up; some DirectX tools use green-down. Match the convention to your engine.
Setting Up Baked Normal Maps in Game Engines
A perfect bake still fails if the engine reads it wrong. Both Unity and Unreal need correct import settings.
Unity Normal Map Import Settings
Import the texture and set Texture Type to Normal map. Unity converts the green channel to its internal space automatically. Leave sRGB off. Set compression to BC5 or a high quality preset for hero assets, since aggressive compression smears fine detail. For a game-ready asset checklist, see our game-ready 3D models guide. The Unity normal map import documentation details the compression and sRGB behavior.
If seams show in Unity but not in the baker, the issue is usually mipmap generation softening the dilated border. Raise the border padding or disable mipmaps on small props.
Unreal Engine Normal Map Setup
Import the texture and set it to Normal map compression. Unreal uses a tangent basis that can differ from your baker’s, so enable the Flip Green Channel option if detail inverts. Unreal’s default tangent space matches most bakes without changes, but thin features sometimes need the green flip. The Unreal Engine texture documentation explains the tangent basis and compression presets.
For static meshes, Unreal computes tangents from the mesh. For skeletal meshes, it uses the imported tangent. Keep the low poly smoothing consistent between DCC and engine to avoid shading mismatch.
When to Bake Normal Maps and When to Skip
Baking is not free. The texture costs memory and bandwidth, and the bake itself costs artist time.
Mobile and Low-End Hardware Limits
Mobile GPUs choke on 4K normal maps. A 2K or 1K map with clean texel density beats a 4K map that gets streamed and decompressed late. Background props on mobile can drop to 512 pixels if they never get a close-up. Reserve 4K for hero assets on desktop and console.
Texel Density and Texture Resolution
Target a consistent texel density across your asset set, commonly 10.24 pixels per centimeter for stylized games and 20.48 for realistic ones. If the asset needs more than 4K to hit that density, the mesh is too detailed for its screen time. Either reduce the detail or accept a lower density. Baking cannot fix a model that needs more resolution than the texture budget allows.
Generate High Poly Source Models with Triverse AI
The bottleneck in normal map baking is usually the high poly source. Hand sculpting a detailed high poly in ZBrush takes hours per asset. For teams without a dedicated character or prop artist, that bottleneck stalls the whole pipeline.
Triverse AI generates high poly meshes with PBR textures from a text prompt or reference image. You can use that output as the high poly source for your bake, skipping the manual sculpt.
Step 1: Generate a High Poly Model in Triverse. Open Triverse AI and select the HD Mesh workspace. Describe the detailed source you need, for example “sci-fi crate, panel lines, rivets, scratches, worn metal, high detail.” The output is a high poly mesh with PBR textures.
Step 2: Export and Prepare for Baking. Download the model as FBX or OBJ. Import it into Blender or your baker of choice. This high poly becomes the source mesh in your baking setup.
Step 3: Bake in Your Preferred Tool. Use the Triverse high poly as the source and your low poly game mesh as the target. Bake the normal map in Blender, Substance Painter, or Marmoset as described above.
What Triverse AI Cannot Do
Triverse AI generates the mesh and PBR textures. It does not auto-bake the normal map or auto-rig the model. You still run the bake in your DCC tool and handle rigging and animation downstream. Treat the generated high poly as a starting point that saves sculpt time, not a replacement for the baking step itself.
Bottom Line
Normal map baking moves high poly detail onto a cheap low poly mesh through a texture, and the workflow is the same whether you sculpt the source by hand or generate it. Build a clean high poly, model a matching low poly, unwrap without overlap, set a cage or ray distance, then bake and export at the resolution your platform allows. Fix seams with margin and aligned UVs, fix inverted detail with the green channel flip, and set the texture to Non-Color in your engine. For studios without a large art team, generating the high poly source with Triverse AI removes the sculpt bottleneck so you can focus time on the bake and the engine setup, where the real quality lives.
Normal Map Baking FAQs
What is normal map baking in simple terms?
Normal map baking copies the surface direction of a detailed high poly mesh into a texture, then applies that texture to a simple low poly mesh so it looks detailed without extra geometry.
How do I bake a normal map in Blender?
Set the render engine to Cycles, add an Image Texture node to the low poly material, select the high poly then the low poly, enable Selected to Active, and choose Bake with type Normal. Use the Extrusion field as a cage and set Margin for border padding.
Why do seams appear when baking normal maps?
Seams appear because tangent space normal maps depend on UV direction, which flips at every UV island border. Fix them with 2 to 4 pixels of margin, aligned UV shell edges, and seam placement in concave areas.
What ray distance should I use for normal map baking?
Start at 0.01 to 0.1 units depending on scene scale. Raise it until blank patches fill, then back off if detail inverts. A cage mesh gives more reliable control than a fixed ray distance for complex shapes.
Substance Painter or Blender for normal map baking?
Blender is free and capable but slow to iterate. Substance Painter bakes multiple maps with live preview and is the studio standard if you already texture there. Marmoset Toolbag wins on bake validation speed.
How do I fix inverted normal maps in Unreal Engine?
Enable the Flip Green Channel option on the normal map import. Unreal’s tangent basis can differ from your baker’s, and the green flip corrects detail that points the wrong way.
Can AI generate models for normal map baking?
Yes. Tools like Triverse AI generate high poly meshes with PBR textures from text or images. You use that high poly as the bake source in Blender, Substance Painter, or Marmoset, then bake the normal map to your low poly game mesh.
What resolution should a baked normal map be?
Use 2K for most props, 4K for hero assets seen up close, and 1K or 512 for background props on mobile. Match the resolution to a consistent texel density rather than maxing out by default.