MeshLab
the open source system for processing and editing 3D triangular
meshes.
It provides a set of tools for editing, cleaning, healing, inspecting,
rendering, texturing and converting meshes. It offers features for
processing raw data produced by 3D digitization tools/devices and for
preparing models for 3D printing.
A new version of MeshLab and PyMeshLab has been released: 2023.12!
Moreover, MeshLab is now available for download on the Microsoft Store! Check it out here!
We released MeshLab and PyMeshLab 2022.02, with new features, bugfixes and improvements! You can check for more details here and here.
MeshLab and PyMeshLab 2021.10 have been released, with lot of bugfixes and new features! You can check for more details here and here.
MeshLab 2021.07 is out! In this version we introduce support to several file formats (*.gltf, *.glb, *.nxs, *.nxz, *.e57) and a brand new plugin for exact mesh booleans. You can download in the download section, or in the github release page.
You can check all the details regarding the new release here.MeshLab 2021.05 has been released! You can download in the download section, or in the github release page.
You can check all the details regarding the new release here.MeshLab 2020.12 has been released. With this version, we dismiss
meshlabserver in favour of PyMeshLab,
our new Python library for mesh batch processing using MeshLab
filters.
We release also a new version that stores data with double
precision. For further details, you can read the discussion
in our GitHub page.
Changelog:
MeshLab 2020.07 is out! You can download in the download section, or in the github release page.
Changelog:
MeshLab 2020.06 is out! You can download in the download section, or in the github release page.
Changelog:
Due to the deprecation of QtScript and all the issues related to it,
we are dropping from MeshLab the support to XML plugins, and
therefore all the XML plugins have been transformed to classic
plugins in this MeshLab version. The involved plugins are:
We are happy to annouce that MeshLab 2020.03 is out! We set up an automatic system on our Github repository to automatically release a MeshLab version every first day of the month. Ultimate release can be found in the release page.
Note for Windows version: before installing MeshLab 2020.03, please uninstall manually any old MeshLab version. This is a known bug of the installer and will be fixed as soon as possible in future versions.
We are proud to announce that on July the 6th, at the Eurographics Symposium on Geometry Processing (SGP), MeshLab has been endowed with the prestigious Eurographics Software Award!
The award has been given for "having contributed to the scientific progress in Geometry Processing by making the software available to the public such that others can reproduce the results and further build on them in their own research work".
After a very long time, a huge rewriting process, and a strongly renewed effort the new MeshLab version is finally out!
The 3D data alignment phase (also known as registration) is a fundamental step in the pipeline for processing 3D scanned data. MeshLab provides a powerful tool for moving the different meshes into a common reference system, able to manage large set of range-maps. MeshLab implements a fine tuned ICP one-to-one alignment step, followed by a global bundle adjustment error-distribution step. The alignment can be performed on meshes and point clouds coming from several sources, including active (both short- and long-range) scanners and 3D-from-image tools.
The process of transforming independent acquisitions, or point clouds, into a single-surface triangulated mesh can be fulfilled with different algorithmic approaches. MeshLab provides several solutions to reconstruct the shape of an object, ranging from volumetric (Marching Cube) to implicit surfaces (Screened Poisson).
Color information may be as important as geometry, but several acquisition technologies do not provide accurate appearance data. MeshLab contains a pipeline for the alignment and projection of color information (from a set of uncalibrated images) onto a 3D model. Several automatic and assisted methods are provided to obtain a high quality color encoding, with both per-vertex or texture mapping.
MeshLab offers a series of automatic, semi-manual and interactive filters to remove those geometric element generally considered “wrong” by most software and algorithms. It is possible to removing topological errors, duplicated and unreferenced vertices, small components, degenerated or intersecting faces, and many more geometrical and topological singularities. Using different automatic and interactive selection methods, is then possible to isolate and remove unwanted areas of your meshes and point clouds.
3D models, especially coming from survey and scanning, often need to be re-oriented, or placed in a specific reference system; additionally, if they have been generated from 3d-from-photos, they generally need scaling to become metric. MeshLab provides a variety of features to manipulate the scale, positioning and orientation of a 3D model, including basic transformation operations like translation/scaling/rotation, automatic re-centering and alignment to axis, geo-referencing with reference points, interactive manipulators for rotation/translation/scaling, and many others.
A common need when processing a 3D model is to reduce its geometric complexity, creating a geometry with the same shape but with less triangles (or points). MeshLab offers different ways to simplify (decimate) triangulated surfaces, able to preserve geometrical detail and texture mapping, or to selectively reduce the number of points in a pointcloud. In other cases, the user may want to increase the number of triangles (or points): MeshLab also provides different subdivision schemes, remeshing and resampling filters to increase geometric complexity of 3D models, or to optimize point distribution and triangulation quality.
Interactive point-to-point measurement of a 3D model is really easy in MeshLab. Moreover, automatic filters will return various geometric and topological information about your 3D model (or just of a selected area), while the Sectioning tool can export cut-through sections of a mesh as polylines. Different geometric information (like curvature, geodesic distance, or local vertex density) may be calculated on meshes and 3D models using automatic filters.
The visualization features of MeshLab (including Decorators and Shaders) can help in graphically present the peculiar characteristics of a 3D model. It is possible to control the camera perspective/orthographic view parameters, and use predefined canonical views. MeshLab also offers a high-resolution screenshot feature, extremely useful in creating a graphical documentation of a survey.
MeshLab can manipulate the vertex and face colors using a series of photoshop-like filters (gamma, saturation, brightness, contrast, levels, smoothing, sharpening). Automatic filters are available to calculate Ambient Occlusion and Volumetric Obscurance and to map it to vertex or face color. It is also possible to explicitly write color functions, to highlight specific characteristics of the 3D model. MeshLab also offers a painting interface for vertex colors. Scalar values, possibly the result of a metric calculation on the 3D surface, may also be mapped on vertex/face color, to have a visual representation of that value.
Beside being able to export to STL (one of the most common formats for 3D printing), MeshLab can be used to prepare 3D models for printing by creating inner shells, resampling/remeshing the 3D model to make slicing easier, closing small holes to obtain watertight meshes, and flattening the bottom area to have a better platform adherence.
Measuring the geometric difference between two 3D models using Hausdorff Distance is a common approach in mesh processing. Many years ago (in 1997!), the Visual Computing Lab developed and freely distributed what become the standard tool for such task, Metro; the related paper has been cited more than one thousand times. While the original Metro tool was a small open source standalone command line program (still available at our web site), MeshLab offers now much more advanced functionalities for comparing two meshes, that also compute signed distance and may work on point clouds.
MeshLab can import and export a number of different 3D data formats and to online services like SketchFab. In this way it is possible for the user to interchange data with other tools (including Blender, Photoscan, VisualSfM, Cloud Compare, Autodesk tools), working in the context of complex 3D processing pipelines in a number of different contexts and applications. The scripting functionalities will make this type of use even easier and unattended.
Raster Layers have been introduced in MeshLab to allow to go beyond the standard 3D model. MeshLab users can import in a project also images and other 2D entities. These Raster Layers can be used not only to project color information on the 3D model, but also to generate peculiar points of view, or store an entire 3d-from-image acquisition procedure by including also the images used for the generation of the final results.
This playlist shows the basic concepts for the 3D model handling in MeshLab.
This playlist describes interesting features of MeshLab: edit, filters, decorations, that can be useful in your everyday "mesh processing" life.
This playlist describes the main steps of the scanning pipeline performed with MeshLab.
This playlist describes way to "clean" your mesh by removing unwanted geometry or attributes.
Please report on github ONLY bugs and malfunctioning. Please do not file as github issues questions about how to use MeshLab.
For sharing nice pictures, reporting interesting
experiences, thanking (or blaming) the developers, or just
bragging on your last results, follow the official
facebook MeshLab page.
Remember: do not ask technical questions on facebook. (facebook
is neither easily searchable nor well indexed: any
effort done in answering technical questions is a bit
wasted)
MeshLab sources are distributed under the GPL
3.0 Licensing Scheme.
The 'MeshLab' name is a
EUIPO trademark owned by
CNR.
MeshLab Logos (
) are distributed under
Creative
Commons Attribution-Sharealike 4.0 International License
and they can be freely used inside any wikimedia project.
General MeshLab citation. It should be used whenever you use MeshLab for many small things during your research. | P. Cignoni, M. Callieri, M. Corsini, M. Dellepiane, F. Ganovelli, G. Ranzuglia MeshLab: an Open-Source Mesh Processing Tool Sixth Eurographics Italian Chapter Conference, page 129-136, 2008 |
@inproceedings {LocalChapterEvents:ItalChap:ItalianChapConf2008:129-136, booktitle = {Eurographics Italian Chapter Conference}, editor = {Vittorio Scarano and Rosario De Chiara and Ugo Erra}, title = {{MeshLab: an Open-Source Mesh Processing Tool}}, author = {Cignoni, Paolo and Callieri, Marco and Corsini, Massimiliano and Dellepiane, Matteo and Ganovelli, Fabio and Ranzuglia, Guido}, year = {2008}, publisher = {The Eurographics Association}, ISBN = {978-3-905673-68-5}, DOI = {10.2312/LocalChapterEvents/ItalChap/ItalianChapConf2008/129-136} }
|
More specific citation if you have used the Meshlab in 3D scanning with color pipelines, like for example when you use MeshLab in a archeological project to finish up textured models. | G. Ranzuglia, M. Callieri, M. Dellepiane, P. Cignoni, R. Scopigno MeshLab as a complete tool for the integration of photos and color with high resolution 3D geometry data CAA 2012 Conference Proceedings, page 406-416, 2013 |
@InProceedings {RCDCS13, author = "Ranzuglia, Guido and Callieri, Marco and Dellepiane, Matteo and Cignoni, Paolo and Scopigno, Roberto", title = "MeshLab as a complete tool for the integration of photos and color with high resolution 3D geometry data", booktitle = "CAA 2012 Conference Proceedings", pages = "406-416", year = "2013", publisher = "Pallas Publications - Amsterdam University Press (AUP)", url = "http://vcg.isti.cnr.it/Publications/2013/RCDCS13" }
|
When using MeshLab for computing differences between meshes using Hausdorff Distance | P. Cignoni, C. Rocchini, R. Scopigno Metro: measuring error on simplified surfaces Computer Graphics Forum 17 (2), 167-174, 1998 |
@inproceedings {cignoni1998metro, title={Metro: measuring error on simplified surfaces}, author={Cignoni, Paolo and Rocchini, Claudio and Scopigno, Roberto}, booktitle={Computer Graphics Forum}, volume={17}, number={2}, pages={167--174}, year={1998}, organization={Blackwell Publishers} }
|
When using MeshLab to improve an existing parametrization (UV-map layout) of a textured 3D model, generated with automatic photo-reconstruction tools (e.g. when you want to get a nice, optimized parametrization out of a awfully scattered and fragmented atlas generated by one of the many tools for creating 3D models from photos). | Maggiordomo, Andrea, Paolo Cignoni, and Marco Tarini Texture Defragmentation for Photo-Reconstructed 3D Models Computer Graphics Forum. Vol. 40. No. 2. 2021, 2021 |
@Article{CCS12, author = "Maggiordomo, Andrea and Cignoni, Paolo and Tarini, Marco", title = "Texture Defragmentation for Photo-Reconstructed 3D Models", journal = "Computer Graphics Forum", number = "2", volume = "40", pages = "65--78", year = "2021", note = "https://doi.org/10.1111/cgf.142615", url = "http://vcg.isti.cnr.it/Publications/2021/MCT21/" }
|
When using MeshLab to generate well distributed (Poisson Disk) point sampling over mesh surfaces or when used to uniformly simplify large point clouds. | G. Ranzuglia, M. Callieri, M. Dellepiane, P. Cignoni, R. Scopigno Efficient and Flexible Sampling with Blue Noise Properties of Triangular Meshes IEEE Trans. on Visualization and Computer Graphics, Vol. 18, Num. 6, page 914--924, 2012 |
@Article{CCS12, author = "Corsini, Massimiliano and Cignoni, Paolo and Scopigno, Roberto", title = "Efficient and Flexible Sampling with Blue Noise Properties of Triangular Meshes", journal = "IEEE Transaction on Visualization and Computer Graphics", number = "6", volume = "18", pages = "914--924", year = "2012", note = "http://doi.ieeecomputersociety.org/10.1109/TVCG.2012.34", url = "http://vcg.isti.cnr.it/Publications/2012/CCS12" }
|
When using Screened Poisson Surface Reconstruction algorithm to build a triangulated mesh out of a point cloud. | M. Kazhdan, H. Hoppe Screened poisson surface reconstruction ACM Transactions on Graphics (TOG), 32(3), 29, 2013 |
@article{kazhdan2013screened, title={Screened poisson surface reconstruction}, author={Kazhdan, Michael and Hoppe, Hugues}, journal={ACM Transactions on Graphics (TOG)}, volume={32}, number={3}, pages={29}, year={2013}, publisher={ACM} }
|
When using the many functionalities for transfering attributes between meshes and textures. | Paolo Cignoni, Claudio Montani, Claudio Rocchini, Roberto Scopigno, Marco Tarini Preserving attribute values on simplified meshes by resampling detail textures The Visual Computer, 15 (9), 1999 |
@article{PTC10, title={Preserving attribute values on simplified meshes by resampling detail textures}, author={Cignoni, Paolo and Montani, Claudio and Rocchini, Claudio and Scopigno, Roberto and Tarini, Marco}, journal={The Visual Computer}, volume={15}, number={10}, pages={519--539}, year={1999}, publisher={Springer} }
|
When using the isoparametric mesh parametrization algorithm for remeshing surfaces. | Nico Pietroni, Marco Tarini, Paolo Cignoni Almost isometric mesh parameterization through abstract domains IEEE Transaction on Visualization and Computer Graphics, Volume 16, Number 4, 2010 |
@article{PTC10, author = {Pietroni, Nico and Tarini, Marco and Cignoni, Paolo}, title = {Almost isometric mesh parameterization through abstract domains}, journal = {IEEE Transaction on Visualization and Computer Graphics}, number = {4}, volume = {16}, year = {2010}, }
|
When using the quad and tri-to-quad functionalities to automatically convert a triangular mesh into a quad mesh. | M Tarini, N Pietroni, P Cignoni, D Panozzo, E Puppo Practical quad mesh simplification Computer Graphics Forum 29 (2), 407-418 , 2010 |
@Article{TPCPP10, author = {Tarini, Marco and Pietroni, Nico and Cignoni, Paolo and Panozzo, Daniele and Puppo, Enrico}, title = {Practical quad mesh implification}, journal = {Computer Graphics Forum (Special Issue of Eurographics 2010 Conference)}, number = 2, volume = 29, year = 200, url = http://vcg.isti.cnr.it/Publications/2010/TPCPP10 }
|
When using Radiance Scaling shader effect to enhance the surface features. | R. Vergne, R. Pacanowski, P. Barla, X. Granier, C. Schlick Radiance scaling for versatile surface enhancement Proceedings of the 2010 ACM SIGGRAPH symposium on Interactive 3D Graphics and Games (pp. 143-150). ACM, 2010 |
@inproceedings{vergne2010radiance, title={Radiance scaling for versatile surface enhancement}, author={Vergne, Romain and Pacanowski, Romain and Barla, Pascal and Granier, Xavier and Schlick, Christophe}, booktitle={Proceedings of the 2010 ACM SIGGRAPH symposium on Interactive 3D Graphics and Games}, pages={143--150}, year={2010}, organization={ACM} }
|