CS 184: COMPUTER GRAPHICS

QUESTIONS OF THE DAY:

ivan_1963 ivan_2006
Who is considered to be the
"Father of interactive computer graphics" ?

Where might you bump into that person these days ?

What is the difference between a
calligraphic vector-graphics display
and a raster graphics display ?
-- Examples ?



CS 184 HOME < - - - - > CURRENT < - - - - > NEXT

Lecture #1 -- Wed 1/21/2009.

What is Computer Graphics ?

WHY DO YOU WANT TO TAKE A COURSE IN COMPUTER GRAPHICS ?

Three main themes:

MODELING:
Data structures to represent polygons, polyhedra, spheres, curved surfaces.
Structures ways to assemble complicated scenes in a hierarchical manner.
Time-varying structures, animation, (simulation).
(Modeling of complex shapes in CS284, CS285).

RENDERING:
Basic operation and organization of a rendering system:
classical graphics pipeline; focus on reay-tracing.
From object descriptions in terse but user-oriented language to a picture on the screen.
(Visualization of comples {high-dimensional} data sets).

INTERACTION:
Interactive drawing and editing of shapes -- in 2D.
Controlling the transformations of articulated objects, such as robots.
(General user interface issues -> CS160).

==> Your first two Programming Assignments, A1 and A2, will already contain all three elements.

The Roles of Computer Graphics:

Increase bandwidth between humans and computer.
Present:  information rather than data,  functions rather than numbers,
shapes rather than equations,  ==> more relevant form of information!
Help to visualize things: new buildings, car bodies, ...
Help to model things: air flow around wing, stresses in a molded part.
It is all in the applications:
Games: Halo2,
Movies: Nemo, Starwars,
Simulations: Flight-sim; Fluid-sim.,
Training: Combat-sim.,
Design: Snow sculpture.

Course Goal: Understand how all this is done.

Learn effective ways of composing complex scenes.
Insight into inner workings of graphics pipeline.
What does the next generation of graphics chips require?

What are the key programming concepts that lead to robust graphics behavior?

This course is NOT a vocational training course on how to use graphics software, such as Maya, Photoshop, OpenGL.
You are encouraged to learn this on the side, but this is not the focus of the course.

Gain Understanding !  -- not just acquiring skills to use graphics programs.

"Learning by doing !" --> we will BUILD (program) things.
 

Course Organization

A critique in the past has been that the programming assignments and the lectures were too de-coupled. So this year we will try to do much better in this respect.
With my TAs I have first defined a sequence of programming assignments that covers several diverse and fundamentally important concepts; then we have tried to structure the lectures and discussion sessions around this frame work in an organic manner. At the heart lies a sequence of assignements to build the core of a ray-tracing renderer.
However, we will start with some assignments that introduce you to the key concept of interactive drawing, interpolation, morphing, and the construction of a hierarchical dynamic scene in the 2D domain.

Tentative Course Outline / Syllabus

Attending the lectures is crucial!
Several times, I will take attendance through the mechanism of 10-minute mini-quizz, and count that towards the final grade.
Please come on time.  If you are early,
--  your mind will be properly focused with a "Question of the Day"
-- or you might be entertained with some video clips.

Lecture covers key concepts.
I will try to explain why things are the way they are,
--  show you how to think about the problems that you have to solve on the exams,
--  provide some high-level connections between topics covered in different places in the book
--  try to make you understand how the assignments reinforce basic concepts discussed in class.
Think along in real time !
Don't delay trying to understand till exam-time. "The-night-before"-cramming does not help understanding!
ASK QUESTIONS to stay synchronized, and to resolve temporary confusions in your mind.

Textbook:
It is always a problem to find a reasonable textbook for this course that supports the hands-on approach that we follow with our sequence of assignments.
We have selected a book that we have used several time in the recent past so that you may obtain used copies:
"Fundamentals of Computer Graphics" (2nd Edition)  by Peter Shirley et. al, A.K. Peters, 2005.
We will touch about 80% of the book chapters in a non-monotonic manner.
In many instances the book will provide more information than we have time to talk about in the lecture.
On the other hand, many important general concept are simply not covered adequately by any of the popular graphics books.

Other good books that are useful as permanent references for graphics practitioners:

"Comuter Graphics" (2nd ed. in C), by Foley, vanDam, Feiner, Huges. Publisher: Addison Wesley, 1996.

"Interactive Computer Graphics: A Top-Down Approach with OpenGL" (3rd Edition) by Edward Angel. Publisher: Addison-Wesley Publishing.
This is typically bundled with: "OpenGL: A Primer" by Edward Angel. Publisher: Addison-Wesley Pub Co, (2002).

Lecture Notes:
My personal preparation notes are on-line, typically ready an couple of hours before class. They are my plan of what I want to cover.
After the lecture, I will modify these notes to bring them more closely in line with what actually happened in class, possibly adding interesting issues raised by some student.
These on-line notes should not stop from taking your own notes, but it will greatly easy the burden, since you already see what is there;
so you only need to take notes about additional comments I make and about our in-class discussion.
These lecture notes are NOT meant to be a "text book". Since they are heavily cross-linked with various visual props, they cannot just be printed out  serially the night before the exam :-)


Discussion Sessions:
They are another important occasion for you  TO ASK QUESTIONS  -- They are supposed to be interactive!
They also are the "glue" between the lectures and the weekly homework assignments.
They will repeat some points of class material at a more detailed technical level, so you can implement these algorithms; explain data structures, provide organizational hints.

Staffed by two excellent TA's: Jimmy Andrews and Niels Joubert with very solid experience in graphics -- and with CS 184.


Weekly Programming Assignments -- Learning by Doing!
We assume you know how to program large structured programs in either C++, C, or Java.
In the graphics industry, C++ is the implementation language of choice.
Thus the chosen framework for the homework assignments is also C++, making use of a set of C++ libraries.
Since not all students may have had previous experience with C++, we will use the first two assignments to also provide a tutorial introduction to C++.
But throughout the course, writing code is your responsibility. The TA's are not supposed to debug your code! They will answer questions at the algorithmic level. 

Use graphical debugging (module by module)!
Our graphics API is OpenGL; see: "OpenGL Programming Guide."

First few programming assignment are to be done on your own.
Later, we will allow you to work in pairs (perhaps changing partners a couple of times, to find the right match for the Final Project).
 
Cooperation versus cheating:  Share ideas, but not code!


Exams:
For feedback to us (and forcing function to you) :
-- 1 or 2 take-home exams: Week 4, and 8;
-- in-class midterm exam: Week 11;
-- Final exam.
-- a sprinkling of un-announced mini-quizzes in class.
Fairly absolute grading (enough experience from previous courses) --> no direct competition between students.

Should you take this course ?

Do you have the prerequisites ? ==> see  SELF-TEST FORM (A slightly extended version with more questions was a previous homework assignment).
Do the self-test at home, alone!  (OK to look in a book). Find out whether you are ready (or what you need to do to get ready).

This course will demand work and a good deal of C++-programming - but it will be rewarding.
It is not a filler course, but needs a committment. (Don't take it simultaneously with cs152 ! )
During the duration of the course and project, you will write a few hundred lines of code yourself,
but you may look at many more lines obtained from a library or prepared by the TAs.
You also need to learn parts of OpenGL, the graphics language/API.

Ask yourself whether you have the time: 10-15 hrs on top of class and discussion section time.

Who is in this course ?

I am willing to accept anybody who is prepared to do the work!
Currently about 80 students are enrolled thru telebears;
everybody on the waiting list, has been accommodated randomly in one of the discussion sections (but you may switch to a more convenient time slot).

Everybody not yet admitted needs to get on the Telebears waiting list and also fill out an appeals form.
This will take a couple of weeks to settle. But we need to get started full speed, thus:

Please fill out the  BACKGROUND QUESTIONNAIRE (handout).
This is our own system to build a tentative class list until we get the official one.
Trade in the filled-out form at the end of this lecture or in the discussion sessions on Mon/Tue next week for a class account and for access to our computer rooms, if you want to use them.
When we finally get the information on who has been admitted to course, we will remove all other accounts and names from the key card list.

Examples done in previous CS184 courses.
Gallery of the offering of Fall 2004.
Rendering, technical state of the art.


Beginning of Technical Stuff:

Graphics Output/Display Hardware

In the first two asignments you will program an interactive interface to draw lines onto a computer graphics display device, and then modify them interactively.
A simple task -- but raises all kinds of intereting issues !

First we need to understand how the computer remembers a graphics design:
Many options: The first we study is the "boundary representation" or "B-rep".
Geometry is defined by points in 2D or 3D space.
These points can then be connected with edges.
Edges can be grouped into faces, faces into shells (bodies)  ...
But for assignment #1 we stop at a single polygon.

Then we need to display that stored geometrical information.
For now we let some existing software handle that aspect.
But we need to know how these graphics display devices work in principle.
We distinguish two main classes of devices:

Calligraphic Devices:
Its most important representative is the Line-drawing CRT   Others are:

  •  Pen plotter
  • Laserbeam deflector (as in planetarium show)
  • Direct-view storage tube (DVST).

  • ==> to draw a line from A to B, sweep the beam from A to B.

    Raster Devices:
    The most important ones today may be your flat TV screen,
    or a DLP-projector  which has a 2D array of Digital Micromirror Device (DMD)  (more info).

    Other raster devices, which can be active or passive:
    - - active: elements emit light by themselves.
    - - passive: control reflectance or transmittance need a separate light source.

  •  Array of light bulbs (=active)
  • Array of light-emitting diodes (LED) (=active)
  • Array of black/white disks that can flip (=passive)
  • Plasma panel (=active)
  • Liquid crystal display (LCD) (=passive)
  • Many other devices under development:
  •  Electroluminescent displays
  • Electrofluorescent displays
  • Electrochromatic displays
  • A discrete raster of output dots is typically also used in printing devices:
  • Impact dot matrix printer
  • Inkjet printer
  • Laser + electrostatic printer

  • ==> to draw a line from A to B, turn on a select set of matrix elements -- we will talk about that next week.
           But a good API will shield you from the details how this is done!

    You will encounter a "raster display" also in the Color frame buffer in traditional (old, klunky) desk-top computers.
    However,  a CRT is not really a raster device!  But in a typical computer graphics set-up it is operated to behave like one.
    Then, when we draw a slanted line on it, we use that virtual "raster matrix" to emulate a vector drawing display ... WEIRD!


    Reading Assignments:

    Study: ( i.e., try to understand fully, so that you can answer questions on an exam):
    Shirley, 2nd Ed: Ch 1.1-1.5.

    Review: ( i.e., make sure you are familiar with the concepts; brush up on the mechanics as necessary):
    Shirley, 2nd Ed: Ch 2.1-2.4


    The First Homework Assignments (A0):

    Set up your account and home page for this class; test your math skill prerequisites.
    The details of the homework assignments will be provided via the INSTRUCTIONAL PAGES.

    First two Programming Assignments (A1 and A2):

    Will be formally assigned and discussed in the lecture and discussion sessions next week.

    Both must be done individually.
    Assignment #1 is due after one week; assignment #2 another week later.
    Deadlines are typically on Thursday evening 11:00pm -- electronic submission!
    On Friday you should start working on the next assignment!


    CS 184 HOME < - - - - > CURRENT < - - - - > NEXT
    Page Editor: Carlo H. Séquin