MeshLib is modular by design. Our goal is to provide only what you need, so you can avoid what you do not and keep your project lightweight. The only mandatory module is MRMesh. All others are optional.
Below is a summary of all modules and their dependencies, so you can see what each requires before including it in your build
Module | Task | Required modules | Optional? |
---|---|---|---|
MRMesh | Core geometry | - | No, Mandatory |
MRIOExtras | Input/Output | MRMesh | Yes |
MRSymbolMesh | Text-to-mesh | MRMesh | Yes |
MRPython | Python | MRMesh | Yes |
MRVoxels | Volumetric | MRMesh | Yes |
MRCuda | GPU acceleration | MRMesh and MRVoxels | Yes |
MRViewer | Rendering and user interface | MRMesh, MRVoxels, MRSymbolMesh and MRIOExtras | Yes |
MRMesh is our core module, handling geometry operations. Since it is mandatory, its dependencies are required for every build.
Name | Description | License |
---|---|---|
Boost | C++ Libraries - provides free peer-reviewed portable C++ source libraries | Boost Software License |
Eigen | a C++ template library for linear algebra | MPL2 |
spdlog | very fast, header-only/compiled, C++ logging library | MIT |
fmt | a library providing a fast and safe alternative to C stdio and C++ iostreams | MIT |
gtest | Google Test - C++ testing and mocking framework | BSD-3-Clause |
tiff | provides support for the Tag Image File Format (TIFF) | MIT |
jsoncpp | manipulating JSON values, including serialization and deserialization | MIT |
libzip | libzip - reading, creating, and modifying zip archives | BSD-3-Clause |
zlib | A Massively Spiffy Yet Delicately Unobtrusive Compression Library | zlib |
minply | a simple and fast parser for PLY files | MIT |
oneTBB | simplifies the work of adding parallelism to complex applications | Apache-2.0 |
phmap | fast and memory-friendly hashmap and btree containers | Apache 2.0 |
expected | implementation of std::expected with functional-style extensions | CC0-1.0 |
Mbed TLS | a C library that implements cryptographic primitives | Apache-2.0 or GPL-2.0-or-later |
MRIOExtras adds support for the input and output of additional file formats (e.g., glTF, STEP, PDF). It requires MRMesh and includes:
Name | Description | License |
---|---|---|
libHaru | free, cross platform, open source library for generating PDF files | zlib |
libjpeg-turbo | is a JPEG image codec that uses SIMD instructions | BSD-3-Clause, IJG (Independent JPEG Group) |
libpng | library for use in applications that read, create, and manipulate PNG | libpng2 |
opencascade | open-source full-scale 3D geometry library | LGPL-2.1 |
tinygltf | is a header only C++11 glTF 2.0 | MIT |
OpenCTM | the Open Compressed Triangle Mesh file format | zlib/libpng |
LAZperf | alternative LAZ implementation for C++ and JavaScript | Apache 2.0 |
libe57format | library for reading & writing the E57 file format | Boost Software License |
tinyxml2 | an efficient, C++ XML parser | zlib |
MRSymbolMesh is our module responsible for text-to-mesh conversion operations. As such, it requires MRMesh plus:
Name | Description | License |
---|---|---|
FreeType | a freely available software library to render fonts | GPL-2.0, FTL(BSD like) |
MRPython enables Python bindings and embedded Python scripting for MeshLib. It depends on MRMesh and:
Name | Description | License |
---|---|---|
python3 | is a high-level, general-purpose programming language. | PSF |
pybind11 | a library that exposes C++ types in Python and vice versa | BSD-3-Clause |
MRVoxels provides functionality for volumetric operations. It depends on MRMesh plus:
Name | Description | License |
---|---|---|
OpenVDB | efficient manipulation of sparse, time-varying, volumetric data discretized | MPL2 |
gdcm | C++ library dedicated to reading/parsing and writing DICOM medical files | BSD |
MRCuda enables GPU-accelerated algorithms using NVIDIA CUDA. Here, you need MRMesh, MRVoxels, and:
Name | Description | License |
---|---|---|
CUDA | GPU-accelerated libraries, debugging and optimization tools, a C/C++ compiler, and a runtime library | CUDA License |
MRViewer is MeshLib’s module for rendering and UI. It handles window creation, input, and GUI elements. It needs MRMesh, MRVoxels, MRSymbolMesh, MRIOExtras, and:
Name | Description | License |
---|---|---|
glad | GL/GLES/EGL/GLX/WGL Loader-Generator based on the official specs | MIT |
GLFW | library for OpenGL, OpenGL ES and Vulkan development on the desktop | zlib |
Dear ImGui | a bloat-free graphical user interface library for C++ | MIT |
Curl for People | Curl for People - a simple wrapper around libcurl | MIT |
clip | cross-platform C++ library to copy/paste clipboard content | MIT |
hidapi | is a Simple library for communicating with USB and Bluetooth HID devices on Linux, Mac, and Windows | HIDAPI, BSD-3-Clause, GPL-3.0 |
Fontawesome | is the Internet's icon library and toolkit, used by millions of designers, developers, and content creators | Fontawesome License |
NotoSans | is a global font collection for writing in all modern and ancient languages | OPEN FONT |