The Key Ideas of Computer Graphics (559 Learning Goals)

by Mike Gleicher on August 18, 2015

A list of the key ideas of Computer Graphics that we want students to understand in CS559.

  1. Work in convenient coordinate systems. Use transformations to get from where you want to be to where you need to be. Hierarchical modeling lets us build things out of pieces.
  2. Use homogeneous coordinates and transformations to make common operations easy. Translation, projections, coordinate system shift all become simple matrix multiplies.
  3. Create viewing transformations with projection. The geometry of imaging (pinhole camera model) leads to linear transformations in homogeneous coordinates.
  4. Implement primitive-based rendering (interactive graphics) with a pipeline. The abstractions map nicely onto hardware, and let you do things like visibility computations easily. Be aware that there are other paradigms for drawing.
  5. The abstractions of interactive rendering provide building blocks to do lots of things – beyond what they are obviously intended for. Many tricks involve putting these building blocks together in interesting ways to achieve interesting effects. The specific tricks change over time, but the paradigm of assembling the basic elements in interesting ways is fundamental.
  6. Organize your computations for the hardware. Use programmable shading and block buffer transfers to make stuff go fast (if you’re using an API that lets you talk to the hardware).
  7. Determine apparent color of objects based on lighting models. Use simple, local lighting models for efficiency, and use other tricks for non-local effects.
  8. Use texture to describe detail (such as color patterns) on objects. Set up texturing with texture coordinates and texture functions, and use proper sampling with image-based textures.
  9. Describe shapes using appropriate methods. Often this is a collection of simple primitives, such as a triangle mesh. However, other representations (such as implicit forms) can be useful.
  10. Represent smooth curves and surfaces using piecewise representations. Common forms of spline curves and surfaces often have polynomial forms and subdivision representations.
  11. Consider the perceptual issues in how people will view the images we create. The psychology and physiology of perception can tell us a lot about how images will be perceived, which impacts how we should create them. In particular color and depth perception have important impact on graphics.
  12. Be aware of (and attempt to mitigate) the effects of discrete representations. Sampling comes up everywhere in graphics: understanding aliasing as a fundamental issue and what we can and can’t do about it is critical.
  13. Use high-quality rendering techniques if you want to create more sophisticated visual appearances. Different drawing techniques have different pros and cons, and it is valuable to be able to choose amongst them.
Non-Key Ideas
  1. APIs are a means to an end, and always changing. There are several different styles, so its useful to see multiple APIs to get a sense of why things are the way they are.
  2. Rendering hacks are inevitable. Creating desirable appearance is too hard, so you almost always have to cheat to figure out how to best use the available resources to make what you want. While the hacks of the day are constantly changing, learning some of them is a good way to appreciate how the abstractions provided by a rendering implementation or API can be used together.
  3. Interactive systems programming and UI design/implementation might be a more important thing to know than graphics. You need to do some of it to do graphics, so we’ll need to do some of it in class.
  4. The art, design, and communication aspects of knowing picture to make may be more important than the detail of how we get a computer to draw it. But that’s not this class.
Print Friendly, PDF & Email

Previous post:

Next post: