Beelse
Overview
Technologies
My Mission
My mission was to build a program that analyzes a 3D model file (STL), detects geometry errors and repairs them automatically.
There are 4 main types of errors in this kind of file:
- Inverted normals (faces pointing the wrong way).
- Holes (open or non-manifold edges).
- Degenerate faces (three collinear vertices).
- Self-intersecting faces.
To detect them, I built an edge adjacency map of the mesh: it exposes open edges (holes) and neighbouring faces with inconsistent orientation. Self-intersections were found with triangle-triangle intersection tests. The program then repaired all four types: it propagated a consistent orientation to flip inverted normals, walked each boundary loop and triangulated it to close holes, and removed or re-triangulated degenerate and intersecting faces.
The tool was later integrated into BCM, after my internship ended.
Here's an example result:
- Left: the object fixed by my program.
- Right: the original object with errors.