Piecewise Smooth Subdivision Surfaces with Normal Control -- Implementation



Abstract: We present the implementation of the above paper using VTK as API. This work is part of the Mathematische Methoden der Computergraphik lab held in 2003 at the Vienna University of Technology.





What is the main improvement of the program over the Standard Loop Subdivision ?

The paper lets the user tag features that are sharp edges, and which thus should be preserved even in the case of multiple subdivisions. As you can see in the pictures at the right side, this was done with the back part of the croissant, which doesn't get rounded off like the rest of the mesh.

How can I use the implementation ?
You will need the Visualization Toolkit (VTK) API and a C++ compiler to build the source. We used Visual C++ 6.0 under windows. Since VTK is also available for linux, you might even be able to compile everything there - but be aware that you might have to change names for the Standard Template Library (STL) calls.
We have build a package that contains sample source as well as a 3ds model and a tag file. To run the sample under VC++, you would build project "Sub", using

  torus2.3ds triangle torus2.tag
as input. If everything works out fine, you should something resembling the right pictures. You can use + or - to control the number of subdivisions. If you want to change the tags, you need to change the torus2.tag text file. The syntax is given in the source of the ReadTagFile() function.

Where is <xxyyzz< documented ?
The source is annotated for sake of clarity. However, you certainly might want to download the paper and look into that first, since all the constructs used are from it. I am perfectly sure that with the help of the paper and a basic understanding of subdivision algorithms, you should be able to grasp the idea of it easily. Furthermore, we have not re-implemented the original loop algorithm, but rather enhanced it in a clean, object-oriented style. This should make everything readable, too.

Where can I download it ?
Right here - this zip-file contains everything: Sources, Binaries, VC Project Files and a Makefile:


download PiecewiseSmooth-0_1.zip


Further References ?