The 3D Handbook
Topic

Weighted (custom) normals

Custom vertex normals that let big faces win over small bevels, so bevelled low and mid-poly meshes shade flat and clean without a baked normal map.

modelinghard-surfacenormalsshading

Weighted normals (also face-weighted normals, FWN, or custom normals) are vertex normals calculated so that large faces count more than small ones. On a bevelled mesh, the big flat faces keep their own direction and the thin bevels do all the bending, so flat faces shade flat. Blender's modifier "changes the custom normals of a mesh" and is often used to make some faces look flat during shading (Blender Manual: Weighted Normal Modifier).

Two bevelled cubes; the left shows shading gradients on its flat faces, the right has clean flat faces.
The same bevelled cube twice. Left: plain smooth shading, so the large faces pick up gradients from the bevels. Right: Weighted Normal modifier (face area) keeps the big faces flat and pushes the shading change into the bevels.Rendered in Blender 5.2 (Cycles) by the handbook author

#Shading problems on bevelled meshes

By default, a smooth-shaded vertex gets a normal blended from all faces around it (see normals). Put a small bevel between two big faces and each bevel vertex gets a normal halfway between the big face and the bevel. The renderer interpolates that tilted normal across the big face, which looks like a dark smudge or a dent near every edge.

The old fixes were support loops (more geometry) or hard edges plus a normal map bake. Weighted normals fix the shading by changing only the stored normals: same vertices, same triangles.

Modeled in Blender with "beveled edges in conjunction with face weighted normals for shading". Orbit under the light and check that the large flat faces stay evenly lit right up to the bevels; then compare with the wireframe.Fabi_G, via Sketchfab
Two identical cross-sections of a box with small bevels at each corner. Left, arrows at each vertex tilt halfway between the big face and the bevel, and the shading strip below darkens toward both edges. Right, arrows point straight out of the big faces and the shading strip is even.
Left, averaged normals smear shading across the big faces. Right, face-weighted normals keep big faces flat and let the orange bevels blend the light.Diagram by the handbook author

#How weighting works

The technique is not new. A 2011 Polycount thread noted that id Software had used the technique since Doom 3, and one member summarised it as: "Literally multiply vertex normal contribution by surface area of the face it belongs to" (Polycount forum: Discuss face weighted normals).

Blender's Weighted Normal modifier offers three modes (Blender Manual: Weighted Normal Modifier):

  • Face Area: "A larger area means that the normal from that face will get a higher weight in final result." This is the mode for hard-surface work.
  • Corner Angle: weights by the angle each face makes at the vertex; "This is the method Blender uses by default".
  • Face Area and Angle: both multiplied together.

Other useful settings (Blender Manual: Weighted Normal Modifier):

  • Weight: a contrast control. At 50 all faces count equally; higher values exaggerate the difference.
  • Keep Sharp: preserves sharp edges.
  • Face Influence: uses face strengths (weak, medium, strong) set by the Set Strength tool or the Bevel modifier, and lets only the strongest face decide. Patscheider recommends it for hard-surface modifier stacks (ArtStation blog: Quarry Bank Mill 3D #07 Modifiers and Wires /…).

#When you still need a normal map

Weighted normals fix shading of the shape you modeled. They do not add detail. You still need a normal map or other texture for:

  • detail that is not in the mesh, such as panel lines, screws and dents (often from trim sheets or mesh decals);
  • curved surfaces too low in density to shade smoothly;
  • cases where a unique bake is cheaper than the extra triangles.

If you do bake onto a weighted-normal mesh, bake with the final custom normals. A participant in the 2011 thread said he would not add FWN to an object with an existing baked normal map, because it may add shading errors (Polycount forum: Discuss face weighted normals). On mid-poly assets, a common answer is that a separate high poly is unnecessary: "mid poly modeled with appropriate detail will serve as both the source and target mesh" (Polycount forum: Weighted Normals (Mid Poly) Workflow…).

#Export and engine import

Custom normals only work if the exporter writes them and the engine keeps them on import.

  1. Export with normals. Export FBX with custom normals included, and triangulate consistently before export so the engine does not choose a different triangle split.
  2. Import with normals. In Unreal Engine's FBX importer, Normal Import Method has three choices (Unreal Engine documentation: FBX Import Options Reference in Unreal Engine):
    • Compute Normals: "Smoothing group and normal info is discarded from the FBX info." Do not use this.
    • Import Normals: "The normals are imported from the FBX file, tangents are computed by the engine." The usual choice for weighted-normal meshes.
    • Import Normals and Tangents: nothing is computed by the engine.
  3. Check under a moving light. Rotate a directional light and look for smudges on flat faces.
A free Blender and Substance Painter asset whose author advises applying Blender's face-weighted normals modifier if you use it in Blender. That note is a useful reminder that custom normals do not always travel with a downloaded or exported mesh; check the shading yourself after every transfer.Jorma Rysky, via Sketchfab

#In different tools

#Further reading and watching

References

  1. Blender Foundation · Weighted Normal Modifier · Blender Manual (2.82), 2020 · docs · accessed 2026-10-21
  2. Scruples and others · Discuss face weighted normals · Polycount forum, 2011 · forum · accessed 2026-10-21
  3. Matthias Patscheider · Quarry Bank Mill 3D #07 Modifiers and Wires / #08 The mid-poly workflow · ArtStation blog, 2020 · article · accessed 2026-10-21
  4. amankart, sacboi · Weighted Normals (Mid Poly) Workflow Clarification? · Polycount forum · forum · accessed 2026-10-21
  5. HammerB, scgstudio and others · There's a thing I dont quite get about weighted normals. · Polycount forum, 2019 · forum · accessed 2026-10-21
  6. Malte Resenberger-Loosmann · Creating Assets Within the Mid-Poly Workflow in UE5 · 80 Level · article · accessed 2026-10-21
  7. Epic Games · FBX Import Options Reference in Unreal Engine · Unreal Engine documentation · docs · accessed 2026-10-21
  8. mpuLse, pior and others · Maya and it's Weighted Vertex Normals · Polycount forum · forum · accessed 2026-10-21
  9. Blender Foundation · Bevel Modifier · Blender Manual (2.83), 2020 · docs · accessed 2026-10-21
  10. markus; Shawn Olson (Autodesk) · Implement a new Vertex Normal Modifier (Weighted Normals, Merge, Transfer) · Autodesk Community, 3ds Max Ideas, 2020 · forum · accessed 2026-10-21
  11. Arkance UK · What's New in 3ds Max 2022? – New and Improved Object Modifiers · Arkance Community · article · accessed 2026-10-21
  12. Jessica Canales (interviewed by Gloria Levine) · How to Create a Detailed Large-Scale Scene with Rich Props & Assets in Unreal Engine · 80 Level · article · accessed 2026-10-21
  13. dzibarik and others · The 'ultimate trim' technique from Sunset Overdrive · Polycount forum, 2015 · forum · accessed 2026-10-21
  14. Alberto Petronio · Gunship · BlenderNation, 2020 · article · accessed 2026-10-21
  15. Christopher 3D · What is the Weighted Normals modifier used for? · Evermotion, 2024 · video · accessed 2026-10-21

Last updated 2026-10-22