Fall 2019 Graduate Computer Graphics course syllabus

Course number: CSCI-GA.2270-001
Where: 60 Fifth Ave, room 110
When: Mondays 7:10pm - 9pm
Instructor: Ken Perlin
Office hours: Monday, 4pm-5pm, 60 Fifth Ave, room 302
Grader: Daniel Zhang ( daniel DOT zhang AT nyu DOT edu )

Semester at a glance:

Sep 9 Intro lecture: Course overview; hw web pages; intro to shaders; noise function
Sep 16 Ray tracing to spheres with phong shading; shadows
Sep 23 Ray tracing half spaces; intersection; cubes/tubes/cylinders; reflection, refraction
Sep 30 Matrices: mat x vec, mat x mat, identity, translate, rotate, scale, invert, hierarchy
Oct 7 Geometry: triangles; cubes; vertex normals; instances
Oct 15 Parametric surfaces and textures: spheres, tori, cylinders, uv coords, mipmaps
Oct 21 Splines: Cubic curves and bicubic patches
Oct 28 Guest lecture: SVA director Terrence Masson; mixer with SVA students; visit FRL
Nov 4 Introduction to Virtual Reality
Nov 11 Using controllers in VR
Nov 18 Surfaces of revolution, ribbon orientation, bump mapping, multi-user VR locking, 2 link IK
Nov 25 Final project week 1 - project theme; form groups of 3 or 4; brainstorm ideas
Dec 2 Final project week 2 - each group presents developed idea and get critiques
Dec 9 Final project week 3 - working session; Other CG topics; future applications
Dec 16 Final project presentations in the Future Reality Lab


Sep 9: Introductory lecture


Course overview:

  • What this course is about
  • Chronological run-through from Sep 9 through Dec 16


Introduction to GLSL fragment shaders

Noise function on the GPU

Homework due Monday Sept 16:


Sep 16: Ray tracing 1


Ray tracing to spheres:

  • Form a ray
  • Intersect a ray with a sphere
  • Find the nearest intersection


Phong shading:

  • Directional light sources
  • Ambient, diffuse and specular components
  • Shadows:
    • Form a shadow ray
    • Hit testing

Onboarding instructions for assignment due Sep 23

Course notes for Sep 16 lecture and homework assignment due Sep 23


Sep 23: Ray tracing 2


Advanced rendering:

  • Reflections
  • Transparency and refraction


Different shapes:

  • Half spaces
  • Boolean intersections
  • Cubes
  • Octahedra
Course notes for Sep 23 lecture and homework assignment due Sep 30


Sep 30: Matrices


4x4 matrices as linear transformations

Matrix multiplication:

  • Matrix x Vector
  • Matrix x Matrix
  • Matrices are associative but not commutative


Matrix primitives:

  • Identity
  • Translate
  • Rotate about X,Y,Z
  • Scale
  • Inverse
  • Save()
  • Restore()
  • Kinematic tree structures
Course notes for Sep 30 lecture and homework assignment due October 7


Oct 7: Geometry on the CPU


Triangle vertices, cubes and a Matrix class:

  • Triangles versus triangle strips
  • Creating cube vertices
  • Building a Matrix class


Surface normals, shape instances and vertex transformations:

  • Adding surface normals to vertices
  • Multiple instances of shapes
  • Transforming vertices in the vertex shader

Course notes for Oct 7 lecture and homework assignment due October 15


Oct 15: Parametric surfaces and texture mapping

Note: this class is on a Tuesday. Classes on Oct 15 meet on a Monday schedule (Monday Oct 14 is Fall Recess at NYU).


Parametric surfaces:

  • Spheres
  • Tori
  • Open tubes and capped cylinders


Texture mapping:

  • Adding uv coordinates to vertex info
  • Mipmapping
  • Sampling
Course notes for Oct 15 lecture and homework assignment due October 21


Oct 21: Cubic splines and bicubic spline surfaces


Cubic splines:

  • Hermite
  • Bezier
  • Concatenating splines to form a continuous curve


Bicubic surface patches:

  • Creating a single u,v patch
Course notes for Oct 21 lecture and homework assignment due October 28


Oct 28: Guest lecture, mixer, visit to the Future Reality Lab


Guest lecture by Terrence Masson


Experience cool VR and AR demos at the Future Reality Lab

Because we introduced no new material this week, we will use this week as a general catch-up week, for anyone who has been struggling to finish all the assignments on time.

If you are already all caught up, feel free to use the time to add more to your assignments for extra credit. We will be reviewing all of the assignments again at the end of the semester, so you are welcome at this point to revise any assignments for which you feel you could have done better.


Nov 4: Introduction to Virtual Reality
Here are the course notes and homework.


Nov 11: Adding interactivity to VR


Here are the course notes and homework.


Nov 18: Surfaces of revolution, ribbon orientation, bump mapping, multi-user VR locking, 2 link IK


Here are the course notes.


Nov 25: Final project 1


Various useful topics:

  • More general surface of revolution
  • Positioning a limb shape after performing IK



  • Short lecture about UI design from Aparna Ramakrishnan
  • Thoughts with SVA students
  • Discuss ideas for final projects
  • Form groups of 3 or 4
  • Each group brainstorms ideas
Course notes and final project proposals:
Course notes and final project proposals


Dec 2: Final project 2


First half of groups present their developed idea and receive critiques.


Second half of groups present their developed idea and receive critiques.

Here is the zipfile for the multi-user VR metaroom. Spatial audio and locking are implemented. Comments describing those features are in worlds/week10/week10.js.

Here is documentation to help you run the (now more sophisticated) server for multiple participants.


Dec 9: Final project 3


The seven groups show their in-progress prototypes.


General discussion of the projects, together with the SVA people.


Dec 16: Final project presentations

Final project presentations in the Future Reality Lab

Things you will need to do:

  1. Let people try your presentation on Dec 16 on the 3rd floor of 60 Fifth Ave.

  2. Create a video record of the experience:

    What I need you to do:

    What I need you to send me:

    • A link to a place somewhere on-line where I can view your source videos.
    • A final edited video.

  3. Write up what challenging problems you solved to create the experience:

    • Describe, for each team member, what that team member contributed.

  4. Send me a zip file of your entire runnable project.
I need all materials from you by the evening of Wednesday December 18, so I can get the grades in on time.