Introduction to Computer Graphics
CMPUT 411/511
(Winter 2024)
All
classes will be delivered virtually using Zoom
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
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).
CMPUT 204 or 275, 301;
one of CMPUT 340, 418 or equivalent knowledge, and MATH 214.
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.
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 |
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. o How to
Install Python on Windows |