Baking PBR Textures for Low-Poly Game Assets in Substance Painter

Low‑poly games are booming again, and the demand for crisp, realistic surfaces is higher than ever. A clean bake can turn a simple 5k poly mesh into a game‑ready asset that looks great from every angle, without blowing up the polygon budget. In this post I’ll walk you through my go‑to workflow in Substance Painter, step by step, so you can get consistent results without pulling your hair out.

Why Baking Matters

When you sculpt a high‑poly model and then create a low‑poly version for the game, you lose a lot of surface detail. Baking is the process of transferring that missing detail into texture maps—normal, ambient occlusion, curvature, and more. Those maps let the game engine fake the look of depth while keeping the geometry light. If the bake is sloppy, you’ll see strange seams, flickering shadows, or a flat look that defeats the purpose of PBR (physically based rendering).

Preparing Your Meshes

1. Keep a Clean High‑Poly

Your high‑poly should be free of non‑manifold edges, stray vertices, and overlapping faces. I always run a quick “Check Mesh” in Maya or Blender before exporting. A tidy mesh saves you from nasty artifacts later.

2. Create a Low‑Poly Version

Decimate or retopologize the high‑poly to the target polygon count. For a typical mobile character, 2‑3k triangles is a good sweet spot. Make sure the low‑poly follows the silhouette of the high‑poly as closely as possible; big shape differences will cause baking errors.

3. UV Unwrap the Low‑Poly

Good UVs are the backbone of a solid bake. Keep islands as large as possible, avoid stretching, and leave a 2‑4 pixel gutter between them. I like to use a simple “Smart UV Project” in Blender, then manually tweak the biggest islands. Remember: the UV layout does not affect the high‑poly; it only tells Substance Painter where to place the baked data.

Setting Up Substance Painter

4. Import Both Meshes

Open Substance Painter and click File > New. Choose the low‑poly mesh as the “Mesh” and set the document resolution (4K is a safe default). In the “Additional Maps” section, click Add and select the high‑poly mesh. This tells Painter where to pull detail from.

5. Choose the Right Baking Settings

In the Bake Mesh Maps dialog, you’ll see a list of maps you can generate. For low‑poly assets I usually bake:

  • Normal (high‑poly detail)
  • Ambient Occlusion (shadowing in crevices)
  • Curvature (edge wear)
  • Position (world space for some effects)

Set the Output Size to match your texture resolution (e.g., 4096). For the Dilation Width, 2‑4 pixels works well; it helps fill gaps around UV seams. Keep the Max Frontal/Rear Angle at 120° for most organic models—this balances sharp edges and smooth surfaces.

6. Tweak the Ray Distance

Ray distance controls how far the baker looks for the high‑poly surface. Too short and you’ll get missing detail; too long and you’ll capture geometry that belongs to a different part of the model. A good rule of thumb: set it to about 0.5‑1% of the model’s bounding box size. I often start with 0.5% and increase until the bake looks solid in the preview.

Running the Bake

7. Start the Process

Hit Bake Selected Textures. Depending on your hardware, a 4K bake for a medium‑complex asset can take a few minutes. While you wait, I like to sip coffee and think about the next step—adding wear or color.

8. Inspect the Results

When the bake finishes, flip through the generated maps in the Texture Set Settings panel. Look for:

  • Normal map: smooth flow, no black spots.
  • AO map: dark areas only in tight corners.
  • Curvature: clear edge lines, no random speckles.

If you spot problems, go back to the bake dialog, adjust ray distance or dilation, and bake again. It’s normal to iterate a couple of times.

Adding the Base Materials

9. Apply Smart Materials

Substance Painter’s Smart Materials are a huge time‑saver. Drag a PBR metal or fabric material onto your mesh, and the program will automatically use the baked curvature and AO to drive wear, dirt, and edge wear. Because the maps are already baked, the material reacts correctly to the low‑poly geometry.

10. Fine‑Tune with Layers

Even with smart materials, you’ll want a personal touch. Add a Fill Layer for base color, then mask it with a Generator that uses curvature to keep edges bright. Use a Paint Layer with a low opacity brush to add hand‑painted scratches where you think the character would get scuffed.

Exporting for the Game Engine

11. Choose the Right Output Template

In File > Export Textures, pick a preset that matches your engine—Unity 5 (Metallic Roughness) or Unreal (Base Color, Normal, Roughness, Metallic). If you need a custom setup, click Add Preset and map the baked channels to the correct slots.

12. Set the Correct Bit Depth

For mobile games, 8‑bit PNGs keep file size low while still looking good. For high‑end PC or console, consider 16‑bit EXR for the normal map to preserve subtle detail.

13. Export and Test

Export the textures to your project folder, then assign them in the engine’s material editor. Turn on Normal Map and Metallic/Roughness inputs, and you should see the high‑poly detail instantly appear on the low‑poly mesh. If anything looks off, go back to Painter, tweak the layer, and re‑export. The cycle is quick once you have the bake locked down.

Quick Tips to Keep the Process Smooth

  • Name your files clearly – “hero_low.fbx”, “hero_high.fbx”, “hero_textures” – saves you from mixing up assets later.
  • Keep a backup of the high‑poly – you’ll need it if you decide to bake a new map after adding more detail.
  • Use the “Export Settings” dialog to batch export multiple texture sets at once; it’s a lifesaver for large asset packs.

Baking PBR textures may feel like a lot of steps at first, but once you set up a repeatable pipeline, it becomes almost automatic. The key is a clean high‑poly, solid UVs, and a bit of patience while tweaking ray distance. With this workflow, your low‑poly game assets will carry the visual weight of a high‑poly model, all while staying light enough for real‑time play.

Reactions