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

Lecture #1 -- Tu 8/31/2004.


  • Who I am; my background; my philosophies ...
  • What is Computer Graphics ?


    The Role 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.

    Also: Read  CH 1.1 of  our textbook "Interactive Computer Graphics" by Eward Angel.

    Evolution of Computer Graphics

    Examples done in previous CS184 courses.
    State of the art today
    Animated pictures, movies

    Course goal: to understand how all this is done.

    Course Coverage, Focus:

    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.

    Three main themes:

    Methods for geometrical modeling:
    Conceptual ways to assemble complicated scenes;
    data structures; mathematical intro to curved surfaces.

    Basic operation and organization of a rendering system:
    From object descriptions in terse but user-oriented language to a picture on the screen.

    Interaction techniques:
    Grab things, make them move, animation of 3D objects, and of articulated objects, such as robots.

    Main Approach and Teaching Style

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

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

    Course Organization

    List of Lab Assignments.
    We will orient ourselves by constructing a complete rendering system
    (actually re-build an existing, well-designed system piece by piece).

    Tentative Outline / Syllabus
    The Lab sequence pretty much determines the sequence of topics covered in lecture.

    Attending the lectures is crucial. -- Please come on time.
    Put in some safety margins -- if you are early you will be entertained with some video clips ...

    Lecture covers key concepts.
    Think along in real time ! Ask questions to stay synchronized.
    Don't delay trying to understand and cram until till exam-time.
    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.

    "Interactive Computer Graphics: A Top-Down Approach with OpenGL" (3rd Edition) by Edward Angel.
    accompanied by: "OpenGL: A Primer" by Edward Angel.
    We cover about 1/2 of the book in a non-monotonic manner.

    Discussion Sessions:
    Repeat some points of class material at a more detailed technical level, so you can implement these algorithms;
    discuss data structures, provide organizational hints.
    Excellent TA's: Pushkar Joshi and Egon Pasztor with very solid experience in graphics..
    We assume you know how to program in C++; -- TA's are not supposed to debug your code!
    We will answer questions at the algorithmic level.  Use graphical debugging (piece by piece)!

    Lab Work:
    Significant amount of programming in C, C++, in the context of a large set of C++ libraries.
    Graphics API is OpenGL.
    "OpenGL Programming Guide." Recommended for your lab work. -- some of that info 8is also on line.
    First two programming assignment to be done on your own.
    Later do lab work in pairs -- changing partners each week for about 3-4 weeks.
    Finally settle on one partner for rest of course and for theFinal Project.
    Cooperation versus cheating:  Share ideas, but not code!

    For feedback to us (and forcing function to you) : quizzes and exams: Week 4, 8, 11, 16.
    Fairly absolute grading (enough experience from previous courses) --> no competition.

    Should you take this course ?

    Do you have the prerequisites ? ==> see  SELF-TEST FORM
    Do the self-test at home, alone!  (OK to look in a book). Find out whether you are 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 ! )
    In 2nd week you will obtain a modeling/rendering framework SLIDE (X000 lines of C++).
    You need to understand the basic structure of it, so you can integrate your own work into it.
    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 already existing.
    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.

    Who is in this course ?

    I don't controll admission. For fairness this is handled by staff according to
    the Computer Science Enrollment Policyposted on the web.
    Currently 94 enrolled thru telebears, 22 on waiting list, some "gate crashers" in the audience.
    Not everybody present may have required status or has taken prerequisite courses.
    Everybody not yet admitted need to get on 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.

    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 (and a possibly the appeals form) in the discussion sessions on Monday
    for a class account and for access to our labs 330 Soda and 349 Soda.
    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.

    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 devive.
    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.
    Here are examples of polygons created by previous classes,
    when the theme was make a "Fantasy Fish".

    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.
    There are 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 one is the Color frame buffer
      -- typically controlling some of these devices:

  • 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: control reflectance or transmittance
    - - active: put a light source behind it.
  • Electroluminescent displays
  • Electrofluorescent displays
  • Electrochromatic displays
  • 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.
           (but a good API will shield you from the details how this is done!).

    Reading Assignments

    Study: ( i.e., try to understand fully, so that you can answer questions on an exam):
    2nd Ed: Ch 1.1-1.3, Ch 2.3.1, Ch 3.9.2,
    3rd Ed: Ch 1.1-1.3, Ch 2.4.1, Ch 3.9.2,

    Skim: ( i.e., get an idea of the concept and the technical terms introduced, so that you get feel for the overall scope):
    2nd Ed: Ch 1.4-1.9, Ch 3.2.3-3.2.4,
    3rd Ed: Ch 1.4-1.9, Ch 3.2.3-3.2.4,

    New Homework Assignments (1 and 2):

    Will be formally assigned and discussed in the discussion sessions.

    Both must be done individually.
    Assignmnt #1 is due in one week; assignment #2 in two weeks.
    Deadlines are typically on Monday evening 7:59pm -- electronic submission!

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