Introduction to Computer Graphics

CMPUT 411/511

(Winter 2024)

 

A diagram of a diagram of a structure

General Information

Instructor: Prof. Pierre Boulanger 
Email: pierreb@ualberta.ca
URL: www.cs.ualberta.ca/~pierreb
Office: 411 Athabasca Hall 
Office hours: By appointment using Zoom
Lectures: MWF 9:00 - 9:50 

 

Class starts on Friday, January 8, 2023


All classes will be delivered virtually using Zoom

Register in advance at Register

 

After registering, you will receive a confirmation email about joining the meeting.

All lectures will be recorded and made available in e-class that day

Lab Sections (Labs can be accessed in person or remotely)

 

Course Description


CMPUT 411/511 is an introductory course to computer graphics concentrating on two- and three-dimensional graphics and interactive techniques. It focuses on fundamental concepts and techniques and their relationship to multiple graphic problem domains (rendering, animation, geometry, imaging).

 

Prerequisites

CMPUT 204 or 275, 301; one of CMPUT 340, 418 or equivalent knowledge, and MATH 214.

 

Course Grade for CMPUT 411

The final grade for the course is based on our best assessment of your understanding of the material and your commitment and participation. The problem sets and final exam are combined to give a final grade:

 

ACTIVITIES

Weight

Final Exam

30%

Labs (10 x 5%)

50%

Lab Bonus Points (10 x 1%)

10%

Math Problems (2 x 5%)

10%

 

o   (60%) Programming Assignments. Most of the coursework is centred around ten programming assignments (A1 to A10); each assignment is worth 5% of the overall course grade. You will also have to solve two set math review exercises at the beginning of the semester (M0-M1), worth 10% of your grade. Each student should complete the programming assignments independently; any duplicated work will be considered cheating, independent of who copied whom.

o   (30%) Final Exam. There will be a final worth 30% of the overall course grade. The final exam will cover the cumulative material seen in the course during the term.

 

Course Grade for CMPUT 511

The final grade for the course is based on our best assessment of your understanding of the material and your commitment and participation. The problem sets and a final project are combined to give a final grade:

 

ACTIVITIES

Weight

Project

40%

Labs (10 x 5%)

50%

Math Problems (2 x 5%)

10%

 

o   (60%) Programming Assignments. Most of the coursework is centred around ten programming assignments (A1 to A10); each assignment is worth 5% of the overall course grade. You will also have to solve two set math review exercises at the beginning of the semester (M0-M1), worth 10% of your grade. Each student should complete the programming assignments independently; any duplicated work will be considered cheating, independent of who copied whom.

o   (40%) Final Project. There will be a final project 40% of the overall course grade. The final project will be a video game project with documentation.

 

Lab 1

My First OpenGL Program

Lab 2

Shading Geometry Using Modern OpenGL

Lab 3

Controlling Virtual Camera with the Mouse

Lab 4

Playing with Normal and Texture Mapping

Lab 5

Processing Bunny Pointcloud Using Open3D

Lab 6

Performing Radiometric Rendering on the Bunny

Lab 7

Rendering Bunny with Ray Tracing

Lab 8

Exploding the Bunny Using Geometry Shader

Lab 9

Implementing Skeleton Animation

Lab 10

Visualising CT Data Using pyVista

 

 

 

 

 

 

 


 

Lecture Notes

 

Schedule

Lecture

Topic

Lecture 1

Introduction

Linear Algebra

Overview of graphics, vectors, vector spaces, linear maps, inner product, norm, L2 inner product, span, basis, orthonormal basis, Gram-Schmidt, frequency decomposition, systems of linear equations, matrices

Lecture 2

Vector Calculus

Euclidean inner product, cross product, matrix representations, determinant, triple product formulas, differential operators, directional derivative, gradient, differentiating matrices, differentiating functions, divergence, curl, Laplacian, Hessian, (multivariable) Taylor series

Lecture 3

Coordinate Spaces and Transformations

The basic math of spatial transformations and coordinate spaces

Lecture 4

Perspective Projection and Rasterization

Understanding perspective projection, drawing a line, coverage testing as sampling a 2D signal, performing point-in-triangle tests

Lecture 5

Depth and Transparency

Interpolation using barycentric coordinates, occlusion via the depth buffer, alpha composition, use of premultiplied alpha, the graphics pipeline and modern GPUs

Lecture 6

Texture Mapping and Supersampling

Sampling and challenges of aliasing, supersampling, perspective correct interpolation, and texture mapping using the mipmap

Lecture 7

3D Transformations and Complex Representations

3D rotations, commutativity of rotations, 2D rotation matrix, Euler angles, rotation from axis/angle, complex numbers, quaternions, quaternion rotation

Lecture 8

Intro to Geometry

implicit and explicit representations, geometric data structures, smooth surfaces, manifold condition, manifold polygon mesh, surfaces with boundary, polygon soup, incidence matrices, halfedge data structure, local mesh operations, subdivision modeling

Lecture 9

Geometry Processing

surface reconstruction, upsampling, downsampling, resampling, filtering, compression, shape analysis, remeshing, mesh quality, subdivision, Catmull-Clark scheme, Loop scheme, iterative edge collapse, quadric error metric, minimizing a quadratic form, Delaunay flipping, Laplacian smoothing, isotropic remeshing, signal degradation

Lecture 10

Geometric Queries

distance queries, point-to-triangle, definition of a ray, ray-sphere intersection, ray-triangle intersection, triangle-triangle intersection

Lecture 11

Other Geometric Representations

implicit and explicit geometric representations, CSG, distance fields, level sets, fractals, Bezier curves and patches, NURBS, subdivision

Lecture 12

Spatial Data Structures

acceleration via bounding volume hierarchies and space partitioning structures

Lecture 13

Colour

tristimulus nature of color perception, XYZ primaries, luminance vs. brightness, color spaces

Lecture 14

Radiometry

radiometric quantities and units, photometry, radiometry integrals, how real cameras work

Lecture 15

Rendering

the rendering equation, the importance of indirect illumination, path tracing

Lecture 16

Numerical Integration

quadrature, sampling distributions, basic Monte Carlo integration, ray tracing vs. rasterization, expected value, variance, law of large numbers, importance sampling

Lecture 17

Monte Carlo Rendering

local vs. global illumination, Monte Carlo integration, importance sampling, direct lighting estimate, cosine weighting, path tracing, Russian roulette

Lecture 18

Variance Reduction

Monte Carlo integration, expected value, variance, continuous random variables, variance reduction, bias and consistency, path space formulation of light transport, importance sampling, bidirectional path tracing, Metropolis-Hastings algorithm, multiple importance sampling, sampling patterns, stratified sampling, low-discrepancy sampling, Hammersley and Halton sequences, blue noise, Poisson disk sampling, Lloyd relaxation, alias table, photon mapping, finite element radiosity

Lecture 19

Introduction to Animation

history of (computer) animation, splines, natural splines, cubic Hermite/Bezier, B-splines, interpolation, keyframing, rigging, skeletal animation, inverse kinematics, blend shapes

Lecture 20

Dynamics and Time Integration

Physically-based animation, Newton's 2nd law of motion, generalized coordinates, ordinary differential equations (ODE), Lagrangian mechanics, Euler-Lagrange equations, pendulum/double pendulum, n-body systems, mass-spring systems, particle systems, flocking, crowds, particle-based fluids, granular materials, molecular dynamics, hair simulation, numerical integration, forward/backward/symplectic Euler, stability analysis

Lecture 21

Introduction to Optimization

Continuous vs. discrete optimization, standard form of an optimization problem, local vs. global minima, existence and uniqueness of solutions, convex optimization, descent methods, gradient descent, Newton descent, kinematic chains, inverse kinematics

Lecture 22

Physically Based Animation and PDEs

PDEs in computer graphics, defintion of a PDE, order and linearity, model equations (elliptic/parabolic/hyperbolic), Laplace equation, heat equation, wave equation, numerical solution of PDEs, Lagrangian and Eulerian discretization, the Laplace operator, discrete Laplacian, Jacobi method

Lecture 23

Character Animation

Definition of character control, PD controllers, postural control, balance control, parameters of a walking controller, inverted pendulum model for stepping, quadrupedal gaits, gait charts, parameters of a quadrupedal gait controller, applications of character simulation and control, character animation with sampling, muscle models, and motion capture, character performance

Lecture 24

Final Review

 

 

 

 

Recommended Reference Books

 

There is no required textbook, though a variety of books may provide good supplementary material:

 

o  Steve Marschner and Pete Shirley

o  Fundamentals of Computer Graphics. A K Peters, 2021

 

o  John F. Hughes, Andries van Dam, Morgan McGuire, David F. Sklar, James D. Foley, Steven K. Feiner, and Kurt Akeley

o  Computer Graphics: Principles and Practice

 

o  Matt Pharr and Greg Humphreys

o  Physically Based Rendering: From Theory to Implementation

 

o  The book (PBRT) is for learning about modern ray tracing techniques. It has an online website with complete source code for an advanced physically-based ray tracer. The textbook is online as well.

 

Developer References

 

o  How to Install Python on Windows

o  How to Install Jupiter

o  OpenGL Kronos Group

o  Pygame - PyOpenGL