Difference between revisions of "Project7Fall13"

From Immersive Visualization Lab Wiki
Jump to: navigation, search
(1. Blog (10 Points))
(Third Party Libraries)
Line 45: Line 45:
 
* [http://lonesock.net/soil.html SOIL] to load a variety of image formats
 
* [http://lonesock.net/soil.html SOIL] to load a variety of image formats
 
* [http://www.libsdl.org/intro.php SDL] as a more versatile replacement of GLUT
 
* [http://www.libsdl.org/intro.php SDL] as a more versatile replacement of GLUT
* OpenAL for audio support.
+
* [http://kcat.strangesoft.net/openal.html OpenAL] for audio support.
  
 
===Ideas for Themes===
 
===Ideas for Themes===

Revision as of 16:32, 14 November 2013

Contents

Final Project

In the final homework project you will need to work as 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 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 at least 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.

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.

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 is Sunday, December 1st at 23:59pm.

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.

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 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, 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:

  • SOIL to load a variety of image formats
  • SDL as a more versatile replacement of GLUT
  • OpenAL for audio support.

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.

Technical Features

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: Video (10 Points)

tba

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 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.