Final Project
Summary of final projects
In the final homework project you will need to implement some of the advanced rendering effects and modeling techniques discussed in class, which have not previously been covered in other homework projects, and show demonstrate them in an interesting interactive application. We provide a list of suggestions for topics, but you are free to choose what kind of scene and effects you want to implement, as long as you clear it with the instructor. We will evaluate your project based on technical and artistic merits.
The final project is due at 2pm on Friday, December 3rd and has to be demonstrated in CSE room 4140 to a panel consisting of the instructor, TAs and tutors who will decide on the grade. Late submissions will not be permitted. There are three requirements in order to receive the full 110 points achievable for this project: summary, web page, and demonstration.
There will be no homework introduction for this project, given its open nature. But the instructor will summarize the concept in class on Tuesday, November 16th.
1. Project Proposal (10 Points)
By Friday, November 19th at 4pm you need to send a short summary (about 300 words) of your planned project to the instructor via email. This summary must include:
- A name for your project.
- An outline of theme and story.
- The specific rendering effects you plan on implementing.
- An overview of what you are going to spend your artistic efforts on.
The instructor will respond to your proposal within three days with an assessment of whether or not the project is acceptable as described and will achieve full points if fully implemented. The instructor will let you know if he thinks that the project is overly ambitious and in this case will suggest things to cut in order to make the implementation feasible within the allotted time frame.
2. Presentation (90 Points)
You will need to present your project on December 3rd between 2pm and 4pm. The venue has not been finalized yet and will be announced here and in class. We will provide Windows and Linux PCs to run the application on, and will also have a VGA connector to plug in your own laptop. If your laptop does not have a built-in VGA connector, please make sure that you bring an adapter. You can choose to run your application on the instructor's laptop. It runs Windows XP (32-bit) and has an Nvidia Quadro 1600M graphics card which should satisfy all your shader requirements. Please bring your Windows executable and all required data on a USB flash drive if you want to use this laptop. Guests are welcome at this presentation session.
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 that you find interesting, as long as you clear them with the instructor or the TAs. We expect that you implement at least 10 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. A team of two needs to implement at least 20 skill points worth of features, a team of three needs to implement 30 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: 70% are for the technical quality of the implemented effects, 30% are for the artistic quality. The grading will be based on your presentation. Each team will have 60 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 recommend that the speaker does not also operate the computer.
Your application needs to run in full screen mode (-5 points if not).
For artistic quality we look at 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, etc.
This project must be implemented in C++ using OpenGL, just like the other homework projects. We encourage you to re-use the code you wrote for the earlier projects. You are permitted to use code from books and on-line sources, as long as you can explain every line of code if we ask you to. Third party programming libraries are generally not acceptable, unless cleared by the instructor.
Ideas for themes:
- A museum room. Include artwork as texture maps. Include lights, benches, wood floors, rugs, doors, etc. if you wish. The user should be able to navigate the scene and change view direction with keyboard or mouse controls.
- Build a robot. Animate it. Make it walk or dance or respond to keyboard controls.
- A space ship flying over a planet modeled using fractal terrain.
- Build a simple car and a region (or a track) where it can be driven under user control.
- Build a virtual roller coaster. Let the user's viewpoint follow along (in or behind) the roller coaster car. Include some interesting scenery.
- Take photographs of a room or two from around UCSD or from your residence with a digital camera. Also take photographs of furniture. Make a three-dimensional model of this area and its furnishings, using your photographs as texture maps. Allow the user to navigate with arrows or other keyboard controls around the scene. (Sort of like Quake without the shooting.)
- 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.
Suggested technical features:
- Per-pixel illumination with multiple light sources and different light source types such as spot lights; combination with texture mapping (7 skill points): enable/disable shader
- Bump mapping or displacement mapping (7 skill points): enable/disable
- Piecewise Bezier surfaces (7 skill points)
- 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 (7 skill points)
- Geometry based physics simulation (on CPU: 7 skill points; GPGPU/CUDA: 10 skill points)
- Toon shading (7 skill points): enable/disable toon shader
- Environment mapping (map generated from scene: 10 skill points, otherwise 7 skill points): enable/disable environment map
- Shadow mapping (10 skill points): toggle shadows on/off
- Shadow volumes (10 skill points): toggle shadows on/off
- Procedurally generated terrain (10 skill points)
- Fractal plants (10 skill points)
- Procedurally modeled city or other environment (10 skill points)
- Ambient occlusion (10 skill points): enable/disable the shader
- L-Systems (10 skill points)
- Collision detection (bounding boxes/spheres: 7 skill points; polygon level: 10 skill points): enable/disable mode in which colliding objects are highlighted
- Particle effect (7 skill points)
- Steep Parallax Mapping (10 skill points): enable/disable
3. Extra Credit: Web Page (10 Points)
In order to receive extra credit, you need to create a web page about your project. At a minimum it needs to include a description of your project (min. 300 words), and at least one screen shot. We suggest that you explain the plot, the game play, and the supported keyboard and mouse commands. You can use the proposal text as a basis, but you need to update it so that it reflects what you actually implemented. The web page has to be emailed to the instructor by Thursday, December 2nd at 11:59pm. You can send the content of your web page in one of two ways: 1) send the description as ASCII text in the email and attach your screen shot(s) as image files (JPEG, TIFF, GIF, PNG); 2) ZIP/tar up your web page directory tree including your HTML file(s) and your images.
Unless you instruct us otherwise, these web pages will be linked to by the course web site, along with the names of the team members, similar to last year's project page.
Tips
- If you use 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 (http://www.blender.org/), a free 3D modeling tool. Then you put the object into edit mode and select Mesh->Faces->Convert Quads to Triangles.
- There is a simple model of UCSD's campus on the course's WebCT discussion board, as an attachment to an email in the Homework Projects group. Feel free to use it or parts of it in your project.