Project7SP15

From Immersive Visualization Lab Wiki
Jump to: navigation, search

Contents

Final Project

The final homework assignment can be done in teams of up to three people, or individually. Each team will need to implement an interactive software application which uses some of the advanced rendering effects or modeling techniques we discussed in class. We will evaluate your project based on technical and creative merits.

The final project has to be presented to the entire class during our final exam slot from 8-11am on Tuesday, June 9th in room CSE 1202, the conference room on the first floor of the computer science building. It will be graded by the instructor, the TA and the tutor. Late submissions will not be permitted. You are allowed and encouraged to bring guests to the presentation.

Grading

Your final project score consists of three parts:

  • Blog (10 points)
  • Presentation (90 points)
  • Extra Credit (10 points)

Blog (10 Points)

You need to create a blog to report on the progress you're making on your project. You need to make at least three blog entries to get the full score. The first is due on Sunday, May 24th at 11:59pm, the second is due on Sunday, May 31st at 11:59pm, the third is due on Sunday, June 7th at 11:59pm.

The first blog entry needs to contain (at least) the following information:

  • The name of your project.
  • The names of your team members.
  • A short description of the theme of your project.
  • The technical features you are implementing.
  • What you are planning on spending your creative efforts on.

In week 2 you need to write about the progress you made, and mention any changes you have made to the team, project title, or implementation plans.

In week 3 you need to give another update like in week 2, plus the following things:

  • Upload one or more screen shots of your application.
  • Make a 1 minute long (+/- 5 seconds) video on your project. You don't need to use any editing software, at a minimum you can film your application with your cell phone camera. More polished videos are appreciated, for instance you can use screen recording software, such as the free CamStudio. There does not need to be an audio track, but you are welcome to talk over the video. Embed the video in your blog, or link to it from there. While the final blog entry is due on the Sunday before presentation day, the video is due by the beginning of the presentations (Tuesday June 9th at 8am).

You are free to create the blog on any web based blog site, such as Blogger or WordPress. You should use the same blog each time and just add blog entries. If you need to move to a different blog server, move your entire blog over (copy-paste if necessary).

Once you have created your blog, please send the URL to TA Dylan. You'll find his email address on Piazza.

Presentation (90 Points)

80% of the score for the presentation are for the technical features, 20% for the creative quality of your demonstration. The grading will be based solely on your presentation! What you don't show us won't score points. Each team will have one minute per team member for the presentation.

To obtain the full score for the technical quality, each team member must implement either two easy algorithms, or one hard algorithm.

Your score for creativity is going to be determined by averaging the instructor's, the TA's and the tutor's subjective scores. We will look for a cohesive theme and story, but also things such as nice looking geometry, tasteful textures, a thoughtful choice of colors and materials, smart placement of camera and lights, effective user interaction, and fluid rendering.

Here is the list of technical features you can choose from:

Easy:

  • Per-pixel illumination of texture-mapped polygons
  • Toon shading
  • Environment mapping
  • Bezier curves (two or more with C1 continuity) to control the motion of objects or the camera, or to create surfaces of revolution
  • Procedurally modeled city
  • Procedurally generated terrain
  • Procedurally modeled buildings
  • Bump mapping
  • Glow effect
  • Particle effect
  • Collision detection with bounding spheres or boxes

Hard:

  • Bezier patches (two or more with C1 continuity)
  • Shadow mapping
  • Shadow volumes
  • Procedurally generated plants with L-systems
  • Shape grammar for buildings or objects
  • Screen space algorithms, such as post-processed lights, lens flare, ambient occlusion
  • Collision detection with arbitrary geometry
  • Displacement mapping

Additional technical features may be approved by the instructor upon request.

Presentation Day

For the presentation, you need to bring a laptop or other computer with a VGA output (make sure you bring an adapter if necessary). If nobody on your team can bring a computer to the presentation, you can use the instructor's laptop, but you will need to test out your application at least one day before the presentation to test it (even if it is not the final version). The presentation should be done by two people: while one person speaks to the audience, the other one operates the computer. At least one person from each team must show up to present the project.

Your application needs to run in full screen mode, with the graphics window maximized. It is not acceptable to run your application in a small window like you did in the other homework projects, because the judges have to grade you based on what they see on the projector screen.

Implementation

If you want to have debugging support from the TAs and tutors, you need to implement this project in C++ using OpenGL and GLUT, just like the other homework projects. Otherwise, you are free to use a language of your choice, you can even write an app for a smart phone or tablet as long as you can send the image to the projector for the presentation.

Third party programming libraries are generally not acceptable, unless cleared by the instructor. Exceptions are typically granted for libraries to load images and 3D models, libraries to support input devices, or support for audio. Pre-approved 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
  • The math library GLm, as well as the enhanced version of it
  • FreeGLUT, a modern GLUT replacement
  • GLFW: similar to GLUT but slightly different approach with more control for the programmer
  • Physics engines (such as the Bullet Engine), as long as no points are expected for collision detection

Extra Credit: Bounty Points (10 Points)

In order to motivate you to choose the implementation of some of the hardest algorithms, you can receive up to 10 extra points for a flawless implementation of one of the following algorithms. Note that some of these are not directly or sufficiently covered in class, so you will need to research them youself.

For a full score of 10 points, teams of N people must implement N of these algorithms! In other words, each of the algorithms below gains the team 10/N extra credit points.

  • Displacement mapping
  • Shadow volumes
  • Post-processed lights
  • Screen space ambient occlusion (SSAO)
  • Collision detection with arbitrary geometry
  • Screen space directional occlusion (SSDO) with color bounce

To get the full amount of bounty points, you will need to show intermediate shader effect results in inset windows.

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, 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 and free tool for 3D file format conversion.
  • Trimble 3D Warehouse and Turbosquid are great resources for ready-made 3D models you can export to OBJ files with the above described technique.