V22.0480-002: Undergraduate Computer Graphics, Fall 2005

Office hours:

Monday, 5-7pm
719 Broadway, 12th floor

This will be a basic introductory course to 3D graphics. There will be a lot of programming - generally one small sized assignment per week. We will be doing the programming in Java, and you will be posting your work to the Web, as Java applets. In the course of the semester you will learn the basics of implementing a geometric modeler, a renderer and an animation system, and the basics of user interaction, as well as underlying mathematical concepts such as smooth spline curves and surfaces.


My exciting class notes, and your brilliant class participation.


Steven Chin
email: shc295 AT cs.nyu.edu

List server:


Student pages:

are here

Topics (approximately):


Examples and homework for this week are here

Suggestions for compile command line:

javac -target 1.1 -source 1.2 ...


In class we went over the use of 2D matrices for linear transformations. There is no specific homework due for next class. I want to take the slight extra time to make sure that everyon in the class has the ability to post Java applets that work across platforms. If you are still having any problems getting your applet running, or suspect you do, please let me know as soon as possible. -Ken Perlin

3D Matrices

In class we went over the use of 3D matrices for linear transformations.

Note that there is an event on Friday September 23 concerning Work Opportunities for Women in Computer Science. All those interested in the alarming (and growing) gender imbalance in computer science are encouraged to attend.

Forward Kinematics

Local versus global transformations
Kinematic chains
Kinematic trees
Combining matrix/matrix operations with point transformation
Making things animate over time
The matrix stack: pushing and popping

Homework due Wednesday September 28:

Example of animating

Parametric Surfaces

Notes about parametric surfaces are here.

Here is the assignment that is due on WEDNESDAY, OCTOBER 12.

Cubic spline curves

Homework due Wednesday October 26:

Ray tracing

Ray Tracing notes

Advanced ray tracing

Homework due Wednesday November 9

Advanced ray tracing notes for doing raytracing with reflection (due Wednesday Nov 16)

Z-buffers, part 1

Notes on Phong shading algorithm

Z-buffers, part 2

Notes on Zbuffering (and mesh normals)

Homework for Wednesday Nov 30: Scan convert one triangle (ie: split it into two "trapezoids" as in the notes, and linearly interpolate). Make a picture. Each of the three corners of the triangle should be a different color. Your goal is to make a picture of that triangle, by scan-converting it according to the on-line notes and class lectures. The result should be an image of a triangle whose color interpolates smoothly between the three colors at the corners. The result might look something like the triangle below:

Z-buffers, part 3

Homework for Wednesday Dec 7: Now implement the rest of the basic Z-buffer. First extend your triangle scan-converter so that it also scan-converts a perspective z value between the three vertices (in addition to red,green,blue that you already scan-convert).

Then do z-buffer rendering of a 3D scene, making sure to define a collection of one or more lights, where each light contains a direction {x,y,z} and a color {red,green,blue}. In my rendering notes I discuss materials and lights.

When you get to the point where you need to render one triangle, you should follow the pipeline instructions in the notes on the zbuffer algorithm, which includes the step of computing the r,g,b of each vertex using the phong algorithm.

Spline surfaces

Texture mapping, Animation, etc.

Various advanced topics