6.837 Introduction to Computer Graphics
Associate Professor, Department of Electrical Engineering and Computer Science
Principal Investigator, Computer Science and Artificial Intelligence Lab (CSAIL)
Solomon: “Computer graphics is all about simulating the real world on a piece of silicon.”
From the catalog
Introduction to computer graphics algorithms, software, and hardware. Topics include ray tracing, the graphics pipeline, transformations, texture mapping, shadows, sampling, global illumination, splines, animation, and color.
A vast invisible world of algorithms powers the artful computer-generated images we see on screens from televisions to smartphones. 6.387 Introduction to Computer Graphics walks students through behind-the-scenes aspects of digitally created visual content.
Solomon: “We follow the path of visual content as it moves through your computer, all the way from describing a set of shapes to the actual pixels on your computer screen.”
“Computer graphics is a densely mathematical and technical discipline,” says associate professor Justin Solomon, who heads CSAIL’s Geometric Data Processing Group. “We really don’t cover the artistic graphic design aspects in this course. It’s more on the mechanics of how a computer generates visual content.”
Helen Ho ’19, SM ’20, who took the class as an undergraduate and later served as a teaching assistant: “It was really exciting for me to build on all the concepts that I’d learned in the more fundamental computer science classes and visually see the things that I could create.”
The class follows the computer graphics pipeline, breaking it into focused topics:
TOPIC 1: Whether the end product will be a forest of animated trees or a graphical depiction of complex data, the first step in any computer graphics project is to determine exactly what should be shown on the screen. Students learn how computers represent such things as curves, surfaces, and deformations, as well as how to capture the position and lens of a virtual camera (transformations).
TOPIC 2: The next step is to capture how stationary graphics can change over time—in other words, to animate. Lectures include both computer algorithms and the tried-and-true animation techniques used for the Walt Disney Classics of the early 20th century.
TOPIC 3: Students study two different rendering techniques, the computer processes used to transform data into visual content: ray tracing (high quality but long processing time) and rasterization (real-time rendering used to avoid lag time in interactive graphics such as video games).
Ray tracing algorithmically simulates the path of light rays as they encounter objects; it gives visual realism to computer-animated films.
With rasterization, visual content can be generated and displayed at speeds of at least 29.97 frames per second, the speed at which computer screens update visual content to outpace the human visual system.
TOPIC 4: At the end of the semester, the class addresses the different types of hardware used in each of the rendering techniques. Students discuss how advancements in graphics processing hardware, for example, have enabled the speedy processing necessary for artificial intelligence and machine learning.
“This is a discipline where the technology is changing every day in really fundamental ways,” says Solomon. “Everything has become so much more sophisticated. The visual content is absolutely stunning in modern games, movies, and design software. That’s really a byproduct of research in this discipline, advances in the hardware, and efficient computing.”
The assignments track the lectures, leading students through the graphics pipeline.
TOPIC 1: Students create stationary 3-D drawings of visual elements such as curves, textures, and various surfaces.
Christopher “Jack” Blazes ’22: “We went through each of the major steps of creating an image on the screen. I liked that structure a lot.”
TOPIC 2: Students control an articulated 3-D character and generate a posable human figure using algorithms that determine the angles of joints. They output the character for display on screen.
TOPIC 3: Students create a simple cloth simulator, where a sphere is draped in a material that can respond to user interactions.
TOPIC 4: Two separate assignments tackle rendering. First, students use ray tracing to generate high-resolution visual content. Second, they use rasterization to create an interactive 3-D scene with shadows that shift and scenery that changes as characters move around.
The final assignment is an open-ended project that lets the students explore their creativity while implementing the technical skills they’ve learned throughout the semester. Formatted as a competition, the project gives the winner a chance to attend the annual SIGGRAPH conference on computer graphics and interactive techniques held by the Association for Computing Machinery.
Blazes: “Mine was about procedurally generating trees and making them look realistic with some amount of randomness.”
Ho: “Our project extended on techniques we learned in class. We wanted to make a more flexible outer skin that still moved with the underlying skeleton but was less rigid than what we’d created for our assignment. We animated a running man, for example, and could see his stomach jiggle and things like that.”
What computer graphics is (and isn’t)
Solomon is careful at the beginning of the class to clarify that while computer graphics is an inherently creative discipline, 6.387 is not an animation or graphic design class. Rather, it dives into the heavy mathematical and technical techniques that lie behind the art.
“We see all this content in movies, all these great computer graphics effects,” says Ho. “But I think prior to coming into this class, a lot of students, including me, don’t know what goes into creating these effects. There is actually a significant amount of math, algorithms, and data structures that contribute to the final visual artistry.” The skills learned in class can be used outside of animated movies, of course.
Career opportunities include video game design, computer-aided design, and additive manufacturing. Students can also apply what they’ve learned to write fast, heavily processor-dependent software, such as that used for genomics research and climate modeling.
“We’re surrounded by computer screens all the time,” says Solomon. “And sure, those screens are interfaces to really complicated computational machinery, but they’re also pieces of technology for generating visual content. This area has exploded in terms of its importance and the impressively cool things that people are doing.”
This article originally appeared in the Fall 2020 issue of MIT Spectrum magazine.