Project 1: Smoothing and Eigenmeshes

Assigned: Thursday, September 25

Due: Monday, October 13 before 5:00 p.m.




Requirements

You will implement a system for smoothing surface meshes. You will also be exploring the eigenvector decomposition of meshes. The required functionality of your project is as follows:

[10 points] Laplacian Smoothing
Implement standard Laplacian smoothing using explicit forward Euler steps. You should implement at least two weight schemes: (1) Unit weights and (2) inverse edge length [Fujiwara] weights.

[20 points] Taubin Smoothing
Implement Taubin’s lambda-mu method.

[20 points] Eigenmeshes
Construct a Laplacian matrix for a mesh, and extract its eigenvectors. Projecting the coordinates of the vertices onto this eigenbasis provides an eigenmesh. Note: For each coordinate value (xyz) you will have n scalars – one per eigenvector. Hint: Try this on small meshes.

[20 points] Explicit Eigensmoothing
Having constructed an eigenmesh representation of the surface, you can explicitly force all high-order frequencies to zero and reconstruct a new smoothed surface.

[20 points] Alternate Frequency Transfer
Chopping off the high-order frequencies corresponds to a box filter transfer function. Demonstrate a couple other interesting transfer functions. Interesting examples might include Gaussians and functions which exaggerate low or high frequencies. Think about the sorts of things you usually do with the equalizer on a stereo.

[10 points] Quality Code
Your code should be efficient and well-written. It should be easy to follow and demonstrate quality design.

You’ll probably want to browse through our collection of links, particularly the Surface Mesh Libraries and Numerical Libraries sections.

Sample Models

The file format used here is a very limited subset of the Wavefront OBJ format. The files consist of a series of lines:

v x1 y1 z1
v x2 y2 x2
.
.
.
f i1 j1 k1
f i2 j2 k2
.
.
.

Each v line defines a new vertex. Vertices are implicitly numbered by their order of appearance starting with 1. Each f line defines a triangle by giving the integer IDs of the vertices which forms its 3 corners.

You can generate infinitely many more examples using the Maya software installed in the CSIL labs.

Handin

You must hand in all the following things:

  1. All source code that you have written.
  2. Any other file necessary to make your software compile.

To actually hand in your project:

  1. Package all your files in a single archive (either .zip or .tar.gz are acceptable).
  2. E-mail this archive to me at garland+handin@cs.uiuc.edu prior to the handin deadline. If your project is too large for e-mail, you can contact to make other handin arrangements.

After the due date, we will be arranging times for you to demo your project to me. These demos are required to receive a grade on the project.


Last modified: Thu Sep 25 16:32:38 2003