Introduction

References:

  1. Andy Johnson's CS 488 Course Notes, Lecture 1
  2. Foley, Van Dam, Feiner, and Hughes, "Computer Graphics - Principles and Practice", Chapter 1

What is Computer Graphics (CG)

The generation of graphical images using a computer, as opposed to "image processing" which manipulates images that are already in the computer. Creating a frame of "Toy Story" or "Jurassic Park" is computer graphics; Comparing an image of a face from an ATM camera against a database of known criminal mugshots is image processing. Note that the line between the two can sometimes be hazy, and a given task may require both sets of skills.

A.J.:

mathematics + computer science + art = computer graphics

rendering of images on a device.

rendering - creating images from models
models - objects constructed from geometric primitives (points, lines, polygons) specified by their vertices

models exist in n-dimensional 'mathematically pure' space

Rendered version typically created on physical 2D media (e.g. a video screen.)
Rendered version can be simple or complex (lighting, shadows, colours, texture)

Rendering a single image can take from a small fraction of a second (say, a frame from 'Unreal') to hours or days (say, a frame from 'Toy Story') depending on the complexity of the scene, the amount of processing power available, and the needs of the user.


Common Uses


Brief History

(including the most visible use of CG, at the movies)


Software

Many application programs available to produce computer graphics, either as 2D images, 3D models, or animated sequences (Corel Draw, Photoshop, AutoCAD, Maya, SoftImage, etc.)

We will deal with the lower level routines which do the work of converting models into a displayable form on the display device.

Several 'common' graphics languages/libaries/APIs (Application Programming Interfaces.)

We will be using OpenGL in this course on the linux machines in the CS Computer Graphics lab to give a common grading platform. OpenGL is availble for all the major platforms, and is accelerated on almost all current graphics cards, but is not necessarily available on all of the machines here in the university. If you want to work on your machine at home you should be able to get OpenGL libraries for it for free. Otherwise there is Mesa. Mesa is virtually identical to OpenGL, is free, and runs on a wider variety of platforms. For more information on Mesa you can check out: http://www.mesa3d.org . The only thing that should need to change to compile your code here is the Makefile.

Mesa, like OpenGL, is usually accessed through function calls from a C or C++ program.