Final Project
Code and Writeup Due: Thursday, May 2nd, 3:29 PM
Presentation Times: Thursday, May 2nd, 3:30 PM -- 6:30 PM
Overview
For your final project, you will work on a program that demonstrates an advanced computer graphics topic of your choice. Some suggestions are listed below, but you are also free to propose your own topic. You will implement the project, present a demo, and prepare a brief writeup describing the work you have done.
Reminder About Teams
Per the syllabus, you may work on this project in self-selected teams of up to two.
If you work in a team, in addition to the code submission process described below,
each team member must submit an individual Collaboration Report on Canvas
(either as raw text in the submission system, or as an attached .txt
or .md
) with answers to the following questions:
- In your estimation, what percent of the work did each team member contribute?
- Did you pair-program, or did you split up the project into individual tasks? Which parts of the project did each team member work on? (3-4 sentences).
Starter Code
Since the final project is open-ended, there is no starter code. You may use any code you have written in previous projects as a starting point for the final project, and you may also use external libraries or codebases, if approved by the instructor in advance.
Submission Instructions
The final project has multiple components. The presentations will take place during the class final exam period; your attendance and participation at the final exam presentation is mandatory unless you've made alternate arrangements with me in advance. All other project materials (including the writeup, code, and any other artifacts such as videos or screen captures) must be submitted to canvas before the start of the final project presentations. Include a README in your submission explaining its contents. Late days may not be used on the final project; materials submitted after the final project presentations will not be graded.
(Important) Technical Details of Grading
The final project grade will be determined by your score on three components: the implementation itself, the presentation, and a written report.
Project Implementation (100 points)
Decide on a project to work on, and provide an implementation of the project. The project should highlight an advanced topic relating to computer graphics that was not covered in the previous assignments, and whose depth and complexity exceeds the previous assignments.
The following list of topics are ideas for potential projects that have the right scope. You can also pick your own topics to work on; if you do, you are strongly encouraged to discuss your plans for the final project with me before you begin working to make sure the scope and topic is appropriate and likely to receive full credit.
- Implement radiosity. Compare your results to recursive ray tracing without global illumination. Create some scenes demonstrating when radiosity performs well, and when it suffers from artifacts.
- Implement the advanced shadow rasterization algorithms discussed in class: shadow maps, shadow volumes, and ambient occlusion. Compare their performance (accuracy and efficiency) on some scenes.
- Implement a 2D animation system that uses cage-based deformation. Use an advanced technique, such as mean-value coordinates or blended biharmonic weights, to transfer the cage pose to the 2D object.
- Implement Catmull-Clark and Loop subdivision. Add extensions to handle extraordinary vertices and sharp creases, and build a tool that shows the limit surface as well as the intermediate subdivision levels.
- Implement a mass-spring physical simulation, and use it to animate squishy objects or cloth. Look up peridynamics, and use it to implement fracture (breaking of objects) when they collide with each other or the floor.
- Implement a program that reads in objects specified using constructive solid geometry (CSG) and ray-traces them. Create animations involving CSG objects using a scene graph. Render an artistic short demonstrating the features of this tool.
- Implement a path tracer, and show it off on a variety of scenes would be impossible to render using your Whitted ray tracer. Incorporate physics-based rendering into your renderer.
You must submit full source code for your project. In addition, you must submit gradeable artifacts that demonstrate the project’s key features; these artifacts might include
- executable demos that I can run, with complete instructions included in a README for how to compile, run, and operate the demos. Any executable demo must compile and run on all three major operating systems (Ubuntu Linux, OS X, and Windows) without specialized hardware beyond a modern graphics card;
- screen captures of you operating an executable demo, as you talk through your program’s major features;
- pictures, videos, or 3D models generated using your program.
You are strongly encouraged to discuss with me or the TA, well in advanace, your plan for which research artifacts you will submit to ensure that they will be sufficient to allow grading of your final project.
Project Demo (50 points)
You will have a chance to present a demo of your finished project to the instructor and the class during the class's final exam slot. Details of the demo and its logistics will be announced closer to the project deadline.
Unless otherwise arranged with me in advance, attending the presentations is mandatory. (It should go without saying, but that means everyone's presentation, not just your own). Students who no-show or leave early forfeit the 50 points for the project demo component. If you have a conflict due to another final exam being scheduled at the same time, contact me to arrange alternate grading of your project demo.
Project Writeup (50 points)
Please prepare a report with details about the project you worked on. The report should be targeted at an audience that understands the basics of computer graphics (i.e., has sat in on the class lectures) but does not know the details of the specific algorithms and techniques you implemented. Briefly describe the goals of the project you worked on, and how the key algorithms and components work. Provide any mathematical derivations or equations needed to understand how your project's solution works.
In a second section, briefly describe how your implementation is engineered: give enough hints that the instructor and TA can figure out how your code works. Also describe any known bugs/limitations with your implementation.
The report should be submitted along with your code; it must be a PDF or Word file and each section should be at MOST one page long (so the total report will be a maximum of two pages long). You may include additional figures, videos, or references (see the section on project artifacts above) in your submission and these will not count against your report page limit.
Extra Credit (up to 30 points)
Particularly outstanding projects and presentations will be in competition for the "Lapin d'Or" prize, and 30 points of extra credit. There will also be some number of honorable mentions with smaller extra credit prize. You don't need to take any extra steps to be eligible for this extra credit -- other than showing off your work in the best possible light in your presentation/demo and writeup.
Extra Credit (10 points)
The university allows me to give 10 points of extra credit to any team whose members complete the online course instructor survey, and include a statement in their README affirming, on their honor, that they have submitted the survey. You do not need to include any screenshots of the eCIS systems to receive this credit.