The 3D Handbook
Topic

The high-to-low workflow

Building a detailed high-poly model and a separate efficient low-poly model, then baking the high poly's surface detail into texture maps for the low poly.

modelingbakinghard-surfaceworkflow

In the high-to-low workflow you build two versions of an asset: a detailed high poly that can be as dense as you like, and an efficient low poly that goes into the game. You then bake the high poly's surface into texture maps, above all a normal map, so the low poly looks far more detailed than its geometry. Matthew Murchison summarises the pairing as a low poly with a good silhouette plus a high poly baked to a normal map (ArtStation blog: Leveraging Multiple Workflows).

A detailed slab with grooves and bolts, a plain box, and the plain box showing the baked details.
Left: the high poly, 2,076 triangles, with bevelled edges, two grooves and eight bolts modelled as separate pieces sitting on the surface. Middle: the low poly, a 12-triangle box. Right: the same box with a normal map baked from the high poly (Cycles, tangent space, 1024 px). The grooves, bevels and bolts appear in the shading, but the silhouette stays a plain box.Rendered in Blender 5.2 (Cycles) by the handbook author

#The pieces

Cross-section with three outlines. An orange rounded shape with a groove on top is the high poly. A black sharp rectangle is the low poly. A dashed larger rectangle is the cage. Arrows go from the cage inward to the high-poly surface, including at the corners and into the groove. A legend lists the names crate_high, crate_low and crate_cage.
One bake, three meshes. The cage controls where rays start; matching names tell the baker which pieces belong together.Diagram by the handbook author
A 1,620-face low poly with a high-poly mesh baked onto it and 2048 px paper and cover textures. Switch between the shaded view and wireframe in Sketchfab's model inspector and note which details exist in the geometry and which only in the textures.Paubr, via Sketchfab
A Blender game asset with a high-poly detail map baked onto a low-poly mesh. Look at the normal map on its own in the model inspector to see which details were moved from geometry into the bake.MaliNova, via Sketchfab

#Naming conventions for matching

Bakers need to know which high-poly pieces belong to which low-poly pieces, especially on assets with many parts. Matching by name is the usual solution. Marmoset Toolbag's Quick Loader uses suffixes: a community SmartBaker plug-in lists "_High - for High polygon meshes" and "_Low - for Low polygon meshes" (Polycount forum: Marmoset Toolbag 3 - SmartBaker). Marmoset's EarthQuake describes variant naming such as "Object_High/Low_Variant" for several pieces sharing a group (Polycount forum: Marmoset Toolbag 3 - SmartBaker). A Blender bridge add-on follows "naming rules as for Marmoset Toolbag's QuickLoader" and creates bake groups from objects with a "_low" suffix (Superhive Market: Blender <-> Marmoset Toolbag - Baker Bridge).

A simple, reliable scheme for any baker:

Part High poly Low poly Cage (optional)
Crate body crate_body_high crate_body_low crate_body_cage
Lid crate_lid_high crate_lid_low crate_lid_cage

Name parts once, early, and keep names identical across files. Mismatches usually come from renaming at bake time. See naming conventions.

#Exploded bakes

When separate parts sit close together, rays meant for one part can hit its neighbour. That produces projected bits of the wrong part and dark AO where parts touch. The usual fix is an exploded bake: move each matched high and low pair apart by the same offset before baking, then put them back. Some bakers, such as Marmoset Toolbag, instead organise matched high and low pairs into bake groups by name (Polycount forum: Marmoset Toolbag 3 - SmartBaker); check your baker's documentation for how groups affect projection. Either way, decide on purpose which contact shadows you want in the AO. See fixing baking artefacts.

#How to make one

These steps take a small prop, such as a 40 cm fuel can, from blockout to a baked low poly, with modeling in Blender (or Maya, 3ds Max) and baking in Marmoset Toolbag, Substance Painter or Blender.

  1. Block out the shape at real scale (see blockout and units, scale and axes). The blockout often becomes the start of both meshes.
  2. Build the high poly. Use subdivision, booleans with bevels, or sculpting. Make bevels wider than looks natural; one Polycount reply advised bevels "over double the current size/strength" to bake cleanly (Polycount forum: Advice for solving various normal map/edge…). Model small parts such as screws as floaters.
  3. Build the low poly from the blockout or by retopology. Spend triangles on the silhouette. On cylinders, Boy Sichterman's advice is to "give the highpoly the same, or double the amount of divisions as you would give the lowpoly" (80 Level: Boy Sichterman: Getting Hard-Surface Right), so the bake does not wobble. For the fuel can, 600–800 triangles is a reasonable target.
  4. UV the low poly. Split UVs at hard edges and keep padding (see UV packing and padding).5. Name and group high, low and cage meshes, for example can_body_high and can_body_low (see the table above).
  5. Bake. In Toolbag or Substance Painter, load the low and high files and bake normal, ambient occlusion and curvature by matching names (Polycount forum: Marmoset Toolbag 3 - SmartBaker). In Blender, use Cycles with Selected to Active, which bakes "shading on the surface of selected objects to the active object", with a cage or ray distance set, and an active Image Texture node as the target (Blender Manual: Render Baking).
  6. Inspect and fix. Check every map on the low poly under a moving light. Fix artefacts with cage edits, skew painting, exploded bakes or by moving floaters (see fixing baking artefacts).
  7. Texture using the baked maps as masks, then export with the same normals and triangulation you baked with.

If you make the high poly in a CAD tool, export it dense: Plasticity's OBJ export recommends a face plane tolerance of 0.0001 for high polys versus 0.01 for low polys (Plasticity documentation: Export OBJ).

#Video tutorials

#Use in recent games

High-to-low is the default for unique props, so studios mostly write about it when they move away from it or combine it with something else.

Prototype meshes whose shape comes from a 1-to-1 bake, combined with tiling material layers. Notice how the bake gives each piece its unique forms while the surface detail repeats.Jared Sobotta, via ArtStation
A high-to-low bake done once and reused: high-poly bevel panels baked into a trim template that many props share.Matthew Trevelyan Johns, via ArtStation

#When high-to-low is the better choice

  • Small props and hero assets with lots of unique detail. Patscheider keeps conventional high-low for small hero props, heavily varied materials and organic shapes (ArtStation blog: Quarry Bank Mill 3D #08 The mid-poly workflow).
  • Mid-distance assets. Murchison uses baked meshes where the camera stays at a distance, such as facades, because the approach is familiar to teams and well supported by tools such as Substance Painter (ArtStation blog: Leveraging Multiple Workflows).
  • Tight triangle budgets. A baked low poly is the cheapest way to show bevelled edges at runtime.
  • Unique wear and damage. Sculpted dents and chips are captured directly in a bake.

It is less suitable where assets are huge (the bake spreads too thin), change often (every change means a re-bake), or are reused in many configurations. Angelic switched to mid-poly so feedback and geometry changes would not mean re-rolling low and high polys (80 Level: Creating Assets Within the Mid-Poly Workflow…). With Unreal's Nanite, Epic recommends "high-poly detailing rather than baking detail into normal map textures" (Unreal Engine documentation: Nanite Virtualized Geometry in Unreal Engine). See the mid-poly workflow and virtualised geometry.

#Further reading and watching

References

  1. Matthew Murchison · Leveraging Multiple Workflows · ArtStation blog, 2019 · article · accessed 2026-10-21
  2. Interface, Vertrucio · Advice for solving various normal map/edge bake artifacts? · Polycount forum, 2020 · forum · accessed 2026-10-21
  3. Devickpi23, poopipe, ThisisVictoriaZ · I need some advice · Polycount forum, 2023 · forum · accessed 2026-10-21
  4. Titus, EarthQuake · Marmoset Toolbag 3 - SmartBaker · Polycount forum · forum · accessed 2026-10-21
  5. Add-on author · Blender <-> Marmoset Toolbag - Baker Bridge (documentation) · Superhive Market · docs · accessed 2026-10-21
  6. Boy Sichterman (interviewed by Kirill Tokarev) · Boy Sichterman: Getting Hard-Surface Right · 80 Level, 2017 · article · accessed 2026-10-22
  7. Blender Foundation · Render Baking · Blender Manual (2.83), 2020 · docs · accessed 2026-10-22
  8. Plastic Software · Export OBJ · Plasticity documentation · docs · accessed 2026-10-21
  9. 3DMentor · Baking in Marmoset Toolbag · YouTube · video · accessed 2026-10-21
  10. On Mars 3D · Substance Painter: Baking High to Low Poly Workflow · YouTube · video · accessed 2026-10-22
  11. Art of Pilgrim · Remaking a M24 Stielhandgranate - Full Length · YouTube · video · accessed 2026-10-21
  12. Matthew Trevelyan Johns · The Last of Us: Part I...Trim Pipeline · ArtStation · web · accessed 2026-10-22
  13. Jared Sobotta · Erosion Breakdown · ArtStation · web · accessed 2026-10-21
  14. Matthias Patscheider · Quarry Bank Mill 3D #08 The mid-poly workflow · ArtStation blog, 2020 · article · accessed 2026-10-21
  15. Malte Resenberger-Loosmann · Creating Assets Within the Mid-Poly Workflow in UE5 · 80 Level · article · accessed 2026-10-21
  16. Epic Games · Nanite Virtualized Geometry in Unreal Engine · Unreal Engine documentation · docs · accessed 2026-10-21
  17. Joppe Stijf (interviewed by Emma Collins) · Prop Art Tips: Creating a Realistic Radio Receiver in Blender & Marmoset Toolbag · 80 Level, 2025 · article · accessed 2026-10-21
  18. Joe Wilson (art by Nathan Young) · Revolutionize Your 3D Workflow with Toolbag's Bevel Shader · Marmoset, 2025 · article · accessed 2026-10-21
  19. mpuLse, pior and others · Maya and it's Weighted Vertex Normals · Polycount forum · forum · accessed 2026-10-21
  20. Scruples and others · Discuss face weighted normals · Polycount forum, 2011 · forum · accessed 2026-10-21
  21. Phobos and others · Baking Normal maps in maya using floating geometry · Polycount forum, 2006 · forum · accessed 2026-10-21

Last updated 2026-10-22