John Reese


CS174c, taught by Peter Schröder

Fri Jun 13 23:33:22 PDT 1997

This program implements the non-shrinking fairing algorithm described by Taubin in:

Taubin, G., "A Signal Processing Approach to Fair Surface Design," Computer Graphics Proceedings, pp. 351-358, August 1995

It also implements most of the related algorithms described in this paper to create a mesh editor.

The code uses STL and the OpenInventor libraries, and has been tested on various different models of SGI workstations. I haven't made any attempt to make an Imakefile since I don't think anybody will try and use it on other machines. The most likely things you would need to change are the locations of the STL and OpenInventor libraries.

To build:

% touch .dep
% make
this will build the program as "Gerechtigkeit." you can also build a small program to generate a simple dodecahedral mesh (1.iv in the normal distribution)
% make ed
the mesh maker can be run with
% ./ed
Don't just type ed, as it will probably try to run /bin/ed.

To run the mesh editor, use a command line like this:

% ./Gerechtigkeit 1.iv sched4
the first argument is the initial mesh, and the second is a file describing the parameters used for the smoothing (lambdas and mus). The mesh must be an inventor/vrml file in a very specific format (no error checking is done, beside the program quiting if it is not in the right format). The format is:
#Inventor V2.1 ascii

Separator {
	Coordinate 3 {
		<coord data>
	IndexedFaceSet {
		<faceset data>
No extra or missing nodes are allowed.

The schedule file has a simple format. Lines starting with '#' and blank lines are skipped. All other lines are assumed to specify lambda/mu pairs. When fairing is done, the lambda/mu pairs are used in the order specified in the file, and wrapping around at the end. An example schedule file follows:

# 2-9 figure C.  kpb=.1000208772 (note: unstable)
see Taubin's paper for details on how to choose lambda and mu (which together determine the passband frequency, kpb). author