CSCI-UA-0480-006
Special Topics: Computer Graphics

60 Fifth Ave, Room C12
Tue/Thu 11am-12:15pm

 

 

Grader: Ruojin Zhang ( rz1600 AT nyu DOT edu )

My office hours: Wednesdays 9:30am-10am EST, and other times by appointment

NOTE: Due to the outbreak, office hours and lectures will be held on-line.
Follow OFFICE HOURS LINK for office hours.
Follow CLASS LECTURE LINK for lectures.

List server: Please join our Piazza discussion site: HERE.

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 JavaScript, that's great. If you are already familiar with Java, C++ or any similar high level language, you will not have any trouble picking up enough JavaScript to do this course. Since this is an advanced course, I will assume that you are already an experienced programmer. If you are not, then I do not suggest you take this course, as there will be weekly programming assignments, and you would 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

Our "text" for this class will be the on-line course notes. Course notes (so make sure you come to class!!!), will be posted on-line after each lecture.

Syllabus

  splines
Week 1 Tuesday Jan 28 Intro to the semester's topics
Course notes for this class are here.
Thursday Jan 30 A brief history of computer graphics
Course notes for this class are here.

Week 2 Tuesday Feb  4 Intro to GPU shaders and GLSL
Course notes for this class are here.
Thursday Feb  6 Experimenting with fragment shaders
Course notes for this class are here.

Week 3 Tuesday Feb 11 Ray tracing to a sphere, part 1
Course notes for this class are here.
Thursday Feb 13 Ray tracing to a sphere, part 2 + Phong shading
Course notes for this class are here.

Week 4 Tuesday Feb 18 Ray tracing with multiple lights and spheres
Course notes for this class are here.
Thursday Feb 20 Passing in data from the CPU, implementing reflection
Course notes for this class are here.

Week 5 Tuesday,Thursday Feb 25-27 Intro to matrices
Course notes for this class are here.

Week 6 Tuesday,Thursday Mar 3-5 Making a mesh
Course notes for this class are here.

Week 7 Tuesday Mar 10 Guest lecture by Vi Hart
Thursday Mar 12 Starting to build a 3D modeler
Course notes for this class are here.

Mar 16-20 SPRING BREAK

Week 8 Tuesday Mar 24 Perspective and object hierarchies
Course notes for this class are here.
Thursday Mar 26 Cubes, cones and parametric shapes
Course notes for this class are here.

Week 9 Tuesday Mar 31 Computing normals, intro to splines
Course notes for this class are here.
Thursday Apr  2 Hermite and Bezier spline basis matrix
Course notes for this class are here.

Week 10 Tuesday Apr  7 Creating shapes with splines, part 1
Course notes for this class are here.
Thursday Apr  9 Creating shapes with splines, part 2
Course notes for this class are here.

Week 11 Tuesday Apr 14 Bicubic patches and Catmull Rom splines
Course notes for this class are here.
Thursday Apr 16 Mouse events and Catmull Rom paths
Course notes for this class are here.

Week 12 Tuesday Apr 21 Hit testing 3D objects
Course notes for this class are here.
Thursday Apr 23 Starting to build a 3D modeler
Course notes for this class are here.

Week 13 Tuesday Apr 28 Continuing to build a 3D modeler
Course notes for this class are here.
Thursday Apr 30 Texture mapping, final project proposals
Course notes for this class are here.

Week 14 Tuesday May  5 Work on final projects
Course notes for this class are here.
Thursday May  7 Last lecture: Chalktalk
Course notes for this class are here.

Week 15 Tuesday May 12 FINAL PRESENTATIONS 1
Thursday May 14 FINAL PRESENTATIONS 2