This course is an introduction to computer graphics -- a field that is unique in its combination of science, art, and engineering. Its focus is the generation and manipulation of visual content, and it provides the fundamental technology to an ever-increasing variety of media, including special effects and animation, interactive computer games and simulation, and graphical user interfaces. In this class we will discuss methods for synthesizing images in two and three dimensions, with an emphasis on "photorealistic rendering". We will also spend time looking at other applications, including those for interactive rendering as used in computer games. To illustrate the material, we will use a combination of lectures, code walkthroughs, physical models, short films, and graphics & animation software. We will also have a few guests from the animation and research worlds. This will be a fun course, but will require the completion of some nontrivial homework as well -- it is expected that you have coding skills. |
Michael Reed
|
[ m-reed@cs.columbia.edu
| Home Page ] |
office hours: |
after class Thursday, or by
appointment |
mail: |
Department of Computer Science Columbia University 500 W. 120th Street, M.C. 0401 New York, New York 10027 |
In addition to
programming proficiency in C++, the student should have a basic
understanding of linear algebra and calculus. Students without these qualifications, who still wish to participate, should speak to the instructor. |
required: Fundamentals of Computer Graphics,
4th edition, by Peter Shirley et al. [A.K. Peters, 2016]
Additional
material will be provided by the instructor.
All course notes (in
pdf format) and homeworks will be put on the class wiki. If
you are registered for this course, you should request a membership in that Wiki, or email me directly, as a significant amount of discussion will take place there. We will also be using CourseWorks for homework submission and grade distribution.
|
There will be six homework assignments, each of which will be mostly fullfilled by programming. Assignments are to be coded in C++; a framework will be provided, as well as an interface specification (i.e. the name of the functions to write, their arguments, and return values). The framework is so that you will not have to spend time on anything other than the relevant aspects of the problem, to provide a uniform set of tests on your implementation, and to make grading easier. On Late Assignments: Assignments lose 10% each day they are late. On Collaboration: Discussion of algorithms is encouraged, as well as the sharing of drawings and other representations of problems and the like. What is not permitted is the sharing or acquisition of code in any form. Any material from an outside source must be explicitly acknowledged |
Class# |
Title & Selected Topics |
1 | Introduction plus history, mathematical preliminaries |
2 | Images, displays, line and polygon drawing animation appreciation : "The Adventures of Andre & Wally B." (Pixar 1984) |
3 | Viewing & Transformations & "The Graphics Pipeline" |
4 | Geometry 1: polygon meshes & subdivision surfaces & OpenGL 1 animation appreciation : "Knick Knack" (Pixar 1986) |
5 | Geometry 2: parametric curves & surfaces |
6 | Ray Tracing 1 animation appreciation : "Stanley & Stella" (Symbolics 1987) |
7 | Illumination & Shading guest : TBA |
8 | Rasterization-based rendering animation appreciation : "Geri's Game" (Pixar 1997) |
9 | Midterm guest : Mike Defeo, Master Sculptor at Blue Sky Studios |
10 | Aliasing & Antialiasing Special Topic: High Performance Computing on the GPU animation appreciation : "Bunny" (Blue Sky 1998) |
11 | Ray Tracing 2 |
12 | Textures & Materials |
13 | Animation & Simulation 1 animation appreciation: TBA |
14 | Miscellaneous Topics & Review |
Finals Week | Final Exam |