In the final homework project you will need to work as teams of two, three or four 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 12th in CSE room 1202 to a panel consisting of the instructor, the TAs and the tutors. Late submissions will not be permitted. The final grade for the project will consist of three components: a blog with at least one progress update per week, the presentation, and there is extra credit for creating a video clip of your application.
1. Blog (10 Points)
Your blog needs to contain updates on the following topics:
- The name of your project.
- The names of your team members.
- The theme of your demo.
- The technical features you are implementing.
- What you are spending your creative efforts on.
- A screen shot showing the latest state of your application.
There needs to be at least one update during each of the three weeks of the project, starting with the week of November 25th. For the first two weekly updates you'll get 3 points each, the third is 4 points.
You are free to create the blog on any web based blog site, such as Blogger or WordPress. UCSD's Ted tool also supports blogs, which you are welcome to use, but know that they will be visible to the entire class.
To satisfy this requirement, please send the URL for the blog to the instructor at: jschulze [at} ucsd.edu. The deadline for sending the URL to the blog for the first week is Sunday, December 1st at 23:59pm. The deadlines for the subsequent weekly updates are: Sunday, December 8th and Wednesday, December 11th.
2. Presentation (90 Points)
The presentation will happen in CSE room 1202 (the main conference room on the 1st floor). There is a VGA cable to plug laptops in. You are encouraged to bring your own laptop and do the demo with it. If you do not have access to a laptop, you are allowed to bring a Windows executable with all necessary resource files and libraries on a USB thumb drive, and run it off the instructor's Windows 7 laptop - please make arrangements with the instructor at least a day ahead of time to make sure the demo will work.
If your laptop does not have a built-in VGA port, you are responsible to bring a suitable VGA adapter. You are going to present in front of the instructor, the TAs, the tutors, and all other students of the class. Guests are welcome.
You must work on this project in teams of two, three or four 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). Specifically: 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, a team of four needs to implement 12.
Note that the maximum number of advanced rendering features we will give points for is five. Only if your team has 4 members you are allowed six features.
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 one minute 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, with the OpenGL window size maximized. It is not acceptable to run your application in a 512x512 pixel window like you did in the other homework projects, because it would be hard to judge the image on the screen.
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, or support for audio. Explicitly permitted libraries are:
- GLee to manage OpenGL extensions.
- SOIL to load a variety of image formats.
- SDL as a more versatile replacement of GLUT.
- OpenAL for audio support.
- Any XML parser, such as MiniXML or PugiXML.
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)|
|Animated Bezier patches (two or more with C1 continuity)||(3 skill points)|
|Toon shading||(2 skill points); enable/disable toon shader|
|Environment mapping||(2 skill points); enable/disable environment shader|
|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: Video (10 Points)
Create a 60-90 second video clip showcasing your application, and link to it on your blog. The videos are going to be graded on the day after the project presentations, the deadline for them is December 13th at 9am. Make sure the video is in a format we can watch with a Windows 7 computer with support for AVI, MOV and MPG files.
To shoot the video footage, it is acceptable to just point a camera at your computer screen and hit 'record'. Or you can use screen recording software, such as the free CamStudio. Note that the video needs to have a minimum resolution of 640x350 pixels.
If you want to edit the footage, we recommend the free Windows Movie Maker. You are encouraged to add a title slide, but this is not required. You are welcome to record audio with it, or use text to point out things that aren't obvious.
Here is an example for what a clip could look like.
The jury will grade your video for the following things:
- Duration and resolution of the video follow the specifications.
- The video does a good job showing the technical features you implemented.
- The video does a good job showing the creative effort you put in the application.
Note: If the video won't play on a typical Windows 7 PC (with QuickTime player installed), you will get zero points!
- 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.
- MeshLab is another excellent tool for 3D file format conversion.
- Google 3D Warehouse and Turbosquid are great sources or 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.