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
Date
Lectures (click for notes)Readings/LinksAssignments/Deliverables

Geometric Primitives

The 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:

  • What is numerical geometry?
  • How does the quadratic formula help is with ray object intersections?
  • What trick can we use to incorporate both linear operations and translations into a single matrix? Why do we want to do this?

1Mon 9/7/2020Meet & Mingle / Q&A / First Day EvaluationBackground Knowledge Assessment
Tue 9/8/2020Individual Assignment 0: Warmup Due
2Wed 9/9/2020Javascript Practice: Catastrophes with Infinite Loops and COVID 19Javascript ResourcesModule 1: Javascript Due Before Class
Thu 9/10/2020Individual Assignment 1: Geometric Primitives Out
3Fri 9/11/2020Begin Vectors: Vector Addition, Dot ProductsMath Resources:Module 2: Vectors And Dot Products Due Before Class
4Mon 9/14/2020Projection, Cross Products, NormalsModule 3: Projections, Cross Product, Normals Due Before Class
5Wed 9/16/2020Barycentric Coordinates, Triangle Interior Point Testing
6Fri 9/18/2020Lines, Rays, And PlanesCalculus Blue Parameterized Lines in 3DModule 4: Lines/Rays/Planes Due Before Class
Individual Assignment 1: Geometric Primitives Part 1 Due
7Mon 9/21/2020Ray Intersect Plane & Ray Intersect SphereModule 5: Ray Intersect Plane/Triangle/Sphere Due Before Class
8Wed 9/23/20202D Matrix Transformations, Composition of Transformations, Inverses
9Fri 9/25/2020Matrix Translations And Homogenous Coordinates, Combined Rotations/TranslationsModule 6: 2D Matrices Definition, Composition, And Inverses due before class
Individual Assignment 1: Geometric Primitives Part 2 Due

3D Rendering

In 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:

  • What are local coordinates, and what are world coordinates?
  • What are we modeling in a "scene" of 3D geometry?
  • What kinds of visual effects emerge as light bounces around?
  • What can be accomplished with ray tracing that's difficult to accomplish with real time rendering pipelines?
  • What kinds of approximations make WebGL rendering fast?
  • What challenges emerge in virtual reality compared to monocular rendering?

10Mon 9/28/20203D Matrix Transformations, Normal Transformations
11Wed 9/30/2020JSON, Scene GraphsModule 7: 3D Transformations And Scene Graphs due before class
Individual Assignment 2: Scene Trees Out
12Fri 10/2/2020Scene Trees Practice
13Mon 10/5/2020Assignment 2 Work Session
14Wed 10/7/2020Shaders And GLSL: Attributes, Varying, Uniforms, Textures, Basic Image ProcessingModule 8: GLSL And Shaders due before class Assignment 3: Shaders Out
15Fri 10/9/2020Shaders And GLSL: Complex Numbers, Fractals, Julia SetsModule 9: Blobby Shaders, Complex Numbers, And Fractals due before class
Individual Assignment 2: Scene Trees Due
16Mon 10/12/2020Q&A, Assignment 3 Work Session
17Wed 10/14/2020Local Illumination: Lambertian/Phong Illumination, Gouraud/Per-Fragment ShadingModule 10: Local Illumination via Gouraud Shading due before class
18Fri 10/16/20203D Perspectives, Ray Casting, Sphere NormalsModule 11: Ray Casting due before class
Sun 10/18/2020Assignment 4: Ray Tracer out
19Mon 10/19/2020Assignment 3 Work Session, Uniforms in JavascriptAssignment 3: Shaders Due
20Wed 10/21/2020Final Project Work Session
21Fri 10/23/2020Global Illumination: Multiple Lights, Shadows, Ray InstancingModule 12: Global Illumination Part 1 due before class
22Mon 10/26/2020Work Session
23Wed 10/28/2020Work SessionAssignment 4: Ray Tracer Check-In Due
24Fri 10/30/2020Global Illumination: Specular Reflections, Refraction/Transmission
25Mon 11/2/2020Object-first rendering: The Camera Matrix, Perspective/Viewing matrices, Depth Sorting
26Wed 11/4/2020Cel Shading / Toon Shading, Hidden Surface Removal/CullingModule 13: Object-First Projection Matrices due before class
27Fri 11/6/2020Object-First Rendering: Bump Maps, Displacement Maps, Shadow Maps

3D Shape Representations

Now 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:

  • What is the difference between a discrete and continuous data structure for surfaces?
  • What are geometric properties of a triangle mesh, and what are topological properties of a triangle mesh?
  • What are the strengths and limitations of different shape representations?
  • How many metaballs does one need to design a human head?

28Mon 11/9/2020Triangle Mesh Topology: Manifold, Boundary, Euler CharacteristicS/M 12.1.1 - 12.1.3
29Wed 11/11/2020Mesh Orientation, Mesh Storage Requirements, Basic Mesh Data StructuresAssignment 4: Ray Tracer Final Submission Due
30Fri 11/13/2020Triangle Fans/Strips, Time Complexity of Queries on Basic Mesh Data StructuresModule 14: Topological Properties of Manifold Meshes due before class
31Mon 11/16/2020The Half Edge Data Structure
32Wed 11/18/2020Half-Edge Boundaries, Per-Vertex NormalsAssignment 5: Polygon Mesh Processing Out
33Fri 11/20/2020Subdivision Surfaces
34Mon 11/23/2020Implicit Surfaces/ Marching CubesModule 15: Heightmaps, Levelsets, and Marching Squares due before class
35Wed 11/25/2020Thanksgiving Break (No Class: Splines Module Only)Assignment 5: Polygon Mesh Processing Part 1 due
Final Project Deadline #1
--Fri 11/27/2020ThanksgivingEnjoy!
36Mon 11/30/2020Inflation/Smoothing, Surfaces of Revolution, Truncation, Edge Collapse Mesh Simplification

3D Animation

In 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:

  • Explain why "inverse kinematics" are named as such
  • How does skinning work, and what are its shortcomings?
  • What is Gimbal Lock, and what animation scenarios does it adversely impact and how?

37Wed 12/2/2020Animation Overview: The Animation Loop, Collision Detection
38Fri 12/4/2020Collision Response, Convex Hulls/The Separating Axis Theorem, Begin Euler Angles
39Mon 12/7/2020Finish Euler Angles, Rodrigues' Rotation Formula, Quaternions/SLERP
40Wed 12/9/2020Character Animation: Inverse Kinematics, MOCAP, SkinningAssignment 5: Polygon Mesh Processing Part 2 due
41Fri 12/11/2020Virtual Reality 1Final Project Deadline #2
42Mon 12/14/2020Virtual Reality 2