Parametric Pseudo-Manifolds and Applications in Graphics

IMPA - February 2009

Luiz Velho and Marcelo Siqueira


Course Description | Schedule | Handouts and Slides | Code | Related Links

Announcements

  • We will meet in Room 349 on Monday (February 2), Tuesday (February 3), Thursday (February 5), and Friday (February 6) from 1 to 3 PM.

Schedule

Day/Time
Lecture
Topic
Instructor
Feb 2, 1 - 2 PM 1
Manifolds
Luiz Velho
Feb 2, 2 - 3 PM 2
Applications of Manifolds to Graphics and Vision
Luiz Velho
Feb 3, 1 - 2 PM 3
Constructing Manifolds
Marcelo Siqueira
Feb 3, 2 - 3 PM 4
Techniques for Fitting Manifolds to Polygonal Meshes
Luiz Velho
Feb 5, 1 - 2 PM 5
A Manifold-Based Approach for Surface Fitting - I
Marcelo Siqueira
Feb 5, 2 - 3 PM 6
A Manifold-Based Approach for Surface Fitting - II
Marcelo Siqueira
Feb 6, 1 - 2 PM 7
Implementation Details - I
Marcelo Siqueira
Feb 6, 2 - 3 PM 8
Implementation Details - II
Luiz Velho

Handouts and Slides

Lecture
Handout Slide
1
PDF (small), PDF (large)
2
ACM SIGGRAPH Course Notes by C. Grimm and D. Zorin
PDF (small), PDF (large)
3 PDF (small), PDF (large)
4
PDF (small), PDF (large)
5
PDF (small), PDF (large)
6
same as above
PDF (small), PDF (large)
7
Not provided
PDF (small), PDF (large)
8
Adaptive Mesh Library (A48 - documentation)
Not provided

Code

The zipped file manifold.zip contains a directory with the source files for the code presented in class.

Unzip the file to create the directory manifold:

> unzip manifold.zip

You should see a directory named "manifold" with the following subdirectories:

  • bin
  • commonlib
  • data
  • dcel
  • include
  • install.sh
  • lib
  • offlib
  • ppslib-sphloop
  • ppslib-sphpnt
  • run-intel.sh
  • run-ppc.sh
  • testpps-sphloop
  • testpps-sphpnt

Enter the directory manifold and run the installer (we assume you are running a Unix-like system):

> sh install.sh

If everything goes smooth, you will should have the following libraries inside subdirectory lib:

  • libCOMMON.a
  • libDCEL.a
  • libOFF.a
  • libPPSsphloop.a
  • libPPSsphpnt.a

and the following executable files inside subdirectory bin

  • testpps-sphloop
  • testpps-sphpnt

The above two files are the code for approximating Loop subdivision surfaces and PN triangle surfaces, respectively. To execute them, we provided data and two scripts: run-intel.sh and run-ppc.sh, which are both inside directory manifold. The fomer script is intended to be used by Intel-based machines, while the latter one is provided for PowerPC-based machines, such as the Apple PowerBook G4 notebook. Some meshes (the ones showed in class) are inside subdirectory data. To execute either script, do the following:

> sh run-intel.sh

> sh run-ppc.sh

You can ignore both scripts and directly call testpps-sphloop or testpps-sphpnt in the command-line.

The binary file testpps-sphloop should be executed as follows (we assume you are inside directory manifold):

> ./bin/testpps-sphloop <arg 1> <arg 2> <arg 3>

where <arg1> is an OFF file name (without extension) containing the input mesh, <arg 2> is a file containing the eigenstructure data table of the algorithm written by Jos Stam for exact evaluation of Loop subdivision surfaces, and <arg 3> is the level-of-detail employed by the sampling procedure that will generate the output mesh file. The file containing the eigenstructure data table is located inside subdirectory testpps-sphloop. There are two files: lpdata50NT.dat and lpdata50.dat. The former file is intended to be used by Intel-based machines, while the latter one is intended to be used by PowerPC-based machines.

A typical command-line for executing testpps-sphloop in Intel-based machines is (we assume you are inside directory manifold):

> ./bin/testpps-sphloop data/knot testpps-sphloop/lpdata50NT.dat 4

The output for the above execution consists of two files: knot-sphloop-4.off and knot-sphloop-pps-4.off. These files are piecewise linear approximations to the Loop subdivision surface and the parametric pseudo-surface generated from the input file. You can use any application that takes in OFF files, such as Geomview, to visualize the output meshes. We do not provide such an application here.

The binary file testpps-sphpnt should be executed as follows (we assume you are inside directory manifold):

> ./bin/testpps-sphpnt <arg 1> <arg 2>

where <arg1> is an OFF file name (without extension) containing the input mesh and <arg 2 > is the level-of-detail employed by the sampling procedure that will generate the output mesh file.

A typical command-line for executing testpps-sphpnt is (we assume you are inside directory manifold):

> ./bin/testpps-sphpnt data/knot 4

The output for the above execution consists of two files: knot-sphpnt-4.off and knot-sphpnt-pps-4.off. These files are piecewise linear approximations to the PN triangle surface and the parametric pseudo-surface generated from the input file. Like before, you can use any application that takes in OFF files, such as Geomview, to visualize the output meshes.

Both codes have been tested, but they were produced for research and developed in a hurry (as most codes for research are). So, there is plenty of room for improvements and no proper documention (although there are comments all over the code to explain its logic).

We hope you have fun using the code and, please, let us know if you find any problem with it!


Related links:

The following links are just a very small set of interesting links to courses on geometric modeling in the US and abroad. Please, visit the corresponding sites and browse their available lecture notes. They all have very nice reading materials and pointers to several other related links.

  • C++ implementation of Lexing Ying and Denis Zorin's construction of manifolds for surface fitting (get the paper here).

Valid HTML 4.01 Transitional