Hard Edge vs Soft Edge — How They Affect Your Normal Maps
The distinction between hard and soft edges is one of the most consequential decisions in low-poly modelling — and one beginners consistently get wrong. Incorrect edge setup is the source of banding artifacts that appear after baking and look completely different to anything you saw in your modelling software.
Hard Edges and Soft Edges
Every edge in a 3D mesh can be designated as either hard (sharp) or soft (smooth). This setting controls how vertex normals are calculated at that edge — which in turn determines whether the edge appears as a sharp crease or a smooth blend when rendered.
Soft edge (smooth)
Vertex normals are averaged between adjacent faces. The surface appears to flow smoothly across the edge — no visible crease. Used for curved surfaces, organic shapes, and gradual transitions between faces.
Hard edge (sharp)
Vertex normals are split — each adjacent face gets its own independent normal at that vertex. The edge appears as a distinct crease in shading. Used for physical corners, mechanical features, and sharp geometric transitions.
Neither is universally better — the right choice depends entirely on what the geometry is representing. A cylindrical barrel needs soft edges to look round. A crate needs hard edges at its corners to look like a box. The vast majority of game assets use both on the same mesh.
Why Edge Softness Affects Baking
Normal maps are encoded in tangent space — meaning the map stores surface direction values relative to the low-poly mesh's own surface normals. This tangent space is computed differently depending on whether an edge is hard or soft.
When a baking tool generates a normal map, it uses the low-poly mesh's tangent space to encode the data. When the engine renders that normal map, it uses the low-poly mesh's tangent space to decode it. If those two tangent spaces don't match — because the bake and the engine compute them differently — the normal map shading is wrong.
This mismatch is caused by one specific situation: a UV seam that doesn't have a corresponding hard edge, or a hard edge that doesn't have a corresponding UV seam. Either case creates a tangent space discontinuity that shows up as a visible dark band exactly at that edge.
The Two Rules
There are exactly two rules that eliminate tangent space mismatch artifacts. Both must be followed simultaneously — one without the other still produces problems.
Every UV seam must be a hard edge
Any edge you mark as a UV seam must also be marked as sharp/hard. UV seams already split the mesh topology for UV purposes — if the corresponding edge isn't also hard, the tangent space is discontinuous at that boundary and a dark seam line appears in-engine.
Every hard edge should have a UV seam
Any hard edge that lacks a UV seam may produce shading artifacts at that edge when the normal map is applied. Hard edges without seams create a situation where the renderer expects a tangent split that the UV layout doesn't provide.
Everything else is soft
Any edge that isn't a UV seam and doesn't represent a deliberate physical crease in the asset should be soft. Over-marking edges as hard causes visible faceting on curved or smooth surfaces where the shading should flow continuously.
When to Use Hard vs Soft Edges
Beyond the UV seam requirement, the decision to use a hard or soft edge should reflect what the real-world surface would look like at that transition.
| Surface Type | Edge Type | Why |
|---|---|---|
| Physical corner (90° box edge) | Hard | A real corner has a crease — the shading should reflect that. A soft edge here makes the corner look rounded. |
| Curved or cylindrical surface | Soft | A cylinder needs soft edges to look round. Hard edges produce visible faceting — each polygon face is visible as a flat segment. |
| Beveled edge (chamfer) | Soft on the bevel faces, hard at the bevel boundaries | The bevel itself should be smooth. The transitions at the start and end of the bevel are creases. |
| Panel line / surface detail | Hard | Panel lines represent a real-world crease or seam in the surface. Hard edges make them read as distinct physical features. |
| Organic or rounded form | Soft throughout | Organic shapes should flow smoothly. Hard edges on organic forms break the flow and look like hard-surface artifacts. |
| Material boundary (metal to rubber) | Hard | Where two different materials meet is a natural seam — which should also be a UV seam for texturing. Both rule and aesthetics align here. |
Checking Your Setup
Before baking, run through these verification steps to confirm your hard/soft edge setup is correct.
View hard edges in the viewport
In Blender, enable Overlays → Edge Angle and lower the threshold. Hard (sharp) edges will be highlighted. Verify that all highlighted edges correspond to UV seams, and all UV seams correspond to highlighted edges. Any mismatch is a potential artifact.
Check shading without a normal map
Import your mesh into Trumble and view it with a plain grey material and no normal map. The shading should already look correct — smooth where you want smooth, clearly creased where you've placed hard edges. If the shading looks wrong at this stage, fix the edges before baking.
Apply a checker texture to check UV seams
Apply a checkerboard texture. Visible seam lines in the checker reveal UV seam positions. Confirm those seam positions correspond to hard edges on the mesh. Any checker seam without a hard edge is a setup error.
After baking — rotate around the asset
After baking the normal map, rotate the asset in all directions in the lit viewport. Banding artifacts at edges are most visible at specific viewing angles — a slow rotation will reveal any remaining problems that a static view would miss.
Hard Edges in Trumble
Trumble reads hard/soft edge data directly from imported FBX and GLTF files. The smoothing setup you configure in Blender carries through to Trumble automatically — no re-setup needed after import.
In Trumble's 3D viewport, the mesh shading reflects your hard/soft edge configuration exactly as the engine will display it. If the shading looks correct in Trumble's preview — smooth where expected, creased where intended — your edge setup is right and the bake will be clean.
Hard and soft edge data from Blender is preserved in the FBX/GLTF and read automatically on import. No re-setup required in Trumble.
Trumble's 3D viewport shows shading consistent with how the engine will render the mesh — a direct preview of whether your edge setup is correct.
Trumble's baker uses the same tangent space as the target engine. Hard edges in the mesh are respected in the bake — eliminating the mismatch that causes artifacts.