


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