Normals, smoothing groups and why surfaces look wrong

A faceted curve or a soft edge that should be crisp is almost always a normals problem, not a geometry one.

A normal is a direction perpendicular to a surface, used to calculate lighting. How normals are assigned decides whether a surface reads as smooth or faceted — independently of its geometry.

Face normals versus vertex normals

  • Face normals are per-polygon. Shading from them alone gives a faceted look — every polygon flatly lit.
  • Vertex normals are per-vertex, usually averaged from surrounding faces. Shading interpolates between them, making a low-polygon surface appear smooth.

A sphere with 200 polygons looks smooth or faceted depending entirely on which is used.

Smoothing groups and hard edges

Real objects have both smooth and sharp regions. A cylinder is smooth around its circumference and sharp at its caps. This is expressed by splitting vertex normals at the sharp edges — the same vertex gets different normals for each adjacent face.

Applications express this differently: smoothing groups, sharp edges, smooth-by-angle thresholds. They all do the same underlying thing.

The auto-smooth angle

A threshold: edges sharper than the angle stay hard, softer ones smooth. Convenient, and it produces wrong results where the geometry does not match the intent — a gentle crease that should be sharp gets smoothed, or a dense curve gets faceted.

Why generated meshes shade badly

Reconstruction usually assigns fully smooth normals everywhere. On a curved organic form that is right. On anything with a chamfer, a panel edge or a flat face meeting another, it rounds off exactly the features that define the object. Re-establishing hard edges is a standard cleanup step.

Normals and normal maps

A normal map perturbs the surface normal per pixel to fake detail. It is computed relative to the underlying vertex normals — so if those change after baking, the normal map is wrong. This is why the mesh must be finalised before baking, not after.