Schedule
Outlined below is the schedule for the course, including lecture topics and assignment due dates. The specific dates of different topics are subject to change based on the pace at which we go through the course.
The assigned textbook for the course covers most of the topics we will go over in the class, but I will sometimes add external links to other resources if I feel the textbook is lacking in a particular area, particularly for WebGL/GLSL topics. At times, I will even write my own little web pages to describe a concept (e.g. for scene graphs).
Lecture | Lectures (click for notes) | Readings/Links | Assignments/Deliverables | |
Geometric PrimitivesThe course will start with an overview of some important mathematical concepts from linear algebra and vector geometry to get everyone on the same page. These are the basic building blocks that will be used again and again in the rest of the course. The pace at which we go through this section will adapt to the background knowledge of the students. We will have two small individual programming assignments in this section to get everyone used to programming with geometry in Javascript. Big Concepts And Questions:
| ||||
1 | Mon 8/26/2019 | Course Sneak Preview, Beginning Vectors | S/M Chapter 1 | Submit Personal Survey on Microsoft Teams |
2 | Wed 8/28/2019 | Vectors, Dot Products, Javascript Crash Course | Math Resources:
| Mini Assignment 1: Geometric Primitives Out |
3 | Mon 9/2/2019 | Projection, Normals, Lines, And Planes | Calculus Blue Parameterized Lines in 3D | |
4 | Wed 9/4/2019 | Ray/Sphere Intersections | S/M 4.4.1 | Mini Assignment 1: Geometric Primitives Part 1 Due |
Fri 9/6/2019 | Last day to add courses | |||
5 | Mon 9/9/2019 | Barycentric Coordinates, Triangle Interior Point Testing, Begin 2D Matrix Transformations |
| |
6 | Wed 9/11/2019 | Homogenous Coordinates, Composition of Transformations, Inverses | ||
Fri 9/13/2019 | Mini Assignment 1: Geometric Primitives Part 2 due | |||
3D RenderingIn this part of the course, we discuss how to use a computer to generate images of 3D geometric scenes, a process known as "3D rendering." The ultimate goal of such techniques is to make photorealistic images that look like what a camera might take in the real world, though, as we will see, this is quite challenging. In the process of attempting to meet this goal, we will think about how light bounces around in the real world and how humans see that light, and we will discuss algorithms that attempt to mimic this. To this end, students will start off implementing a ray tracer, which is a non-realtime rendering technique, but which allows for visually stunning effects with reflection, refraction, and shadows. We will then talk about the more traditional rendering pipeline, which leads to visually inferior but interactive images. Students will learn the basics of the WebGL / GLSL Javascript API, which implements this rendering pipeline. Big Concepts And Questions:
| ||||
7 | Mon 9/16/2019 | 3D Matrix Transformations, Normal Transformations, Scene Graphs |
| |
Tue 9/17/2019 | Mini Assignment 2: Scene Graphs Out | |||
8 | Wed 9/18/2019 | Scene Graphs Continued | ||
9 | Mon 9/23/2019 | Shaders And GLSL | ||
Tue 9/24/2019 | Mini Assignment 2: Scene Graphs Due | |||
10 | Wed 9/25/2019 | Fractals, Texture Maps, Lambertian/Phong Illumination, Gouraud/Per-Fragment Shading | Mini Assignment 3: Shaders/GLSL Out | |
11 | Mon 9/30/2019 | GLSL Working Session | ||
12 | Wed 10/2/2019 | 3D Perspectives, Ray Tracing Overview, Ray Instancing | S/M 4.1 - 4.3, 13.2 | Mini Assignment 3: Shaders/GLSL Due |
13 | Mon 10/7/2019 | Continuing Ray Instancing, Global Illumination (Including Multiple Lights/Shadows) | S/M 4.7 | Large Scale Assignment 1: Ray Tracing Out |
14 | Wed 10/9/2019 | Finish Global Illumination (Specular Reflections, Refraction/Transmission), Begin Object-First Viewing | Viewing Matrices Class Exercise | |
-- | Mon 10/14/2019 | Fall Break | Enjoy! | |
15 | Wed 10/16/2019 | Perspective Viewing, Hidden Surface Removal / Depth Sorting, Culling, Begin Cel (Toon) Shading |
| Cel Shading Class Exercise |
Fri 10/18/2019 | Large Scale Assignment 1: Ray Tracing Checkin | |||
16 | Mon 10/21/2019 | Finish Cel Shading Exercise / Bump Maps, Displacement Maps, Shadow Maps | S/M 11.4, 11.5, 11.7 | |
3D Shape RepresentationsNow that we are comfortable rendering basic shapes, we will discuss data structures for representing more complicated custom shapes, which form the backbone of modern CAD and 3D modeling applications. The first of these is the triangle mesh, which is a discrete approximation of a smooth 2D manifold surface consisting of a collection of triangles connected to each other at a common edge. We will then discuss continuous representations, including subdivision surfaces and splines. We will conclude this unit with implicit surfaces, which are volumetric descriptions of surfaces which allow for easy boolean operations and natural design of neat shapes such as water drops. And as we will see, implicit surfaces lead to a very particular, smooth aesthetic via "metaballs" (not "meatballs"!). Big Concepts And Questions:
| ||||
17 | Wed 10/23/2019 | Triangle Mesh Topology: Manifold, Boundary, Euler Characteristic | S/M 12.1.1 - 12.1.3 | Last day to drop courses with a W |
Fri 10/25/2019 | Ray Tracing Hackathon 4PM - 12AM, IDC 114 | |||
18 | Mon 10/28/2019 | Mesh Orientation, Mesh Storage Requirements, Basic Mesh Data Structures |
| |
19 | Wed 10/30/2019 | The Half Edge Data Structure, Per-Vertex Normals, Truncation | Large Scale Assignment 1: Ray Tracing Due | |
Thu 10/31/2019 | Large Scale Assignment 2: Mesh Processing Out | |||
Fri 11/1/2019 | Midterm Cel Shading Art Contest Due | |||
20 | Mon 11/4/2019 | Subdivision Surfaces (Guest lecture by Dr. Nick Scoville) | SIGGRAPH 2000 Subdivision Surface Notes | |
21 | Wed 11/6/2019 | Intermezzo: Video Game Design Q&A (Guest Lecture by Steven Espinosa) | ||
22 | Mon 11/11/2019 | Curves And Splines, Bidirectional Reflectance Distribution Functions (BRDFs) | S/M Chapter 15 (skim) | |
23 | Wed 11/13/2019 | Implicit Surfaces/ Marching Cubes |
| |
3D AnimationIn this section, we will cover some of the basics of 3D animation at a surface level. This is an incredibly broad field, so we will focus primarily on the math underlying a subset of professional animation tools such as Blender and Maya, rather than the tools themselves. Big Concepts And Questions:
| ||||
24 | Mon 11/18/2019 | Animation Overview, The Animation Loop, Begin Collision Detection, Final Project Discussion | S/M 17.1 | Final Project Out / Form Groups |
25 | Wed 11/20/2019 | Collision Response, Convex Hulls/The Separating Axis Theorem, Begin Euler Angles | Large Scale Assignment 2: Mesh Processing Due Mini Assignment 4: Euler Angles And Gimbal Lock Out | |
Sun 11/24/2019 | Mini Assignment 4: Euler Angles And Gimbal Lock Due | |||
26 | Mon 11/25/2019 | Finish Euler Angles, Rodrigues' Rotation Formula, Quaternions/SLERP | ||
Tue 11/26/2019 | Final Project Progress Mini Report Due | |||
-- | Wed 11/27/2019 | Thanksgiving | Enjoy! | |
27 | Mon 12/2/2019 | Character Animation: Inverse Kinematics, MOCAP, Skinning | ||
28 | Wed 12/4/2019 | Course Wrap-Up / Raffle | Raffle Prizes | |
-- | Wed 12/11/2019 | Final Project Prototype/Video Due | ||
-- | Sat 12/14/2019 | Final Project Feedback Due |