-- CS535 (Fall 2012) --

Interactive Computer Graphics

Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: \\arthur.cs.purdue.edu\aliaga\.www\cs535-10\geomod.jpg    Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: \\arthur.cs.purdue.edu\aliaga\.www\cs535-10\photorealistic_rendering_6_after.jpg   Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: \\arthur.cs.purdue.edu\aliaga\.www\cs535-10\architecture.jpg

     Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: \\arthur.cs.purdue.edu\aliaga\.www\cs535-10\network.gifDescription: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: \\arthur.cs.purdue.edu\aliaga\.www\cs535-10\animations.jpg    Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: Description: \\arthur.cs.purdue.edu\aliaga\.www\cs535-10\scanner-head-and-david-head-s.jpg

 

Instructor: Daniel G. Aliaga (aliaga@cs.purdue.edu, www.cs.purdue.edu/homes/aliaga)

Classroom: B134

Time: MWF @ 1:30-2:20pm

Office hours: by appointment

 

Interested in computer graphics? Does modeling objects interest you? Do you like rendering photorealistic imagery? Is doing animations fun to you? All this is part of computer graphics. This course teaches the fundamentals, at a graduate school level, for such activities and research projects. Major applications include:

 

[Course summary PDF]

 

1. Prerequisites

Students are required to have previous C/C++ programming experience and are recommended to have previous computer graphics experience, such as OpenGL programming experience (although OpenGL will be reviewed at the beginning of the semester).

 

2. Course work

The course work is composed of programming assignments, exams, and interactive class participation. The programming assignments consist of a warm-up assignment, three incremental programming assignments and a final project. The exams consist of a midterm and a final exam. Class participation will consist of active participation during class (you be called upon) and a final-project background research review to your classmates. Course work will be easier to manage if you keep a constant pace through the semester. This course is hard work but you will learn a lot and have fun!

 

3. Grading

            Programming Assignments: 20% (assignments 0-3)

                                                            35% (final assignment)

            Class Participation:                15% (10% final-project-review, 5% active participation)

            Exams:                                    10% (midterm)

                                                            20% (final)

                                                            -----

                                                            100% TOTAL

 

 

4. Tentative Lecture Schedule

 

August 20 – Course Organization, History, Programming at Purdue

            Assignment #0 out

August 22 – Cameras and Projections: Camera Models

August 24 – Cameras and Projections: Linear Algebra Review, Projections, Virtual Trackball

August 27 – Cameras and Projections: Single/Multi-projections and Omnidirectional Cameras

            Assignment #0 due

            Assignment #1 out [models.zip] [test.cpp]

August 29 – Graphics Pipeline: transformation, shading and lighting, rasterization

August 31 – Graphics Pipeline: advanced shading (GPU, GLSL, CUDA) [GLSL Spec] [GLSL Ref]

 

September 3 – No Classes (Labor Day)

September 5 – Texture mapping: proj. mapping, environment mapping, bump mapping

September 7 – Advanced Texture Mapping and GPU programming

 

September 10 – GPU programming

            Assignment #1 due

            Assignment #2 out  [myproject.zip]

September 12 – Spatial Hierarchies and Culling

September 14 – Spatial Hierarchies and Culling

 

September 17 – Procedural modeling: plants [ABOP], fractals and terrain, noise

 

September 19 – Procedural modeling: shape (and split) grammars

September 21 – Procedural modeling: inverse modeling examples

 

September 24 – Colors: perception and models

            Assignment #2 due

            Assignment #3 out

September 26 – Colors: calibration

September 28 – Colors: an example use of color-constancy

 

October 1 – Review

October 3 – Midterm

October 5 – Going over exam

 

October 8 – No Classes (Fall Break)

October 10 – Non-photorealistic Rendering

October 12 – Non-photorealistic Rendering

 

October 15 – Ray tracing and global illumination: radiosity

October 17 – Ray tracing and global illumination: radiosity and light transport

October 19 – Final Projection Explanation

            Assignment #3 due (NOTE: Due Oct 20 at 1:29pm)

            Final Projects out

            Presentation template

 

October 22 – Ray tracing and global illumination: light transport and inverse light transport

            Final Project Proposal due (by email)

October 24 – Ray tracing and global illumination: ray tracing and ray casting

October 26 – Visualization

 

October 29 – Simplification: LOD, vertex clustering, edge-collapse

October 31 – Simplification: hybrid approaches, geometry images

November 2 – Point-based Rendering

 

November 5 – In-depth presentations: Zi’ang, Kanrawi, John

November 7 – In-depth presentations: Silvia, Ahmad, Simon

November 9 – In-depth presentations: Blake, Raine, Abish

 

November 12 – Images: morphing and warping

November 14 – Images: morphing and warping

November 16 – Images: resizing synthesis

 

November 19 – Special Topic I: Computer vision

November 21 – No Classes (Thanksgiving Day)

November 23 – No Classes (Thanksgiving Day)

 

November 26 – Special Topic II: How to see in 3D?

November 28 – Demo Rehearsal/How-to-give-a-demo lecture

November 30 – Demo Day!

 

(dead week)

December 3 – Review for final

December 5 – How to take good pictures (and make good/compelling graphics models!)

December 7 – TBA

Final Exam – December 10, LWSN B134, 1-3pm

 

 

5. Assignments

 

You may use CS lab computers or home computers. Assignments must be written in C/C++ on a Windows computer. Assignments are due before class time on the due date and must be sent to the course TA using Blackboard Vista including all source code, data files, and an already compiled program. The time-stamp will be used to verify on time submission. The grading for the assignment will consider functionality and form. All assignments must be polished products, with a well designed user interface and clean, reliable functionality. A program that does not compile obtains 0 points.

 

Assignment #0 – Warm  up (1 week). The objective is to get a small graphics project working. You can either use (i) OpenGL+GLUT+GLUI or (ii) OpenGL+Qt to implement a simple screen-saver style program. The program will open up a window, display a GUI to choose screen-saver options, and draw a simple 2D screen saver in the main window. If you are already well versed in Windows GUI programming, you may use that instead but only upon approval by the instructor.

 

Assignment #1 – Linear Algebra: Virtual Trackball (2 weeks). The objective is to ensure you understand well camera models and perspective projection. You will implement a program that provides a virtual trackball interface. The logic will be described in class and in the assignment. You can use OpenGL matrix stack comments to do the linear algebra – or implement your own necessary math libraries. You must implement the trackball logic yourself however.

 

Assignment #2 – Environment Mapping (2 weeks). The objective is to write a program to implement environment mapping using GPU programming. We will provide a skeleton program but you will have to use OpenGL shading language (GLSL) and CPU code to produce the classical environment mapping effect.

Extra credit: implement other shading techniques, such as shadow-mapping, and/or support dynamic objects.

 

Assignment #3 – Procedural Modeling (2.5 weeks). The objective is to write a program that generates shapes procedurally. You may choose one of two variants:

a)     Shape Grammar: you assume a basic building block of one of a small set of 3D volumetric primitives (e.g., box, cylinder, etc). You specify via a text file some rules and enable creating an instance of such an object by instantiating the rule based on a provided starting symbol.

b)     L-system Grammar: you assume a basic building block of a 2D primitive (e.g., a rectangle). Via a text file, you specify rules for “growing” a plant or tree model from a given starting symbol. The resulting 2D shape should be able to resemble a desired plant or tree.

In either case, to prevent the procedurally generated object from “intersecting” itself, you should create a spatial data structure over the model and use it to perform efficient intersection tests. When an intersection is about to occur, you can either stop growing that branch of the grammar or perform a fix operation such as a “rotate by 90 degrees”.

Extra credit: use the same spatial data structure to perform view frustum culling.

 

Final Project (6 weeks). Projects will be presented on a publicly attended “demo day” at the end of the semester (last day of classes, details TBD based on enrollment). You may choose a project that builds upon one of the following. You will have to provide a written proposal that will be approved. Team projects (of up to 2 students) are permitted.

a)     Procedural Modeling: implement a 3D procedural modeling method for a particular class of objects.

b)     Sketching Interface: develop and intuitive way to sketch 3D designs, with focus on human-computer interaction (use mouch, touch screens, etc).

c)     Non-Photorealistic Rendering: implement one or more, or novel, algorithms to render an object in an interesting NPR style.

d)     Your own project but must be approved beforehand. You must submit it in writing and get it approved.

Grading: the final assignment must be a polished product, with a well-designed user interface and clean, reliable functionality.

 

 

6. In-Class Presentation (and Class Participation)

 

At the beginning of the final project time period, each project (individual or group), will give a short presentation about a background literature search of their proposed project. The presentation should include mostly a summary of the state of the art and a short preview of what your project will do. Also, in general students will be called upon during class to explain concepts and solve problems (sometimes in small teams).

 

 

7. Exams

 

The midterm will cover material explained in class, stressing fundamentals. The final exam will cover material of the entire semester and will stress understanding of general interactive computer graphics and its fundamentals. Both are closed book and will require “understanding and imagination” rather than memorization of formulas. A qual exam will be offered after the final exam.

 

8. Administrative Issues

 

Late policy

Assignments are due before class on due date. First time late – no penalty for up to one week, but instructor must be notified via email BEFORE deadline (if instructor not notified via email before assignment due date, late pass cannot be used and assignment will be late). Second and subsequent times -- grade reduction of 33% per day. All assignments required by demo day at end of course or failing grade will be issued.

 

Collaboration

All assignments, exams, and review presentations must be done individually. Final projects may be done in teams upon approval by the instructor. Copying or plagiarism will give you a failing grade in the course and you will be subject to departmental and University policies. Code obtained from the Internet, books, or other sources may *not* be used for any assignment/project. Exceptions allowed only under explicit instructor approval.