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.
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 9/7/2020 | Meet & Mingle / Q&A / First Day Evaluation | Background Knowledge Assessment | |
Tue 9/8/2020 | Individual Assignment 0: Warmup Due | |||
2 | Wed 9/9/2020 | Javascript Practice: Catastrophes with Infinite Loops and COVID 19 | Javascript Resources | Module 1: Javascript Due Before Class |
Thu 9/10/2020 | Individual Assignment 1: Geometric Primitives Out | |||
3 | Fri 9/11/2020 | Begin Vectors: Vector Addition, Dot Products | Math Resources:
| Module 2: Vectors And Dot Products Due Before Class |
4 | Mon 9/14/2020 | Projection, Cross Products, Normals | Module 3: Projections, Cross Product, Normals Due Before Class | |
5 | Wed 9/16/2020 | Barycentric Coordinates, Triangle Interior Point Testing | ||
6 | Fri 9/18/2020 | Lines, Rays, And Planes | Calculus Blue Parameterized Lines in 3D | Module 4: Lines/Rays/Planes Due Before Class
Individual Assignment 1: Geometric Primitives Part 1 Due |
7 | Mon 9/21/2020 | Ray Intersect Plane & Ray Intersect Sphere | Module 5: Ray Intersect Plane/Triangle/Sphere Due Before Class | |
8 | Wed 9/23/2020 | 2D Matrix Transformations, Composition of Transformations, Inverses | ||
9 | Fri 9/25/2020 | Matrix Translations And Homogenous Coordinates, Combined Rotations/Translations | Module 6: 2D Matrices Definition, Composition, And Inverses due before class
Individual 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:
| ||||
10 | Mon 9/28/2020 | 3D Matrix Transformations, Normal Transformations | ||
11 | Wed 9/30/2020 | JSON, Scene Graphs | Module 7: 3D Transformations And Scene Graphs due before class
Individual Assignment 2: Scene Trees Out | |
12 | Fri 10/2/2020 | Scene Trees Practice | ||
13 | Mon 10/5/2020 | Assignment 2 Work Session | ||
14 | Wed 10/7/2020 | Shaders And GLSL: Attributes, Varying, Uniforms, Textures, Basic Image Processing | Module 8: GLSL And Shaders due before class Assignment 3: Shaders Out | |
15 | Fri 10/9/2020 | Shaders And GLSL: Complex Numbers, Fractals, Julia Sets | Module 9: Blobby Shaders, Complex Numbers, And Fractals due before class
Individual Assignment 2: Scene Trees Due | |
16 | Mon 10/12/2020 | Q&A, Assignment 3 Work Session | ||
17 | Wed 10/14/2020 | Local Illumination: Lambertian/Phong Illumination, Gouraud/Per-Fragment Shading | Module 10: Local Illumination via Gouraud Shading due before class | |
18 | Fri 10/16/2020 | 3D Perspectives, Ray Casting, Sphere Normals | Module 11: Ray Casting due before class | |
Sun 10/18/2020 | Assignment 4: Ray Tracer out | |||
19 | Mon 10/19/2020 | Assignment 3 Work Session, Uniforms in Javascript | Assignment 3: Shaders Due | |
20 | Wed 10/21/2020 | Final Project Work Session | ||
21 | Fri 10/23/2020 | Global Illumination: Multiple Lights, Shadows, Ray Instancing | Module 12: Global Illumination Part 1 due before class | |
22 | Mon 10/26/2020 | Work Session | ||
23 | Wed 10/28/2020 | Work Session | Assignment 4: Ray Tracer Check-In Due | |
24 | Fri 10/30/2020 | Global Illumination: Specular Reflections, Refraction/Transmission | ||
25 | Mon 11/2/2020 | Object-first rendering: The Camera Matrix, Perspective/Viewing matrices, Depth Sorting |
| |
26 | Wed 11/4/2020 | Cel Shading / Toon Shading, Hidden Surface Removal/Culling | Module 13: Object-First Projection Matrices due before class | |
27 | Fri 11/6/2020 | Object-First Rendering: Bump Maps, Displacement Maps, Shadow Maps | ||
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:
| ||||
28 | Mon 11/9/2020 | Triangle Mesh Topology: Manifold, Boundary, Euler Characteristic | S/M 12.1.1 - 12.1.3 | |
29 | Wed 11/11/2020 | Mesh Orientation, Mesh Storage Requirements, Basic Mesh Data Structures |
| Assignment 4: Ray Tracer Final Submission Due |
30 | Fri 11/13/2020 | Triangle Fans/Strips, Time Complexity of Queries on Basic Mesh Data Structures |
| Module 14: Topological Properties of Manifold Meshes due before class |
31 | Mon 11/16/2020 | The Half Edge Data Structure | ||
32 | Wed 11/18/2020 | Half-Edge Boundaries, Per-Vertex Normals | Assignment 5: Polygon Mesh Processing Out | |
33 | Fri 11/20/2020 | Subdivision Surfaces | ||
34 | Mon 11/23/2020 | Implicit Surfaces/ Marching Cubes | Module 15: Heightmaps, Levelsets, and Marching Squares due before class | |
35 | Wed 11/25/2020 | Thanksgiving Break (No Class: Splines Module Only) | Assignment 5: Polygon Mesh Processing Part 1 due
Final Project Deadline #1 | |
-- | Fri 11/27/2020 | Thanksgiving | Enjoy! | |
36 | Mon 11/30/2020 | Inflation/Smoothing, Surfaces of Revolution, Truncation, Edge Collapse Mesh Simplification | ||
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. We will then end the unit by porting our animations over to a basic virtual reality system that we build on top of ggslac using a Google cardboard, so that we can really get the motions that we develop to pop up out at us visually. Big Concepts And Questions:
| ||||
37 | Wed 12/2/2020 | Animation Overview: The Animation Loop, Collision Detection | ||
38 | Fri 12/4/2020 | Collision Response, Convex Hulls/The Separating Axis Theorem, Begin Euler Angles | ||
39 | Mon 12/7/2020 | Finish Euler Angles, Rodrigues' Rotation Formula, Quaternions/SLERP | ||
40 | Wed 12/9/2020 | Character Animation: Inverse Kinematics, MOCAP, Skinning | Assignment 5: Polygon Mesh Processing Part 2 due | |
41 | Fri 12/11/2020 | Virtual Reality 1 | Final Project Deadline #2 | |
42 | Mon 12/14/2020 | Virtual Reality 2 |