Downloads: Source Code (Visual Studio 2008 SP1, C++) [Zip]
CloneTool is a simple tool for interactively combining meshes via a brusing interaction similar to the "clone brush" in 2D image painting software. The user selects a source region, which is smoothed and subtracted to extract a vector detail layer. This detail mesh is then copied to a target region, with the copy area specified by interactive brushing.
The Geometric Clone Brush is described in the following paper:
Here is a screenshot:
CloneTool is built on top of the libgeometry library (included in the subdirectory libgeometry\) which is in turn built on top of WildMagic4 from GeometricTools. To build CloneTool you will need to follow three steps:
Note that some pre-compiled static libraries are included (for exmaple GLUT and GLUI). These are built for Visual Studio 2008 SP1 and are unlikely to work with other versions (but they might - who knows!).
Here is a list of controls, which you will need to know to use the software:
There are also options for each of the tools. You'll have to figure those out on your own...
Too many to list. This is research software. It is not robust or efficient. Good luck!
If you are running inside the Visual Studio debugger and it is very slow, make sure you have set the environment variable _NO_DEBUG_HEAP=1 in the Environment field of the Debugging options in the CloneTool Configuration Properties (right-click on the CloneTool project in the Solution Explorer and select Properties at the bottom to get there). This will make an enormous difference.
This majority of this code is released under the Boost 1.0 License, so you can use it for any purpose, commercial or non-commercial. However, some of the code is taken from other sources and you will need to respect their individual licenses:
The subdirectory libgeometry\WildMagic4 is taken from the WildMagic library (version 4) developed and distributed by Dave Eberly at GeometricTools.com. WildMagic contains, quite simply, the best low-level math library ever, and you should use it for everything. It is similarly under the Boost 1.0 License.
The subdirectory libgeometry\external\SparseMatrix contains pre-compiled libraries that themselves contain compiled versions of many other math libraries, including LAPACK, BLAS, TAUCS, METIS, UMFPACK, and more. Please see the GSI page for details.
The subdirectory CloneTool contains pre-compiled static libraries for GLUT, by Mark Kilgard, and GLUI, by Paul Rademacher. GLUT is "not public domain but freely redistributable" (link) and GLUI is distributed under the LGPL.
The file libgeometry\mesh_processing\Triangulator2D.cpp contains the source code to the TRIANGLE software, copyright Jonathan Richard Shewchuk. This code may not be used in commercial products without permission from the copyright owner. Please contact him, not me.
If you want to reference TRIANGLE, here is a citation:
Jonathan Richard Shewchuk, Triangle: Engineering a 2D Quality Mesh Generator and Delaunay Triangulator, in ``Applied Computational Geometry: Towards Geometric Engineering'' (Ming C. Lin and Dinesh Manocha, editors), volume 1148 of Lecture Notes in Computer Science, pages 203-222, Springer-Verlag, Berlin, May 1996. (From the First ACM Workshop on Applied Computational Geometry.) [PostScript] [HTML].
RMS @ DGP