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 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.
WWW: http://code.google.com/p/carve/