Skip to content
Converts a raw digitized polygon mesh to a clean mesh where all the occurrences of a specific set of "defects" are corrected. Holes, self-intersections, degenerate and non-manifold elements are all replaced with valid configurations.
C++ C
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin Generic bugfixes and optimizations Nov 18, 2016
bin64 Generic bugfixes and optimizations Nov 18, 2016
include Generic bugfixes and optimizations Nov 18, 2016
src Generic bugfixes and optimizations Nov 18, 2016
vc12 Generic bugfixes and optimizations Nov 18, 2016
.gitattributes 🍭 Added .gitattributes Feb 17, 2016
README.txt Generic bugfixes and optimizations Nov 18, 2016
gpl-3.0.txt First Commit Feb 17, 2016


MeshFIX - Version 2.1                                                          

by Marco Attene
Consiglio Nazionale delle Ricerche                                        
Istituto di Matematica Applicata e Tecnologie Informatiche                
Sezione di Genova                                                         
IMATI-GE / CNR                                                            
This software takes as input a polygon mesh and produces a copy of the input where all the occurrences of a specific set of "defects" are corrected. MeshFix has been designed to correct typical flaws present in RAW DIGITIZED mesh models, thus it might fail or produce coarse results if run on other sorts of input meshes (e.g. tessellated CAD models). When the software fails, it appends a textual description to the file "meshfix.log".

The input is assumed to represent a single CLOSED SOLID OBJECT, thus the output will be a SINGLE WATERTIGHT TRIANGLE MESH bounding a polyhedron. All the singularities, self-intersections and degenerate elements are removed from the input, while regions of the surface without defects are left unmodified. Accepted input file formats are:
and partially:
IV 2.1, VRML 1.0, VRML 2.0, OBJ.

To better understand how the algorithm works, please refer to the following paper:

   M. Attene.
   A lightweight approach to repairing digitized polygon meshes.
   The Visual Computer, 2010. (c) Springer. DOI: 10.1007/s00371-010-0416-3

This software is based on ideas published therein. If you use MeshFix for research purposes you should cite the above paper in your published results. MeshFix cannot be used for commercial purposes without a proper licensing contract.

The user may want to force the software to join the connected components [-a] whose boundary loops are closer to each other. Otherwise, only the largest component is kept while the others are considered as "noise". By default, the output file is in OFF format. The user may change this to STL [-j]. If the software is run as part of a script that processes all the files in a directory, the parameter [-x] may be useful to avoid to re-run the repairing of a mesh if its result already exists as a file.

Run MeshFix without parameters to get the synopsis.

A mesh can also be fixed my simply dragging its icon on MeshFix's icon. In this case, only default parameters can be used.
MeshFix does not require any interaction, thus it can be inserted into a script to automatically repair all the models of a given repository (e.g. a folder). If some failure cases occur, they will be logged to "meshfix.log" and thus can be easily located and possibly processed is a second stage through interactive software tools such as ReMESH (


From version 2.0 MeshFix is self-contained, that is, it does not depend on any other software.
To compile the source code on Windows you need Microsoft Visual C++ 2013 or newer.
Just click on vc12/MeshFix_All.sln and hit F7.
The executable will be saved in bin/.

Both 32bit and 64bit versions can be produced.

The source code is standard ANSI C++ and should be portable.
To compile on other operating systems (e.g. Linux) you may need to manually edit appropriate compilation instructions (e.g. Makefiles).


MeshFix is

Copyright(C) 2010: IMATI-GE / CNR                                       

All rights reserved.                                                      
This program is dual-licensed as follows:

(1) You may use MeshFix as free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as published 
by the Free Software Foundation; either version 3 of the License, or     
(at your option) any later version.                                      
In this case the program is distributed in the hope that it will be      
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of   
GNU General Public License (         
for more details.                                                        
(2) You may use MeshFix as part of a commercial software. In this case a
proper agreement must be reached with the Authors and with IMATI-GE/CNR  
based on a proper licensing contract.
You can’t perform that action at this time.