Tuesday, 1 October 2013

Introduction to Computer Graphics

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
    • n typically 2 or 3
    • n can be > 3 with scientific data
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

  • Movies, such as Toy Story, Who Framed Roger Rabbit, The Hollow Man, Shrek, Monsters Inc, Jurassic Park, & The Perfect Storm
  • Advertisements
  • Football game annotations.
  • scientific/medical visualization
  • CAD/CAM
  • multimedia
  • computer interfaces (Windows, X, Aqua)
  • virtual reality
  • special effects
  • artistic expression
  • way cool video games

Brief History

(including the most visible use of CG, at the movies)
  • 1960s Vector display devices
    • 1963 Ivan Sutherland's Sketchpad
  • 1970s Raster display devices
    • 1972 Pong
    • 1976 Star Wars ('pilots briefing' CG done here at UIC)
  • 1980s Raytracing, Realism, Multimedia
    • 1982 Tron, Star Trek II
    • 1985 Last Starfighter
    • 1989 Abyss, The
  • 1990s Virtual reality, Interactivity, 'Cheaper' graphics horsepower
    • 1991 Terminator 2
    • 1993 Jurassic Park
    • 1995 Toy Story
    • 1996 Titanic
    • 1999 Star Wars - the Phantom Menace
    • plethora of commercials & TV series using CG
  • 2000s CG all over the place
    • 2001 Final Fantasy
    • 2002 Lord of the Rings: Two Towers

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.)
  • GKS
  • DirectX
  • X
  • Postscript
  • OpenGL
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.