Compute STL Vertex Normals

Find the per-vertex normals for a tesselated surface.

You are now following this Submission

The default normal vectors associated with tesselated surfaces are computed for each triangle face. Some purposes (like nice rendering) require per-vertex normals instead. These are typically calculated by averaging the face normals. This function offers two methods, first, an average normal weighted by triangle area, and second the normal as an average of the surrounding triangle faces. The second option is faster (because it uses the pre-computed unit-normals), but the first method generates nicer surface-normals, particularly at regions with sharp edges or small triangles.

This should do essentially the same thing as Dirk-Jan Kroon's 'Patch Normals' submission #24330, and my code is probably slower because it is not compiled. However, it's a bit simpler to read and (hopefully) to use.

Cite As

Francis Esmonde-White (2026). Compute STL Vertex Normals (https://uk.mathworks.com/matlabcentral/fileexchange/33226-compute-stl-vertex-normals), MATLAB Central File Exchange. Retrieved .

Acknowledgements

Inspired by: Patch Normals, Binary STL file reader

General Information

MATLAB Release Compatibility

  • Compatible with any release

Platform Compatibility

  • Windows
  • macOS
  • Linux
Version Published Release Notes Action
1.0.0.0