First of all, I'm not good at English, please bare with me.

This is a small CSG(Constructive Solid Geometry) Boolean Operation library for Ogre mesh.
A week ago, I found small C++ CSG demo from here
It was converted C++ sources from original Java CSG Boolean code.
I decide to port this code to work with Ogre Mesh and somehow manage to work.
The C++ code license is GNU GPL V3, so here it's ported version of lib.
This lib has no demo or example program. And no documents...
Download :
develoment version (*.h + *.lib)
full source (*.h + *.cpp + vc2005 project file) * Include some Korean remarks. Feel free to remove it if you have a problem.
Features: Entity Boolean Operation : Union, Intersection, Difference
Changed from Original: add UV Texture coordinate support, Memory leak bug fix, remove OpenGL dependency and some data management code.
Known Issue: Newly generated face will have same UV coordinate. I can't figure out how to assign UV for new faces.

Not fully tested under various situation. It will not work on mesh with more than 10000 vertex.
Usage:
#include "cvCSGOgreWrapper.h"
void cvEntityBoolean(const std::string& MeshName, Ogre::Entity *Ent1, Ogre::Entity *Ent2, evCSG_OPER Op);
or
void cvEntityUnion(const std::string& MeshName, Ogre::Entity *Ent1, Ogre::Entity *Ent2);
void cvEntityIntersection(const std::string& MeshName, Ogre::Entity *Ent1, Ogre::Entity *Ent2);
void cvEntityDifference(const std::string& MeshName, Ogre::Entity *Ent1, Ogre::Entity *Ent2);
The result mesh will be created by given name. You can create entity with newly generated mesh name.
Screen Shot:
Difference example Hopefully some of you find it useful!
CyberCop