CS 184: COMPUTER GRAPHICS
QUESTIONS OF THE DAY:
|
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 displaysA 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
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