


c

Instructor: Daniel G. Aliaga
Classroom: Grimson Hall 280 (LWSN B160 for PSO)
Time: Lecture MWF @ 1:30-2:20pm, PSO Mon @ 9:30-11:20am or Mon @ 11:30-1:20pm, or Tue @ 1:30-3:20pm
Office hours: by appt
TA: Yi-Liu Chao, chao1 at purdue dot edu (for PSO) and Swetha Lakshmanan, slakshma at purdue dot edu (for grading)
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 an undergraduate
school level, for such activities and research projects. Major applications
include:
1. Prerequisites
Students are required to have previous C/C++ programming experience. Knowledge of linear algebra is strongly recommended. Previous computer graphics experience is beneficial but not mandatory.
2. New Framework
The course is being significantly
revised this semester! The course work is composed of programming assignments,
exams, and interactive class participation. OpenGL, GPU shading, and G3D will
be used during the course; a review of these tools will be indirectly given
during beginning of the semester.
Assignments will build upon the G3D Innovation Engine, which is a commercial-grade C++ 3D engine available as Open Source (BSD License). It is used in commercial games, research papers, military simulators, and university courses. G3D supports hardware accelerated real-time rendering, off-line rendering like ray tracing, and general purpose computation on GPUs.
G3D provides a set of routines and structures so common that they are needed in almost every graphics program. It makes low-level libraries like OpenGL and sockets easier to use without limiting functionality or performance. G3D is a rock-solid, highly optimized base on which to build your 3D application.
It will enable quick development of:
- OpenGL-like programs,
- GPU shading programs,
- Ray tracing and other complex illumination algorithms,
- Procedural modeling, and
- Gaming systems!
The programming assignments consist of a warm-up assignment, four programming assignments and a final assignment. The exams consist of a midterm and a final exam. In-class participation will consist of presenting a preview of your final assignment (schedule arranged later). 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: 45% (assignments 0-4)
20% (assignment 5 = final project)
In Class Presentations: 5% (preview of final assignment)
Exams: 15% (midterm)
15% (final)
-----
100% TOTAL
4. Tentative Schedule and
Assignments
Week 1: overview
Jan 9: course overview and research overview
Jan 11: OpenGL basic program/CUDA/OpenCL/GLUI/GLUT/G3D
Jan 13: vectors/points/matrices
Asgn 0: Open-GL program using G3D (1 week) [asgn0-main.cpp]
Week 2: math
Jan 16: no classes
Jan 18: cameras, perspective, projections
Jan 20: Opengl/G3D use
Asgn 1: implement classes to do math yourself in prev asgn (2 weeks)
Week 3: graphics pipeline
Jan 23: modeling, transformation, rasterization, shading and lighting, texture mapping
Jan 25: bump mapping and environment mapping
Jan 27: example pixel/vertex shader programs: GLSL spec, GLSL quick reference
Week 4: shading and lighting
Jan 30: shaders: diffuse/specular
Feb 1: shaders: bump mapping, environment mapping
Feb 3: shaders: displacement mapping, scattering, BRDFs, etc
Asgn 2: implement GPU shading program using pixel/vertex shaders [asgn2.zip] [asgn2-more.zip] [cartoon][simple-scatter] [fancy-scatter]
Week 5: image processing
Feb 6: image warping/blending
Feb 8: view morphing, image warping
Feb 10: demos using image processing program and Wolfram Demonstration Projects
Week 6: ray tracing
Feb 13: ray casting, intersection tests
Feb 15: reflection, transmission
Feb 17: area-based, soft shadows, etc
Asgn 3: ray tracing which includes diffuse/specular computations using a provided G3D ray tracing program [asgn3.zip]
Week 7: spatial hierarchies and VFC
Feb 20: binary/quad/oct
Feb 22: bounding volume
Feb 24: VFC
Week 8: procedural modeling
Feb 27: procedural modeling of plants, history
Feb 29: procedural modeling of buildings/cities
Mar 2: more procedural modeling and review for midterm
Asgn 4: procedural modeling program [ABOP]
Week 9: midterm
Mar 5: review
Mar 7: midterm
Mar 9: go over exam
Week 10: spring break
No classes
Week 11: NPR
Mar 19: Nonphotorealistic rendering (NPR)
Mar 21: Extended Toon Shading and Shading Exaggeration
Mar 23: Ambient Occlusion
Week 12: animation/collisions
Mar 26: LOD overview
Mar 28: LOD generation: operators and error metrics
Mar 30: LOD VDS
Asgn 5 (final project): procedural modeling enhanced, NPR, game, or self-proposed [makepipes.zip]
Week 13: simplification and visibility
Apr 2: Visibility Culling
Apr 4: Guest Lecture: 3D Urban Modeling
Apr 6: Student Presentations I
Week 14: mid-project presentations
Apr 9: Student Presentations II
Apr 11: Student Presentations III
Apr 13: Student Presentations IV
Week 15: special topics
Apr 16: Comments on Final Assignment; 3D computer vision I
Apr 18: 3D computer vision II
Apr 20: projector/camera systems
Week 16: pre-demo
Apr 23: how to present
Apr 25: review for final
Apr 27: demo day!
5. 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.
6. 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 20% per day. All assignments required by demo day at end of course or failing grade will be issued.
Collaboration
All assignments and exams must be done individually. 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. Exceptions allowed only under explicit instructor approval.