(Please check this page regularly for updates!)
Assignment 3: Mesh Repair
Preliminaries
This assignment does not require you to do any coding. However, we provide a mesh viewer that you can use to check your work. Install the DGP toolkit as usual. Download the skeleton code for the viewer here. Make sure you have GLUT installed, and copy the DGP/DGP subfolder to src/.
- Linux: Run make -f Makefile.linux
- OS X: Run make -f Makefile.osx
- Visual Studio: Create a new project and add the relevant source files (plus the GL, GLU and GLUT libraries) to it.
(For convenience, you can rename Makefile.<os> to Makefile, to avoid having to pass the -f argument each time.)
If the build succeeds, run ./viewer data/dino.off. A window like this should pop up:
Use the mouse to rotate the view. Press 'B' to see the shape's bounding box, 'E' to show the mesh edges, and 'Esc' to quit.
Todo
The mesh dino.off has a large number of disconnected components (two sets of faces are disconnected if no face in the first shares an edge with a face in the second). In the image, each disconnected component is colored a different color (there are 89 components). If you display the mesh edges ('E') and look closely, you will also notice that the layout of faces varies from component to component. In this assignment, you will use MeshLab or any other tool of your choice to repair and improve the mesh. This could involve:
- Reducing the number of connected components by gluing faces together and/or remeshing
- Making the tessellation (layout of faces) uniform across the mesh
- Reducing the total number of faces in the mesh without significantly degrading quality.
- ...
All you have to do is improve the mesh in at least two ways, document how you did it, and mail the improved mesh back to us. Don't spend too long on it, it's not designed to take more than 2-3 hours.
MeshLab has a large number of filters (just like a photo editor) to help you. Going through them is also an excellent warm-up for endsem prep.
Extra Credit: Every non-trivial improvement you do beyond the first two qualifies for 10% extra credit, upto a maximum of 30%.
Submission
Please email your submissions to the course staff (Sid + both TAs, emails on main page) using EXACTLY the following format:
-
Subject: [CS749-A3] <LDAP-ID>, <Full Name>
For example, my subject line would be "[CS749-A3] schaudhuri, Siddhartha Chaudhuri". Please follow this format precisely else our mail filters won't work.
-
Body: Leave blank unless you have something very specific to add.
-
Attachments: Attach a single zip file, named <LDAP-ID>-A3.zip (lowercase). E.g. for me that would be schaudhuri-A3.zip The zip should contain:
- The improved dino.off mesh
- A README file documenting how you improved the mesh, and what tools/filters you used.
Yes, multiple submissions are ok, but only the most recent one will be considered (going by email timestamp).
FAQ
-
What format are the meshes in? What's .off?
OFF is a simple and standard format for storing 3D meshes. It's extremely limited (e.g. it can't store different parts of an object as individual components), but is very easy to read and write, and is good enough for our purposes.
It's fully documented here: http://segeval.cs.princeton.edu/public/off_format.html. It's a useful exercise to write an OFF file (e.g. for a cube or tetrahedron) by hand in a text editor.
-
Can we do assignments in pairs/groups?
Nope, sorry. Assignments are individual exercises. We can't stop you talking to each other, but if two people mail back exactly the same mesh (it's easy to check), we will follow up.
-
What's the ethics code?
A common sense notion of fairness. As rules of thumb:
- Don't copy code from anywhere. Any code you submit must be written by you (but see next question). I won't stop you looking at other people's solutions to similar problems online, but I encourage you to at least try to figure out the solution for yourself. If the goal is to learn something from the course, you're doing yourself a disservice by not giving it a fair shot.
- It's ok to discuss approaches with classmates, but I again strongly encourage you to first try to figure it out yourself. And again, you must write your code yourself. We will penalize copied code (and we have good ways to detect this so don't try changing variable names etc).
- If you refer to a resource (website, person, program...) other than the lectures, please acknowledge it in the README you submit along with your assignment. You will not be penalized for the reference -- background research is always good -- and we should get into the habit of acknowledging our sources.
-
Can I approach the course staff if I am stuck/have a question?
Yes, of course, that's what we're there for! You can also talk to your peers, see above.