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.
MeshLab allows the management of large unstructured meshes and allows a set of functionalities for editing, optimization, inspection, representation and conversion to other triangular mesh formats. Similarly, it is possible to remove duplicate data, as well as non-referenced vertices, faces and edges in the input data, apply remeshing, smoothing filters, noise removal, mesh registration (based on ICP), coloration / inspection, painting, measurements on triangular structures, among many other functionalities. The latest version of MeshLab 1.3.x allows you to write selected shaders in GLSL, large rendering for high-quality printing (keeping 3D printers in mind), ambient occlusion, and more features.
MeshLab is currently available for Windows, Linux, Mac OSX and smaller versions for iOS and Android. The tool accepts various read / write file formats like PLY, OFF, STL, OBJ, 3DS, VRML, U3D, x3D, COLLADA, etc. and other formats point cloud formats.
- 3D Acquisition: Aligning
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.
- 3D Acquisition: Reconstruction
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).
- 3D Acquisition: Color Mapping and Texturing
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.
- Cleaning 3D Models
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.
- Scaling, Positioning and Orienting
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.
- Simplification, Refinement and Remeshing
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.
- Measurement, and Analysis
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.
- Visualization and Presentation
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.
- Color Processing
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.
- 3D Printing: Offsetting, Hollowing, Closing
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.
- Comparing Models
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.
- 3D Models Conversion and Interchange
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: Integration with Images
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.