Project7Fall11

From Immersive Visualization Lab Wiki
Jump to: navigation, search

Contents

Final Project

Update: The final project summaries are now on-line.

In the final homework project you will need to implement an application which uses some of the advanced rendering effects and modeling techniques which are being discussed in class. Only those which have not previously been covered in 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, as long as you clear it with the instructor. We will evaluate your project based on technical and creative merits.

The final project is due at 1pm on Friday, December 2nd and has to be demonstrated in CSE room 1202 to a panel consisting of the instructor, as well as the 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 100 points achievable for this project: proposal, demonstration and web page.

1. Project Proposal (5 Points)

By Wednesday, November 23rd 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/title 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 creative efforts on.

The purpose of the proposal is to give the instructor a chance to let you know if he thinks that your project is overly ambitious, or insufficient to achieve full credit. Expect a response within 48 hours of your proposal submission.

2. Presentation (90 Points)

You will need to present your project on December 2nd between 1pm and 3pm. We will provide a dual-boot Windows/Linux PC from the lab to run the application 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, please bring the required adapter. You are welcome to bring guests to 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 you find interesting, as long as you clear them with the instructor. 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 creative quality. The grading will be based 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.

For creative 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 procedural terrain.
  • Build a simple car and a terrain or track it can be driven on 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.
  • 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 run in real-time and cannot be a pre-recorded movie.

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, 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)
  • 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 or 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)
  • Particle effect (7 skill points)
  • Collision detection: proximity detection with bounding spheres (3 skill points), bounding boxes (7 skill points), arbitrary geometry (10 skill points)

3. Web Page (5 Points)

Create a web page about your project. At a minimum it needs to include a description of your project (min. 300 words, 3 points), and at least one screen shot (2 points). 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 1st 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 image files (JPEG, TIFF, GIF, PNG, etc); 2) zip/tar up your web page directory tree with 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 projects.

Tips

  • 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 is a pointer to a simple model of UCSD's campus and one of the bear on the course's Ted discussion board. Feel free to use it or parts of it in your final project.