Please get my approval beforehand if you wish to implement something other than this assignment.
Implement an interactive 3D mesh viewer that can show the following:
You may use any mesh API for the assignment in any language, as long as it doesn't already provide the above features. I recommend checking out the trimesh2 library from Szymon Rusinkiewicz.
Visibility for contours does not need to be exact; indeed, this remains an open problem for smooth contours and suggestive contours. Using standard OpenGL depth-buffering is sufficient (with something done to prevent depth-fighting between the contours and the surface).
You should use visualizations to help you debug and develop the code. For example, rendering the mesh with vertex colors according to n.v or kr, drawing vertex normals, etc., can be extremely informative. Additionally, it is very informative to be able to "freeze" the viewpoint and render the mesh and contours of one view from another point of view.
Add an additional feature to the renderer, such as:
For each of the above programs, submit two or more images produced with each of the two parts of the assignments. Submit a write-up saying what you implemented. Provide any extra visualizations necessary to demonstrate that your renderings are correct, including side-views comparing mesh edge contours to smooth contours. Explain which extra features you implemented, and explain how the images submitted demonstrate the features. Are these extra features worthwhile? Why or why not? If not, how could they be improved?
40 marks will be given for each part of the assignment, plus 5 for each additional feature and 5 for the writeup. 10% will be deducted per day for late assignments.
Provide your images for me electronically. I'll put them on the course website. If you provide an HTML document with your images, I'll put that online too.