cutdigital / mcut

A library for detecting and resolving intersections between two surface meshes.
https://cutdigital.github.io/mcut.site
Other
409 stars 74 forks source link
3d-boolean boolean boolean-operations c-plus-plus computational-geometry cross-platform csg cutting geometry-processing library linux macos mesh-boolean mesh-csg mesh-cutting mesh-processing performance windows

MCUT Overview

Gist: A library for detecting and resolving intersections between two surface meshes.

Windows MacOS Linux

This project is called "MCUT" (short for 'mesh cutting'), and it provides functionality to perform robust geometry operations between surfaces, as shown below:

Figure 1: Generate, slice and perform Booleans without errors.

The project is designed for a broad range of real-world problems relating to 3D modelling and design tasks. Application areas include computer animation, aerospace and automotive engineering, digital dental modelling, mining, civil and mechanical engineering amongst others.

Capabilities

MCUT is a tool for partitioning objects represented as meshes that model solids or open surfaces: It is a code library for cutting 3D mesh objects using their geometry to produce crisp fragments at fine scale, which is useful for operations like slicing and boolean operations (union, subtraction and intersection). Supported features include (see images below):

What is being offered is a general solution to the problem of resolving solid- and/or open-mesh intersections. It is a solution that is sought by many companies, researchers, and private individuals for its ability to address extremely difficult problems relating to computational geometry in 3D. A classic application is constructive solid geometry (CSG) i.e. the “boolean operation”, which is shown below, where the resulting meshes/objects are produced with MCUT:

Figure 2: Generate solids / polygons using a robust Boolean engine, where other technologies fail, MCUT solids will be valid.

Practical benefits and advantages for users

The capabilities of MCUT will allow users to develop robust design tools. For example, these tools could cater to the design of industry-specific structural models like open-pit mines, tunnels, drill holes, mechanical instruments and rock-block models. All this alongside the ability to handle general 3D modelling tasks that are typical in industry and academic-fields related to computer graphics (e.g. game-engine level design) and mechanical engineering (e.g. fracture simulation). In essence, users of MCUT are provided with the capability to create robust derivative products and tools for generating (and testing) structural designs in a virtual setting for short- and long-term production operations and feasibility tests/studies.

The following images show more examples of what you can do with MCUT:

Figure 3: Fracture simulation using the Extended Finite Element Method (XFEM) (https://onlinelibrary.wiley.com/doi/abs/10.1111/cgf.13953), where MCUT is used to create fragment geometry by intersecting the simulation domain with propagated cracks.

Figure 4: Intersecting a gear cog with a surface to model the fracturing of steel.

Figure 5: Merging an engine with the axle shaft to model their connectivity.

Figure 6: Intersecting a hand model and a sphere, showing how MCUT can also be useful for planning and designing molding processes for e.g. 3D printing.

Figure 8: Assorted results produced by intersecting the Stanford bunny model and armadillo.

Figure 9: Tunnel excavation of a mountainous terrain for modelling underground construction with a boring machine (represented with cylinder). Note how the input meshes need not be solids.

Figure 10: Creating an Open-Pit mine model on a rough terrain for e.g. pre-planning operations.

Figure 11: An example of sectioning with a flat plane, which can be used to eliminate material/volume on either side of this plane or create hollow carve-outs.

Licensing

MCUT is available under an Open Source license as well as a commercial license. Users choosing to use MCUT under the free-of-charge Open Source license (e.g. for academic purposes) simply need to comply to its terms, otherwise a commercial license is required.

These options facilitate wider adoption of MCUT in other Open Source projects, while ensuring long term support, maintenance and further development of the code for the benefit of its users.


Consider adding a Star here on GitHub if MCUT has helped you in anyway.

You may also send an email to the original author if you have questions about MCUT.