Computer Graphics Course at Georgia Tech

The Computer Graphics course prepares students for activities involving the design, development, and testing of modeling, rendering, and animation solutions to a broad variety of problems found in entertainment, sciences, and engineering. Students learn: (1) how to develop interactive programs that use effectively the graphics functionalities available in contemporary personal computers, (2) the fundamental principles and technologies upon which these functionalities, and possibly their future evolutions, are based, and (3) the skills for designing and implementing practical graphic solutions to challenging problems in different application domains.

The course is organized as a series of short modules of about one week each. These are listed below, along with the learning objectives, course slides, reading and support material, videos, and interactive demo applets provided to the students, projects, and samples of exam questions. The knowledge acquired in each module will be tested through short quizzes, through projects, and through exams. Projects typically involve: additional reading; finding, developing and checking mathematical and algorithmic solutions; software design, implementation, and testing; writing a report; and posting online a project web page with an interactive applet, the source code, and the report. Some projects will be individual, others will encourage collaboration in small teams of 2 or 3.

What students must remember, the projects, additional reading assignments, and the grading pplicy are different for graduate and undergraduate versions of this course. They are detailed in separate course pages: CS3451 and CS6491.

01 - Graphic Systems
Learning objectives: Students learn the overall structure of an interactive graphics program (initialization, frame updates, rendering of geometric primitives, the use of transformation stacks, the tracking and processing of user actions, text and texture rendering, use of files...). These concepts are demonstrated and exercised using the popular Processing environment.
Rationale: Processing may be downloaded for free. It takes advantage of contemporary graphic adapters on popular platforms and operating systems. It significantly reduces the overhead and learning curve for developing 3D graphics programs. A number of processing textbooks, tutorials, and demo applets are available. Processing is similar to Java and easy to learn. Throughout the course, students are given various applets and tools in Processing, from which they build the solutions to their programming assignments.
Slides: processing, user interaction,
Required reading: Jarek's intro to Processing, online Processing tutorial
Additional reading: ABCSG-vanEmmerik, OCTOR-Jang,
Links: Download Processing, Example applets
Demos: Jarek's Intro examples, mouse Input, pyramid, Ball, Drive, wobble text around mouse, server and remote collaboration client for exchanging user input between two computers (P2P.zip), other demo applets

02 - Geometry
Learning objectives: Students master the use of geometric primitives (points, vectors, distances...) for representing graphic objects (lines, edges, triangles, disks, spheres...) and of geometric operators (dot, cross, and mixed products...) for expressing the various topological test (containment, interference, order...) and for computing derived entities (intersections, medians, normals...). They also learn how to use local frames (change of coordinate systems, transformations, stacks...) to place these objects in a scene and how to move them to support user interaction and animation. Students learn how to go from problem statement, to geometric construction, to implementation.
Rationale: Most data structures and algorithms designed for computer graphics deal with geometric entities that represent the shapes in a scene, their positions and animations, or that model the trajectories followed by photons that reflect off their surface. Although most students have been exposed to geometry and linear algebra in prior courses, they need to develop the intuition and solid habits for using these specific tools when inventing algorithmic solutions to computer graphics problems. Principles and techniques learned in this module will be exercised throughout most other modules, hence reinforcing their retention.
Slides: 2D geometry, 3D geometry, practice (Q6-Q11),
Required reading: 2D geometry (students must know the content of the 20+ pages!!!), 3D geometry
Additional reading: Constraints-Rossignac, ScrewMotions-Rossignac,
Links: ,
Demos: Recursion, fast rotation, mobile, caplet, barycentric, centers, Edge intersection (general position), Edge intersection (with on/on cases),

03 - Topology
Learning objectives: Students must understand the intuition behind several simple set-theoretic topological concepts (interior, boundary, complement...), properties (connected, contained, interfering, touching, manifold, genus...) and operations (Booleans, closure, regularization...) used by practitioners when discussing the various geometric entities in graphics, their digital representations, and the algorithms that operate on them. They must know when and how a surface may be used to represent and process a solid or how to mathematically define the boundary of a Boolean combination of solids.
Rationale: Students must acquire a vocabulary and skills which allow them to describe precisely what an operation or algorithm does, what is a valid input, and what is the range of outputs that it may produce. Through the rest of this class and throughout their career, this aptitude will enable them to understand and clearly phrase the limits of a solution that they are designing or planning to use.
Slides: topology, booleans, trimming, practice (Q1-Q5),
Required reading: topology. Additionally, for graduate students: Healing-Murali.
Additional reading: SGC-Rossignac, SGCcourse-Rossignac,
Links:,
Demos:

04 - Arrangements
Learning objectives: Students learn how to compute the convex hull of a polygonal region, how to count cells in an arrangement of lines or planes and how to use hierarchical data structures (Binary Space Partition, Constructive Solid Geometry...) to represent compactly an arbitrary collection of such cells. They also learn efficient recursive algorithms for testing point-inclusion on these structures and for accessing shapes in back-to-front order.
Rationale: Hierarchical data structures provide an effective implicit representation for the various objects in a scene. Advances in graphics hardware make it possible to render these objects directly from these implicit representations, thus eliminating difficult and computationally expensive boundary evaluation.
Slides: delaunay, CSG,
Required reading: Booleans-Margalit and SPM-Rossignac Sections 1, 2, and 3 only. Additionally, for Graduate Students: ExactCSG-Banerjee and SPM-Rossignac Section 6.
Additional reading: Robustness-Fortune, Delaunay-Atali, VoronoiGPU-Denny, CNRG-Rossignac, OBF-Rossignac.
Links: ,
Demos: Delaunay, edge graph, CSG, intertia. Additional demos which may be usefule for graduate projects: Voronoi & visibility, OBF,

05 - Curves
Learning objectives: Students learn the mathematical foundations and algorithmic techniques for processing polygonal curves (point-inclusion, area calculation, smoothing, subdivision). They also learn how to use such polygons, or the smooth curves (Bezier, B-splines...) they control, for designing trajectories, surfaces, and animations.
Rationale: Smooth curves are a fundamental building block for graphic and animation. Instead of studying their analytic formulations and properties (which would absorb a significant fraction of this course), the course introduces a convenient variety of curves as the result of refinements and smoothing operations on polygons, which the students can implement trivially.
Slides: Bezier, curves,
Required reading: Bezier, curves (updated August 19, 2009),
Additional reading: Loop-Bischoff, J-Splines-Rossignac,
Links: ,
Demos: retofit Bezier, arcs, Tuck, Subdivide, smoothness, rubber, Ringing, Ringing4, smooth fitting, warp,

06 - Animation
Learning objectives: Students learn how to program techniques allowing a designer to create and adjust smooth motions of objects in a scene. They also learn how to predict collisions between simple moving objects (points, lines, balls...) and how to simulate elastic shocks between them.
Rationale: A separate entire course is devoted to computer animation. In this module, the student learn how to implement and use two of the three most popular animation technique: motions and collisions. This expertise enables them to develop a variety of simple animation and simulation applications and prepares them to understand more advanced material. Furthermore, the solutions develop in this module exercise the geometry and curve processing techniques learned in the previous modules.
Slides: motion, collision, morph,
Required reading: Survey-Hodgins. Additionally, for graduate students: ScrewBender-Powell.
Additional reading: Collision-Baraff, Collision-Course, Motion-Popovic, Deformation-Nealen, Integration-Kharevych, Quaternions-Shoemake, FlowFixer-Kim, Studsents' reports on ball-collision: FF, BJ, DKP, WJ, WB
Links: ,
Demos: Spiral Interpolation, ball, pendulum, dynamic drag, bezier, 3D rider, speed control, interpolations, twistbender, screw, bad collision, collisions, snake,

07 - Morphology
Learning objectives: Students learn how to compute point-shape distance and how to use it to formulate various shape operators (grow, shrink, round) and shape discrepancy measures (Hausdorff error, tangent ball error...). They also develop an understanding of the Medial Axis Transform and its applications for shape analysis (minimum feature size, regularity), processing (tightening), and animation (skeleton bending). Students also explore morphing techniques (parametric, Minkowski).
Rationale: This module teaches students how to think of shapes independently of any particular representation. It also provides them with powerful morphological concepts which they will be able to use when deriving solutions to challenging problems in modeling, simulation, and robotics or inventing/understanding new design or animation techniques.
Slides: morphology,
Required reading: Agrels-Kaul, RelativeRounding-Whited,
Additional reading: PIPs-Rossignac, BallMorph-Whited, Portals-Haumont, Teddy-Irarashi, Mason-Williams, Tightening-Williams,
Links: ,
Demos: bulge, Mink morph, 4 morphs,

08 - Triangulation
Learning objectives: Students learn a compact representation (Corner Table) for triangle meshes and operators for traversing the mesh. They learn how to build such a mesh as the Delaunay triangulation of a cloud of points and as a constrained triangulation of a polygonal region. They also learn how to use such a representation to compute the Voronoi region of each point.
Rationale: Delaunay triangulations and Voronoi diagrams are important tools for data acquisition and simulation. Efficient techniques for computing them are discussed in Computational Geometry texts and will not be studied here. This module is mainly focused on the intuition behind these concepts, on simple algorithms for computing them, and on practical applications.
Slides: meshes,
Required reading: meshes, mesh summary
Additional reading: MatchMaker-Cardoze, Triangulation-Ronfard,
Links: ,
Demos: edit Corner Table, mesh viewer,

09 - Mesh processing
Learning objectives: Students learn how to analyze the mesh to compute its topological (number of shells, genus...) and geometric (surface, volume) properties. They also learn how to process a triangle mesh (smoothing, subdivision).
Rationale: Mesh processing is a fundamental area of computer graphics with several dedicated conferences and hundreds of papers published on the topic each year. Computing properties of a mesh is important in many applications (shape matching, design optimization, dynamic simulation...). Mesh smoothing and subdivision is commonly used in entertainment and medicine to design smooth shapes and to remove acquisition artifacts.
Slides: mesh processing, bending, subdivision,
Required reading: SPM-Rossignac Sections 4 and 5 and Silhouette-DeCarlo. Additionally, for graduate students: Adaptive-Seeger and SharpenBend-Attene.
Additional reading: Bender-Llamas, Plushie-Mori, Fairing-Taubin, Butterfly-Dyn, Sudivision-Zorin, Discrete-Desbrun, Teach-Bischoff, EdgeSharpener-Attene, GeoFilter-Kim, Plumber-Mortara,
Links: ,
Demos: Terrain, Mesh, hole filling,

10 - Light, perception
Learning objectives: Students learn how surface and material properties affect the trajectories of photons at different wave lengths, how humans perceive shapes and colors, and how optical illusions operate. In particular, students will learn the laws of reflection and refraction (Fermat's principle) and basic principles of geometric optics. Furthermore, graphics hardware and algorithms are based upon several observations (color is constant along an unobstructed ray, the reflection of a Lambertian surface is independent of the viewer position...). Students will understand the justifications and limitations of these observations.
Rationale: Computer Graphics attempts to simulate the physics of light propagation through the scene. Hence, it is important to understand the physics of light and color. Furthermore, the main purpose of the images produced in Computer Graphics is to convey information or an impression to the viewer. Therefore, Computer Graphics students must understand the characteristics of the human visual system in order to avoid wasting hardware and computational resources on things that the human will not notice or to avoid creating rendering artifacts that could mislead the viewer.
Slides: light, perception,
Required reading: Affect-Duke,
Additional reading: Illusion-Weiss,
Links: ,
Demos: illusion of motion,

11 - Photorealism and NPR
Learning objectives: Photorealistic images of complex scenes may be created by tracing the trajectories (rays) of a large number of photons that hit the viewpoint. Students will understand the basic architecture for such a ray tracer and develop an appreciation for its limitations and the associated computational bottlenecks. In many domains, including entertainment, non-photorealistic renderiong (NPR) techniques are prefered to photorealistic ones, because they provide additional information or artistic flavor. A variety of these techniques will be reviewed. Silhouete-based techniques will be studied in details.
Rationale: Algorithmic advances, a deeper understanding of the underlying physics, and hardware parallelism promise to soon bring realtime photorealistic rendering to the desktop. These topics are studied in more details in a separate course. The overview provided here will help the students compare the ray-tracing architecture to the commodity graphics pipeline studied in the next module. NPR techniques are common in most applications and students need to apprecite their diversity and to understand some of the underlying technologies.
Slides: photorealism, NPR,
Required reading: NPR-Gooch,
Additional reading: Silhouettes-Kalnins, Drawing-Sousa, Paint-Meier,
Links: ,
Demos: ,

12 - Graphics pipeline
Learning objectives: Students learn the hardware architecture of a contemporary graphics pipeline, the function of each stage (transformation, lighting, clipping, rasterization, hidden-surface removal...), and the underlying mathematics and algorithms. In particular, students explore the mathematical properties of the perspective transformation used in the pipeline and its advantages over the ray-tracing solution studied in the previous module.
Rationale: In order to take advantage of emerging graphics accelerators and help develop future ones, students must understand the mathematical and algorithmic principles upon which the state of the art technology is based.
Slides: rasteriation, perspective, openGL,
Required reading: CUDA,
Additional reading: PhotoMeter-Muller,
Links: OpenCL,
Demos: rasterization, projection, perspective, naive perspective, 3D pick,

13 - Image-based rendering
Learning objectives: Students learn how to use images, instead of geometric primitives, to increase realism while maintaining realtime performance. In particular, students learn how to use panoramas, imposters, and texture maps to render scene details for which geometry is not available.
Rationale: Image-based rendering (IBR) extensions are now fully supported in commodity graphics adapters and students must understand how they are implemented and how they can be used.
Slides: texture,
Required reading: For graduate students: TiP-Horry,
Additional reading: ViewMorph-Seitz,
Links: ,
Demos: ,

14 - Acceleration techniques
Learning objectives: Students learn to diagnose the causes (vertex bounded, pixel bounded...) of poor graphics performance and to design acceleration techniques (frustum culling, back-face culling, simplification, occlusion culling...) to resolve the problem.
Rationale: In their future jobs, students will often need to accelerate the performance of existing graphic systems. This module will give them a road map and a set of simple tools to do so.
Slides: acceleration,
Required reading: VertexClustering-Rossignac. Additionally for graduate students: Survey-Rossignac,
Additional reading: Points-Botsch, Simplification-Ronfard, Tribox-Crosnier,
Links: ,
Demos: ,

15 - GPU shaders and advanced effects
Learning objectives: A wide range of graphic effects may be achieved on commodity hardware, either by using an existing API (OpenGL...) or by programming the GPU directly (vertex, geometry, and fragment shaders). Some of these effects increase realism (shadows, ambient map...), others improve perception (transparency, hidden silhouettes...). Students learn the functionality and limitations of each shader and explore several examples of such advanced rendering effects.
Rationale: Even though these advanced capabilities and the associated APIs evolve rapidly, students who wish to stay on the leading edge should be exposed to the capabilities and limitations of current systems and to various examples of their use for achieving advanced rendering effects.
Slides: shadows, GPU, effects,
Required reading: Cg-Mark,
Additional reading: Capping-Rossignac, Blister-Hable, CST-Hable, Simulation-Kruger, ShadowVolumes-Brabec, Weathering-Chen, HiddenContours-vanEmmerik,
Links: ,
Demos: ,

Suggested reference textbooks for detailed presentations of topics covered and further reading:
  • Fundamentals of Computer Graphics, Shirley, 2002.
  • Computational Geometry: Algorithms and Applications, de Berg, van Kerveld, Overmars, Schwartzkopf, 1997.
  • Computer Graphics: Principles and Practice: Second Edition in C, Foley, van Dam, Feiner, Hughes, 1996.
  • 3D Computer Graphics, Watt, Addison Wesley, 2000.
    Search this site    or the Web
    Website maintained by Jarek Rossignac