The final project summaries are now on-line.
In the final homework project you will need to team up in teams of two or three and implement a software application which uses some of the advanced rendering effects and modeling techniques we discussed in class. Only those which have not been covered in previous homework projects count towards the score. We provide a list of suggestions for topics, but you are free to choose what kind of scene and effects you want to implement. We will evaluate your project based on technical and creative merits.
The final project has to be presented during our final exam slot from 3-6pm on Thursday, December 13th in CSE room 1202 to a panel consisting of the instructor, the TA and the tutors. Late submissions will not be permitted. The final grade for the project consists of three components: a project summary, the presentation, and there is extra credit to be obtained for creating a web page.
1. Project Summary (10 Points)
By Friday, November 30th at 11:59pm you need to send a short summary (min. 300 words) of your planned project to the instructor via email. This summary must include:
- A name for your project (1 point).
- An outline of theme and story (3 points).
- A list of the specific technical features you want to get graded for (3 points).
- An overview of what you are going to spend your creative efforts on (3 points).
The purpose of the summary is to give the instructor a chance to let you know if you are trying to do too much or too little. Do not wait for a response from the instructor, he will only contact you if there is a problem.
2. Presentation (90 Points)
For the presentations, we will provide a dual-boot Windows/Linux PC from the lab to run your software on, and we will also have a VGA cable to plug in your own laptop. If your laptop does not have a built-in VGA port, you are responsible to bring a VGA adapter. You are going to present in front of the instructor, the TA, the tutors, and all other students of the class. You are welcome to bring guests.
You must work on this project in teams of two or three students.
We provide a list of suggested themes and techniques below, but you may implement any other ideas you find interesting, as long as you clear them with the instructor. We expect that you implement at least 3 skill points worth of advanced rendering features per person on the team; each feature on the list below has a specific skill point value, based on their difficulty to implement (ranging from one to three). A team of two needs to implement at least 6 skill points worth of features, a team of three needs to implement 9 skill points. Make sure to spend some time on an interesting theme and story for your demonstration and on creating a nice scene to show off your rendering effects.
Your overall score will consist of two parts: 80% are for the technical quality of the implemented effects, 20% are for the creative quality. The grading will be based solely on your presentation! Each team will have 90 seconds per team member for the presentation, during which you should verbally explain to the audience what your story is and what rendering effects you have implemented, while you demonstrate them on the computer. For some rendering effects, you will need to implement a keyboard toggle to turn them on or off; this is mentioned in the list below. We require that the speaker does not also operate the computer.
Your application needs to run in full screen mode, or almost full screen with window decorations showing. Do not run your application in a 512x512 pixel window like you did in the other homework projects!
Your score for creativity is going to be determined by averaging each judge's subjective score. We will look for a cohesive theme and story, but also things like nice 3D models (downloading models from the internet or designing them with a 3D modeling tool is encouraged), nice textures (consider taking digital photographs and converting them to textures), the choice of colors and materials, the positioning of camera and lights, user interaction, fluidity of rendering, etc.
This project must be implemented in C++ using OpenGL and GLUT, just like the other homework projects. If you want to deviate from this rule, you must clear that with the instructor. It may be allowable to use OpenGL ES on a mobile device. We encourage you to re-use source code you wrote during the quarter. You are permitted to use code from books and on-line sources, as long as you understand that code and can explain it to us.
Third Party Libraries
Third party programming libraries are generally not acceptable, unless cleared by the instructor. Exceptions are libraries for loading images or 3D models, as well as libraries that provide input device support. Explicitly permitted libraries are:
Ideas for Themes
- A museum room. Include artwork as texture maps. Include lights, benches, wood floors, rugs, doors, etc.
- Build a robot, animate it, make it walk or dance or respond to user commands.
- A space ship flying over a planet modeled using procedural terrain.
- Build a simple car and a terrain or track it can be driven on.
- Build a virtual roller coaster. Let the user's viewpoint follow along (in or behind) the roller coaster car. Include some interesting scenery.
- Your residence, or a well known place at UCSD: take photographs with a digital camera. Create a three-dimensional model of the place, using your photographs as texture maps. Use suitable textures as an environment map for complex lighting effects.
- Render a number of marbles bouncing around and bumping into each other, following the laws of physics, and casting shadows on each other and the surface they are on.
- Create a short movie clip which tells a fun story, similar to Pixar's short movies. As opposed to Pixar's movie clips, yours needs to be 3D-rendered in real-time.
|Per-pixel illumination of texture-mapped polygons||(2 skill points); enable/disable shader|
|Move the camera or objects in the scene along a path defined as a piecewise Bezier curve, for example to render a ride on a roller coaster||(2 skill points)|
|Toon shading||(2 skill points); enable/disable toon shader|
|Environment mapping||(3 skill points); enable/disable environment map|
|Shadow mapping||(3 skill points); toggle shadows on/off|
|Shadow volumes||(3 skill points); toggle shadows on/off|
|Procedurally generated terrain||(2 skill points)|
|Procedurally generated plants with L-system||(3 skill points)|
|Procedurally modeled city||(1-2 skill points for procedural building layout, +1 if individual buildings are procedurally modeled)|
|Bump mapping, displacement mapping||(2 skill points); enable/disable|
|Shape grammar for buildings or objects||(3 skill points)|
|Glow effect||(2 skill points)|
|Ambient occlusion||(3 skill points); enable/disable the shader|
|Particle effect||(2 skill points)|
|Collision detection: proximity detection with:||bounding spheres (1 skill point), bounding boxes (2 skill points), or arbitrary geometry (3 skill points)|
3. Extra Credit: Web Page (10 Points)
Create a web page for your project. At a minimum it needs to include a min. 500 words description of your project (6 points), and at least two representative screen shots (2 points each). In the description you need to give a high-level description of your project, explain what interactions are supported, list the supported keyboard and mouse commands, as well as your technical effects and what you focused your creative efforts on. You could also discuss your experience working on the project. You can use the summary text from Part 1 as a basis, but you need to update it to reflect your final product. The web page has to be emailed to the instructor by Wednesday, December 12th at 11:59pm. You can submit the content of your web page in one of two ways:
- Send the description as ASCII text in the email and attach your image files (JPEG format)
- Zip or tar up the directory tree with your HTML file(s) and images.
Unless you tell us otherwise, we will put these summaries on the course web site, along with the names of the team members, similar to last year's projects. Last year's projects list is a great starting point for you to get an idea of what is feasible in the time frame.
- If you use Google Sketchup to create obj models: Sketchup writes quads whereas our obj reader expects triangles. You can convert the Sketchup file to one with triangles using Blender, a free 3D modeling tool. Then you put the object into edit mode and select Mesh->Faces->Convert Quads to Triangles.
- Google 3D Warehouse is a great source for ready-made 3D models you can export to OBJ files with the above described technique.
- There are simple models of UCSD's campus and of the Bear on Ted, in the Files section. Feel free to use them in your final project.