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.