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…).

#How to make one

These steps set up weighted normals on a bevelled prop in Blender and bring it into Unreal Engine 5. Custom normals only work if the exporter writes them and the engine keeps them on import, so the last steps matter as much as the first. The example is a 60 cm sci-fi crate.

  1. Model the base shape with sharp edges. Keep large faces flat and avoid support loops; the bevel and the normals do the edge work.
  2. Add a Bevel modifier. Set Width to about 5 mm and Segments to 2 or 3; use the Angle or Weight limit method to choose which edges round (Blender Manual: Bevel Modifier). Set the Face Strength option so the modifier marks the large original faces as strong (Blender Manual: Bevel Modifier).
  3. Enable custom normals. In older Blender versions, turn on Auto Smooth in the mesh's Normals panel; the 2.8x manuals require it for the Weighted Normal modifier (Blender Manual: Weighted Normal Modifier). Check the manual for your version.
  4. Add a Weighted Normal modifier below the Bevel. Choose Face Area mode, enable Keep Sharp, and enable Face Influence so the strong faces from step 2 decide the normals (Blender Manual: Weighted Normal Modifier; ArtStation blog: Quarry Bank Mill 3D #07 Modifiers and Wires /…). Leave Weight at 50 to start (Blender Manual: Weighted Normal Modifier).
  5. Check the shading. Rotate a light around the crate. The big faces should stay evenly lit right up to the bevels. If one still shows a gradient, look for an extra vertex or a thin face on it.
  6. Export with normals. Export FBX with custom normals included, and triangulate consistently before export so the engine does not choose a different triangle split.
  7. 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.
  8. Check under a moving light in the engine. Rotate a directional light and look for smudges on flat faces.

In 3ds Max the same job is done by the Weighted Normals modifier (since 2021) (Autodesk Community: Implement a new Vertex Normal Modifier); in Maya, by the face-weighted normals option in Mesh Controls or a plug-in such as GenTools (Polycount forum: Discuss face weighted normals; 80 Level: How to Create a Detailed Large-Scale Scene…).

#Video tutorials

#Use in recent games

  • Star Citizen: custom normals on ships. A developer described the Gladiator ship built with "edge loops and custom vertex normals", tiling textures and decals, supported by an in-house tool set for editing vertex normals (Polycount: Star Citizen...The Gladiator...ART DUMP). The game is still in development, so this is ongoing production rather than a finished release.
  • God of War environment pieces. EMC3D's wireframe analysis of the series' environment art has chapters on vertex normals and on soft normals on corners, showing how shipped pieces shade without dense geometry (YouTube: Why Does God of War's 3D Environment Art…).
  • Halo 4: weighted normals instead of bakes. Andrew Morris, environment art map lead on the Vortex multiplayer map, captions his in-game shot to say that most of the level uses tiling textures and trim sheets, and that most surfaces rely on hand-weighted normals rather than baked normal maps (ArtStation: Halo 4).
  • Doom 3 (historical). In a 2011 Polycount thread, members noted that id Software had used face-weighted normals since Doom 3 (Polycount forum: Discuss face weighted normals).
The artist's caption says most surfaces here use hand-weighted normals and trims instead of baked normal maps. Look at how evenly the large flat panels are lit up to their bevelled edges.Andrew Morris, via ArtStation
See the chapters "Vertex Normals" and "Soft Normals on a Corner?" for shipped pieces whose shading comes from edited normals. Watch on YouTube
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. Blender Foundation · Bevel Modifier · Blender Manual (2.83), 2020 · docs · accessed 2026-10-21
  8. Epic Games · FBX Import Options Reference in Unreal Engine · Unreal Engine documentation · docs · accessed 2026-10-21
  9. 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
  10. 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
  11. Christopher 3D · What is the Weighted Normals modifier used for? · YouTube · video · accessed 2026-10-22
  12. Joseph Burgan 3D · Bevel and Weighted Normal Modifier -- The "HOW" and "WHY" - Blender 2.8x · YouTube · video · accessed 2026-10-22
  13. Next Level Game Art · How can the Mid-Poly Workflow change your life? - Weighted Normals · YouTube · video · accessed 2026-10-22
  14. Polycount forum members · Star Citizen...The Gladiator...ART DUMP · Polycount · forum · accessed 2026-10-21
  15. EMC3D - Game Art · Why Does God of War's 3D Environment Art Looks Like This? · YouTube, 2024 · video · accessed 2026-10-21
  16. Andrew Morris · Halo 4 · ArtStation · web · accessed 2026-10-22
  17. mpuLse, pior and others · Maya and it's Weighted Vertex Normals · Polycount forum · forum · accessed 2026-10-21
  18. Arkance UK · What's New in 3ds Max 2022? – New and Improved Object Modifiers · Arkance Community · article · accessed 2026-10-21
  19. dzibarik and others · The 'ultimate trim' technique from Sunset Overdrive · Polycount forum, 2015 · forum · accessed 2026-10-21
  20. Alberto Petronio · Gunship · BlenderNation, 2020 · article · accessed 2026-10-21
  21. Christopher 3D · What is the Weighted Normals modifier used for? · Evermotion, 2024 · video · accessed 2026-10-21

Last updated 2026-10-22