Interested in computer graphics? Does graphics, gaming, and simulations interest you? Do you like rendering photorealistic imagery? Do you like rendering artistic imagery? Is doing animations and movies 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. For more information on Computer Graphics here at Purdue, checkout http://www.cs.purdue.edu/cgvlab. Major applications include:

- Virtual Reality
- 3D Scanning
- Video Games
- Film Special Effects
- CAD/CAM
- Simulation
- Medical Imaging
- Image Processing
- Scientific Visualization
- Information Visualization

**1. Prerequisites**

Students are required to have previous C/C++ programming experience. Knowledge of linear algebra is strongly recommended. Previous computer graphics experience, such as OpenGL programming experience, is beneficial but not mandatory. OpenGL will be implicitly used in the course: a review of OpenGL will be indirectly given during first half 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 assignment. The exams consist of a midterm and a final exam. Class participation will consist of active participation during class. This course is hard work but you will learn a lot and have fun!

**Classroom**:
Lecture - LWSN 1106, PSO - HAAS G056

**Time**:
Lecture MWF @ 10:30-11:20am, PSO - W @ 1:30-3:20pm, F @ 3:30-5:20pm

**Instructor**:
Daniel G. Aliaga,
Elisha Sacks

**Instructor office hours:**
by appt (send email)

**TA**:
Carlos
Vanegas

**TA Office Hours**:
by appt (send email)

**3. Grading**

Programming Assignments: 30% (assignments 0-3)

30% (final assignment)

Class Participation: 10%

Exams: 15% (midterm)

15% (final)

-----

100% TOTAL

**4. Lecture Schedule**

*Basics*

Jan 7 – Introduction to Computer Graphics (History)

Jan 9 – CGVLab and Research Summary

Jan 11 – Vectors, points, matrices, coordinate systems, transformations I

*Linear Algebra*

Jan 14 – Vectors, points, matrices, coordinate systems, transformations II

Jan 16 – 3D->2D Projections I

**
Assignment #0 out (1 wk:
OpenGL/GLUT/GLUI)**

Jan 18 – 3D->2D Projections II

*2D Processing*

Jan 21 – Holiday

Jan 23 – TBA

Jan 25 – 2D Image processing: rotating, translating, scaling

** Assignment #0 in**

**
Assignment #1 out (2 wks: 3D
point, vector, matrix operations and xforms)**

* *

*2D Processing*

Jan 28 – 2D Image processing: affine and perspective warping, inferring the transformation

Jan 30 – Graphics Pipeline (overview), Line Rasterization

Feb 1 – Triangle Rasterization

*Shading and Lighting*

Feb 4 – Colors, Lighting models (Gouraud)

Feb 6 – Lighting models (Phong)

** Assignment #1 in**

**
Assignment #2 out (2 wks: Shading and Lighting)
**

Feb 8 – Other illumination models

*Geometric Thinking*

Feb 11 – Geometry/Triangle Computations I

Feb 13 – Geometry/Triangle Computations II

Feb 15 – TBA

*Collisions*

Feb 18 – TBA

Feb 20 – Collision Detection Basics

** Assignment #2 in**

**
Assignment #3 out (3 wks:
Collision Detection and Animation)**

Feb 22 – Animation and Interpolation

*Review and Midterm*

Feb 25 – Review I

Feb 27 – Midterm

Feb 29 – Solutions

*Ray Tracing*

March 3 – Ray Tracing Basics

March 5 – Ray Tracing Advanced

March 7 – Ray Acceleration Schemes

*Spring Break*

March 10 – Spring Break

March 12 – Spring Break

March 14 – Spring Break

*Object Representations*

March 17 – Points, Polygons, Triangles, Curved Surfaces

March 19 – LOD, Edge Collapse

** Assignment #3 in**

**
Final Project out (4 wks) [models.zip]
[makepipe.zip]**

March 21 – Vertex Clustering, Simplification Trees

*Simplification Basics*

March 24 – Subdividing Triangles I

March 26 – Subdividing Triangles II

March 28 – Manifolds and Meshing

* *

*Spatial Hierarchies*

March 31 – Top-down Spatial Subdivisions

April 2 – Bottom-up Bounding Volume Hierarchies

April 4 – TBA

*Special Topics I (Computational Geometry)*

April 7 – Computational Geometry

April 9 – Robot Path Planning, Configuration Space, Randomized Algorithms

April 11 – Projective Geometry

*Special Topics II (GPU Programming)*

April 14 – Fragment Shaders

April 16 – Pixel Shaders

April 18 – Final-Project Previews

*Review and Demos*

April 21 – Review I

April 23 – Review II

April 25 – Demo Day!

Final Exam – TBA