1 Overview

This course explores the algorithms, data structures, and techniques used to cause computers to generate visual outputs. It is not a course about 3D modeling, animation or other content-creation topics but rather about the computational aspects of turning that content into images.

The first half of this course will be the basic topics that every computer graphics course should cover: the core algorithms and techniques for creating images from models. The second half will have more flexibility, going into more detail on a topic such as model representation, visual-quality physics simulation, high-dimensional visualization, or advanced topics in real-time or realistic 3D graphics. Details of second-half curriculum will be based in part on student input.

2 Is this the right class?

I want to write code Yes! Lots of that here! Most students will submit code containing more than 2,500 original statements (lines vary by language).
I want to make special effects Yes, we’ll talk about lots of them!
I want to make movies Movies are made mostly by artists, actors, and technicians. We will talk about how to make the software CG artists use…
I want to make games CS 4730 is a better fit. We will talk some about how game engines draw things on the screen.
I want to learn OpenGL, Direct3D, Metal, Vulkan, … We’ll skim some of these, but not a deep dive.
I want to learn Allegro, Banshee, C4, CryEngine, Intrinsic, OGRE, SDL, Serious, Source, Torque, Unity, Unreal, UX3D, Xenko, XNA, … We’ll may discuss how they are built, but not how to use them.
I want to learn Maya, 3DS Max, Blender, Rhino, Wings, A:M, ZBrush, Nendo, XSI, SketchUp, … Not a topic of this class, sorry. Try Arch 5420 or Arch 5422.
I’m not very technical, this sounds artsy The technology of art is quite technical. Sorry.
I’m interested in computer vision Take a special-topics course from Vicente Ordonez-Roman instead.
I didn’t do well in calculus That’s fine; we need the ideas, but not the techniques.
I don’t know what calculus is Easily fixed.
I’m not very good with vectors Vectors are important. We’ll help, but you’ll want to brush up on your own.
I’m intrigued by numerical stability and computational geometry We don’t have proper courses on these topics from the programmer’s perspective, but this class will whet your appetite.