Office hours: Tuesday, 4-5pm
What we will cover:
There are many courses that can teach you how to use commercial computer graphics packages and APIs. This course, in contrast, will teach you how to build 3D computer graphics from the ground up. This will include 3D modeling, animation, and rendering. At the end of the semester you will have built your own complete working real-time 3D computer graphics systems that runs in web browsers.
What you should already know:
If you are already familiar with Java or C++ or any similar high level language, you will not have any trouble picking up enough Javascript to do this course.
On the other hand, if you are not already an experienced programmer, then I do not suggest you take this course, as there will be weekly programming assignments, and you will not be able to keep up.
Computer graphics uses a lot of matrix math and some calculus. During the semester we will go over all of the matrix and vector math that you will need.
Text:
Class notes (so make sure you come to class!), will be posted on-line after each lecture.
Graders:
Jonathan Tompson
Discussion list:
http://www.cs.nyu.edu/mailman/listinfo/csci_ga_2270_001_fa13
Lectures:
Sep 04: Introductory lecture
Sep 11: Overview of material
Sep 18: First ray tracing lecture
Sep 25: Second ray tracing lecture
Oct 2: Third ray tracing lecture
Oct 16: Matrix transformations
Oct 23: WebGL geometry + shaders
Oct 30: Texture mapping and other things
Nov 6: First animation lecture
Nov 13: Second animation lecture
Nov 20: Particle systems, marching cubes, vertex shaders
Nov 27: Persp. interp., mesh refinement, springs, chrome, collisions, 4D
Dec 4: Virtual, mixed and augmented reality
Setting up a homepage and access to computers:
Most of you have the homepage and computers thing already figured out. But just to make sure you have at least one way to show your work on line, your NYU webpage can be activated and modified as follows:
To post assignments for this class, you should set up a subdirectory of your web site (preferably your NYU web site). Name this subdirectory "graphics". It should have a main "index.html" file, and that file should link to the various homework assignments. After the first class, you will send the grader an email, with subject line "graphics", telling him the URL.
For our introductory lecture I mainly went over the high level ideas of what we are going to do in this course, and showed some examples of computer graphics in action.
Homework assignment for this class, due before the start of next class: Put up on your class web page an essay describing what motivated you to take this course (eg: are you hoping to do computer graphics to make movies?), and any topics, material or ideas in particular you would like to see covered in this semester's class.
Here are links to the computer animations we saw and discussed in class:
Night on Bald Mountain from Disney's Fantasia
TRON LightCycles
The Works from New York Institute of Technology
MAGI Norelco commercial
Jurassic Park
Toy Story trailer
Fiat Lux by Paul Debevec
Avatar trailer
Snack and Drink (graphics + rotoscoping) by Bob Sabiston
Battlefield 4 for Playstation 4
Real time WebGL demo (with caustics and physics) by Evan Wallace
Carlitopolis by Luis Nieto
Worldbuilder by Bruce Branit
In this class we discussed, at a high level, the technical elements of computer graphics, covering the basics of color theory and shape modeling, and implications of rendering via ray tracing versus zbuffering (although we did not yet describe how to implement these rendering techniques).
Course notes for some of these topics are now on-line HERE.
We also briefly discussed linear transformations and 4×4 matrices.
Your assignment, due next Wednesday before class starts, is to download code1.zip, unzip it, modify the shader code you will see in the code1/ directory, and post your results on your class web page.
Note that you will need to create a subdirectory for this assignment, which will contain two files: (1) your modified version of index.html, and (2) script.js -- which you should not modify.
To learn how to enable WebGL for your browser (Safari or Firefox or Chrome, but not Internet Explorer), you can follow these instructions.
Course notes for the September 18 class and homework due before class on Sept 25 can be found HERE.
Here is a link to the video I showed at the end of the lecture: The Centrifuge Brain Project.
The first part of the course notes and homework assignment from the September 25 class can be found HERE.
The second part of the course notes and homework assignment from the September 25 class can be found HERE.
The course notes and homework assignment from the October 2 class can be found HERE.
I will be adding detail to these notes over the next few days, so watch this space.
The course notes and homework assignment from the October 16 class can be found HERE.
This will be a very easy homework assignment, for a change. :-)
The course notes and homework assignment from the October 23 class can be found HERE.
Note that the class discussion list has been posted.
In case you want to do some procedual modeling in JavaScript, inoise.js is a port to JavaScript of the improved version of noise I wrote in 2002.
The course notes and homework assignment from the October 30 class can be found HERE.
The course notes and homework assignment from the November 6 class can be found HERE.
The course notes and homework assignment from the November 13 class can be found HERE.
The course notes and homework assignment from the November 20 class can be found HERE.
The course notes and homework assignment from the November 27 class can be found HERE.
The course notes and homework assignment from the December 4 class can be found HERE.