(Please check this page regularly for updates!)

Assignment 3: Shape Descriptors


We'll again use the DGP toolkit for this assignment. Remember to keep your master copy up-to-date using git pull origin master regularly!

Assignment code

Download the skeleton code for the assignment here. Make sure you have GLUT installed, and copy the DGP/DGP subfolder to src/.

(For convenience, you can rename Makefile.<os> to Makefile, to avoid having to pass the -f argument each time. Also, this project doesn't actually use OpenGL, but the capability to display meshes is there if you need it.)


In this assignment, you will write code to compute a shape descriptor of a mesh, and test it on the Princeton Shape Benchmark. Skeleton functions for two different descriptors are provided in main.cpp. You need to implement only ONE of them (you can do the other one for extra credit if you would like).

The program has the following usage:

Usage: ./meshdesc <mesh> [vol2bbox] [d2 <#points> <#bins>]

The relevant functions you need to complete are marked with "TODO" in main.cpp. Remember, you only need to complete ONE of the following sets for the basic portion of the assignment! The functions are:

You can add any other functions and code that you need, but do not change the signature or expected behaviour of the above functions.

For 20% extra credit (EC), implement both descriptors! If you make any errors in either, we will treat the function which is more correct as the basic portion of the assignment, and the less correct function as the EC.

Finally, test your descriptor(s) on the Princeton Shape Benchmark. This dataset has 907 training meshes from several classes, and 907 test meshes also divided into classes. You will work with only the test dataset (see the PSB paper).

Submission Instructions

You need to submit your source code directory and a Readme. Please follow these instructions EXACTLY.

Be very sure that you have the following folder structure:

+-- src
|   |
|   +-- Common.hpp
|   |
|   +-- Mesh.cpp
|   |
|   +-- Mesh.hpp
|   |
|   +-- MeshEdge.cpp
|   |
|   +-- ...
+-- Readme.txt

Please do NOT include any other files! No data files, binary files, etc.

Now zip this folder (do NOT use .tar, .tar.gz, .rar, .7z or any other format), calling it YourRollNo-A3.zip and submit it on Moodle. If you log in to Moodle, you should find an assignment called "A3: Shape Descriptors" set up.