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 NormalDirectXノーマルUse when the target pipeline expects its green-channel direction.
OpenGL 法线OpenGL NormalOpenGLノーマルUse when the baker and renderer expect the opposite Y convention.
绿色通道翻转Flip Green Channel緑チャンネル反転Apply only after proving a Y-convention mismatch.
MikkTSpaceMikkTSpaceMikkTSpaceKeep 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 workspace

FAQ

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.