Carve is a C++ library designed to perform boolean operations between two arbitrary polygonal meshes. The standard union and intersection operations are supported, as are symmetric and asymmetric difference. It is also possible to implement custom operations using Carve, allowing results to be formed from any combination of inputs.

Carve has been extensively tested and optimized on a number of large real world and synthetic datasets, including laser scan data and terrain models. We have ensured that Carve's performance remains exceptional while still producing robust and correct output. Carve also supports transparent and precision preserving transformation of data in order to maximize the accuracy of CSG operations.

In addition, Carve supports a variety of inputs, including both closed and open surfaces, faces with arbitrary edge counts and datasets with multiple disjoint, embedded or touching surfaces. Carve can also interpolate arbitrary values across faces, meaning that CSG operations need not discard colour, texture coordinates or other data.

Carve is written in C++, and has been developed and tested in parallel on Windows, MacOS X and Linux.


Carve is a complete solution for large scale CSG problems where performance and correctness are paramount.