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/