DCC production guide
Normal Map Format and Tangent Space Guide
Direct answer: Match the normal-map convention and tangent basis across baker, DCC, exporter, and engine. DirectX and OpenGL commonly differ in the green-channel direction; changing that channel fixes convention mismatch, but it does not fix a different tangent basis, changed triangulation, bad UV seams, or incorrect texture color handling.
Normal Map FormatTangent Space Normal
What the texture actually encodes
A tangent-space normal map stores a direction relative to each vertex’s tangent frame, so its RGB values are not ordinary color. The red and green channels represent tangent and bitangent directions, while blue points away from the surface. A world-space map instead uses fixed scene axes and is less tolerant of asset rotation or deformation. Identify the encoded space before changing channels or shader settings.
Bake-to-engine workflow
Finalize low-poly topology, hard edges, UV splits, and triangulation before baking. Export the low and high meshes with controlled normals. In the baker, choose the target tangent basis and normal convention, then bake at production padding. Import the same final low mesh into the engine, mark the texture as normal data, select the matching green-channel convention, and use compatible tangent generation. Test under a rotating, high-contrast light.
Settings that must agree
Record DirectX or OpenGL convention, MikkTSpace or another tangent basis, imported versus generated tangents, triangulation, smoothing splits, UV splits, bit depth, compression mode, and normal texture type. Disable sRGB sampling for normal data. If the engine reconstructs the blue channel, confirm normalization behavior. A correct-looking thumbnail proves nothing; inspect the shaded mesh with mipmaps and production compression enabled.
Constraints around edits and rebakes
Any change to vertex order, triangulation, UV layout, hard-edge boundaries, or tangent generation can invalidate a bake. Mirrored UVs may require explicit support from the baker and renderer. A green-channel flip is safe only when the sole difference is Y direction. Painting over seams, blurring the map, or converting it as color may hide one view while corrupting the encoded vectors. Preserve the source bake settings.
Decision example: Blender to Unreal
A prop baked in an OpenGL-oriented setup appears dented after engine import. First verify that the mesh, triangulation, and MikkTSpace assumptions are unchanged. Toggle the engine’s green-channel interpretation on a copy. If lighting immediately becomes convex and seams remain clean, the convention was the fault. If seams persist, restore the channel and compare tangent generation, UV splits, imported normals, and compression before rebaking.
Failure diagnosis by artifact
Inverted bumps across the whole surface suggest a green-channel convention mismatch. Bright seams that follow UV borders suggest tangent-basis, split, or padding differences. Diagonal shading inside quads points to changed triangulation. Blocky gradients indicate compression or insufficient bit depth. Black or sparkling pixels may indicate unnormalized vectors, wrong texture type, or corrupt mip generation. Isolate each variable on a duplicate instead of stacking speculative fixes.
Evidence checklist for approval
Keep the low mesh used for baking, its triangulation, the normal texture, baker preset, export preset, and engine import settings. Capture the asset under four light directions, at close and mipmapped distances, with seams visible. Record the normal convention, tangent basis, texture type, compression, and whether tangents were imported. Compare a flat normal texture to separate mesh-normal problems from texture problems.
Multilingual workflow handoff
Keep each Chinese, English, and Japanese production label together with the action it controls. This table is intended for review tickets, presets, and export notes rather than isolated vocabulary study.
| 中文 | English | 日本語 | Workflow usage note |
|---|---|---|---|
| 法线贴图 | Normal Map | ノーマルマップ | Treat this as vector data rather than display color throughout the workflow. |
| DirectX 法线 | DirectX Normal | DirectXノーマル | Use when the target pipeline expects its green-channel direction. |
| OpenGL 法线 | OpenGL Normal | OpenGLノーマル | Use when the baker and renderer expect the opposite Y convention. |
| 绿色通道翻转 | Flip Green Channel | 緑チャンネル反転 | Apply only after proving a Y-convention mismatch. |
| MikkTSpace | MikkTSpace | MikkTSpace | Keep this basis consistent between baking and runtime shading. |
| 切线基准 | Tangent Basis | タンジェント基準 | Record the exact generator and import behavior used by the pipeline. |
| 切线空间 | Tangent Space | タンジェント空間 | Use for deformable or rotating assets that need local surface detail. |
Related references and next step
Open SEELE AI workspaceFAQ
Can I fix every inverted normal map by flipping green?
No. It fixes a DirectX/OpenGL Y-direction mismatch, not tangent-basis, triangulation, UV, compression, or mesh-normal errors.
Should tangents be imported or generated?
Either can work. Choose the route that reproduces the baker’s basis and keep it consistent for every build.
Why does a normal map look purple?
A neutral tangent-space normal points mostly along positive Z, which encodes as approximately 128,128,255. Purple is expected.
Do normal maps use sRGB?
No. They are vector data and should normally be sampled without an sRGB color transform.