Now that we've learned how OpenGL and the OpenGL Shading language work, this project is intended to give you (and a couple of friends) the creative freedom to make a visually interesting demo. Your exam grades are ephemeral, but this project should stick with you for years to come as an example of your best and most impressive undergraduate work.
By now, you've developed a codebase that allows you to load 3D objects, process their geometric structure, and apply various shading algorithms to render them. In this project, you'll be extending this codebase to create an interactive demo that showcases your graphics skills.
You may work in groups of up to three people for this assignment. Group projects are highly encouraged. However, the expectations for group projects will be (understandably) higher than those for projects done by individuals.
If you run into trouble while working on your project, you have several avenues available to you. Ask questions in lab, post a message on the course discussion group, or come to the instructor's office hours.
Because libgfx is extremely platform independent, using it ought to allow you to develop your code on one system and trivially port it to another. However, we only officially support the library on the iMac machines in the College 8 lab, so if you run into machine- or platform-specific problems on another system, we may not be able to help you. In order for your project to be graded in lab, you must make sure that it compiles and runs on a machine that is physically in the lab. If your project does not compile when we attempt to grade it, you will receive very few points, if any.
You may use a different GUI toolkit (e.g., GLUT, SDL) if you like. If you decide to do this you must:
It is also possible to develop your project on another platform. However, you must be able to demo your project in the lab during your assigned demo slot. You may demo your project on a laptop if you wish, but you should note that OpenGL 2.0 and the OpenGL Shading Language are still not universally supported on all platforms and hardware configurations. Therefore, we strongly suggest that you plan to complete this assignment in the class lab.
You have broad discretion in picking a project. There are no required features, and the instructor will approve any proposal that he believes will result in a visually interesting application.
Grading will be based primarily on the visual appeal of your project with consideration given to the originality of the idea and the technical challenge of the work. Note that extremely ambitious projects that do not work will receive basically no credit, while relatively simple projects that are executed well will receive high grades. Be careful not to bite off more than you can chew!
Here are a few ideas that the instructor thinks would make good final projects. You should not feel limited by this list!
Since graphics is fundamentally a visual field, projects that are extremely impressive (especially those involving the OpenGL shading language) may be eligible for nontrivial amounts of extra credit.
Follow all handin instructions carefully. If you do not hand in all of the required files in the proper fashion, your project will not be graded and you will receive no points.
You must turn in the following files:
All source and header files (e.g. *.cxx, *.h, *.frag, *.vert).
All XCode files, makefiles, project files, etc. needed to compile your program.
A ReadMe webpage named README.html that contains the following information:
Any other files (e.g., libraries, data files) needed to compile and run your program. If you've used only the provided libraries and mesh files, do not turn those in.
Do not turn in executables or other unnecessary files generated during compilation. Doing so will waste disk space and will incur a substantial point penalty.
To actually turn in your finished project, follow the hand-in instructions that we have provided. If you're working in a group, only one group member needs to turn in each project. Note that you must turn in your project by your scheduled demo time.
Before you begin work, you should make sure that you've read the policies on grading and academic integrity in the course syllabus. Any questions as to what constitutes acceptable behavior during the development of your project should be directed to the instructor via email or the course discussion group.
A required part of the grading process will be a live demo of your finished project. You will not receive any points for your project until it has been demoed. Signups for demo slots will occur in class on Thursday, June 1st. Teams that fail to show up for their demo slot will not have their projects graded and will receive no credit.
There will be absolutely no extensions of any kind given for this project, so don't even ask!