ECSE-4750 Computer Graphics Fall 2008

External links

Further down this page

Homeworks

There will be about a dozen homeworks.

Due Questions Solution
Sep 2 Homework 1 Solution1.pdf
Sep 9 Homework 2 Solution2.pdf
Sep 16 Homework 3 Solution3.pdf
Sep 26 Homework 4 Solution4.pdf
Oct 17 Homework 5

Lectures and labs day-by-day

No Date Summary
1 Tues Aug 26

Topics: Syllabus and Intro.
Reading:

  1. AngelCG01.ppt: What is Computer Graphics?
  2. Angel, chapter 1.

Announcements:

  1. Room change to Lally 104 (Tues and Fri) and J-Rowl (aka Science Center) 2C22 (Wed)
  2. Homework 1 available, due Sep 2.
2 Wed Aug 27

Topics: Chance to ask questions about homework
Announcements: It's ok to render the NCC1701 as polygons, if you wish.

3 Fri Aug 29

Topics: Chapter 1. Notes:

  1. What physical principles are each type of HW based on?
    1. CRT: certain rare earth materials emit photons when hit by electrons. Explaining this is what got Einstein his Nobel (not relativity).
  2. What engineering challenges required solving?
    1. Shadow-mask CRT: electron beams travel varying distances at different angles, but don't hit the wrong phosphor even as the system gets hotter. The precision is 0.1%.
  3. What tech advances enabled this solution?
    1. Raster graphics required cheap memory.

Reading:

  1. AngelCG02.ppt: Image Formation

Announcements: Midterm exam date fixed at Wed Oct 8

4 Tues Sep 2

Topics:

  1. Engineering Grounded In Reality
  2. A little on API philosophy, e.g, Portability And Standards, and submarine patents.
  3. AngelCG03.ppt: Models and Architectures

Reading: Announcements:

  1. Homework 2 available, due Sep 9.
5 Wed Sep 3

Topics:

  1. chance to talk to Jixu about homework
6 Fri Sep 5

Topics:

  1. AngelCG04.ppt: Programming in OpenGL I
  2. simple2.c - simplest OpenGL program. Features:
    1. including required include file
    2. initializing OpenGL
    3. creating a top level window of default size and position
    4. setting window title
    5. defining and registering a display callback
    6. entering the main event loop
    7. clearing the frame (aka color) buffer to a default color (black)
    8. drawing a polygon with the default color (white)
    9. forcing pipeline to flush
    10. compiling and linking
  3. simple3.c - slightly bigger OpenGL program
    1. setting vertex colors and observing polygon color
    2. overlapping polygons
  4. simple4.c - version created in class
  5. my Makefile - YMMV
  6. AngelCG05.ppt: Programming in OpenGL II

Reading:
Announcements: To compile the OpenGL examples in Visual C: If you get a redefinition error for exit, then do not include stdlib.h in your program. It is already included by another include file, and it lacks an inclusion guard.

7 Tues Sep 9

Topics:

  1. AngelCG06.ppt: Programming in OpenGL III
  2. Demo, discuss, and modify shape_test.c. New features:
    1. OpenGL datatypes like GLfloat
    2. Allocate and enable depth (aka Z) buffer
    3. Perspective view
    4. Several utility polyhedra
      1. sphere, cone, cube, torus, dodecahedron, teapot, octahedron, icosahedron
      2. wire or solid
    5. Light source and color
    6. Enabling and disabling lighting
    7. Reshape callback
    8. Push and pop transformation matrix
    9. Rotate, scale, translate transformations
    10. Using viewport to draw into a small region of the window. Anything outside the viewport is clipped.
  3. AngelCG07.ppt: Input and Interaction
  4. Demo, discuss, and modify gasket2.c . Features:
    1. Array of vertices passed to glVertex2fv
    2. Array of triangles
    3. Recursively creating the graphic object
    4. glBegin and glVertex2fv are in different routines. It's the order in which they are executed that matters, not their order in the source file.
    5. Parallel (ortho) projection.
  5. Demo, discuss, and modify gasket3.c . Features:
    1. 3D.
    2. Spec colors in an array.
    3. Reshape callback. It handles rectangular windows, keeping the tetrahedra undistorted, with the same aspect ratio, centered in the window.. Portrait and landscape mode are separate cases.
    4. glPostRedisplay

Reading: Angel, chapter 2, excluding 2.11
Announcements:

  1. In Homework 2, the nonphysical aspect of the graphics pipeline is the idea that objects do not interact with each other, i.e., that object A's brightness/color/etc is not affected by object B. Therefore, OK to hand in homework 2 tomorrow.
  2. Homework 3 available, due Sep 16.
  3. Prof Roysam is looking for graphics students in various roles from undergrad projects on up. See his website and talk to him. Working for him would make a good term project for this course.
8 Wed Sep 10

Topics: Chance to talk to Jixu.
Reading:
Announcements:

9 Fri Sep 12

Topics:

  1. AngelCG07.ppt: Input and interaction
  2. Demo, discuss, and modify paint.c . Features:
    1. keyboard callback
      1. write the key at a position stored in a global and update that
    2. mouse callback
    3. accumulating info, such as triangle vertices, from successive callbacks
    4. converting coords from what is passed to mouse callback (origin is top left corner) to what is used by openGL window (origin is bottom left corner)
    5. picking a region of window by analyzing coords of mouse click.
    6. immediate mode: on redisplay, if it's not explicitly redrawn, it's not there any more.
    7. colors as unsigned bytes.
    8. using globals to pass data to/from callback routines.
    9. menus
      1. create
      2. add entry
      3. add submenu
      4. attach to mouse button
    10. menu callback
      1. arg is the int key associated with that menu entry
    11. pushing and popping attributes
    12. writing text
      1. setting position
      2. writing char
      3. updating position by width of char

Reading:
Announcements:

  1. The Provost has cancelled class on Oct 3.
  2. Good news: Profs Barb Cutler (CS), Tom Zimmie (Civil), and I just won a National Science Foundation Cyber-Enabled Discovery and Innovation award for $670K, Fundamental Terrain Representations and Operations, which, "unifies the fields of computational geometry, computer graphics, and civil engineering hydrology, resulting in a transformational ability to predict how erosion occurs, specifically in levee failure by overtopping, and, after a failure, to reverse-simulate what happened...." Details.
  3. talk today at 3 in JEC 3117 by Shivkumar Kalyanaraman an ECSE prof on leave at Telecom Research Innovation Center (TRIC), IBM India Research Laboratory, Delhi ''Spoken Web: Towards a Telco-hosted Voice-based Web created from Ordinary Cell Phones''. I'll end class a few minutes early so people can attend this.
10 Tues Sep 16

Topics:

  1. passivemotion.c. Changes the image depending on where the mouse is, using a mouse passive motion callback. This shows how to answer Friday's question about causing something to happen when you mouse over a menu at the top of the window
  2. passivemotion2.c. Extends passivemotion to redraw only when something changes. This prevents the image tearing caused by redrawing during the refresh. It's also more efficient.
  3. single_double.c. Shows:
    1. The difference between single and double buffering.
    2. Creating two graphics windows in one program. Note the order:
      1. Set the display mode.
      2. Create the window.
      3. Register the callbacks.
      4. Repeat for each window.
      5. Call MainLoop.
    3. Mouse input.
    4. Changing the idle callback. The new one replaces the previous one.
  4. getinfo.c. Shows how to read information about the OpenGL version and how to get internal state variables. This also shows how to access command line arguments. This shows just a sample; there are more.
  5. showinput.c. Shows how to get input. This also shows the coordinate system used to report mouse events. Units are pixels.
       (0,0) ...... (xmax,0)
       ....
       ....
       ....
       (0,ymax).....(xmax,ymax)  
    
  6. Beyond double buffering: How to avoid tearing caused by swapping the foreground and background buffers in the middle of refreshing the image and the two buffers have different images?
    1. One solution is to wait until the vertical retrace to swap the buffers. However, if each buffer takes about 1/60 second to recompute, sometimes more and other times less, then the refresh rate will fluctuate between 1/60 and 2/60 second.
    2. Another solution is to use 3 buffers. You display from the 1st, have the 2nd ready to swap with the 1st in the next vertical retrace, and meanwhile compute into the 3rd. This uses 50% more memory.
    3. How to fight tearing
    4. OpenGL Extension WGL_I3D_swap_frame_lock
    5. Smooth Gaming with Triple Buffering
  7. AngelCG08.ppt more on callbacks

Reading: Angel, chapter 3.
Announcements:

  1. Homework 4 available, due Sep 23.
11 Wed Sep 17

Topics: chance to talk to Jixu
Reading:
Announcements:

12 Fri Sep 19

Topics:

  1. time.c. Times how quickly a frame with a square can be drawn.
  2. square2.c. Demonstrates glutMotionFunc callback. Change glutMotionFunc to glutPassiveMotionFunc to see what happens.
  3. manywindows.c. Shows that many top level windows (a new one with each left mouse click) can be dynamically created.
  4. paintxor.c modified by paint.c to write triangles into the color buffer in XOR mode. Everything else is still written in COPY mode. XOR mode is useful for cursors and rubberbanding because XORing the same object twice restores the original buffer.
  5. AngelCG09.ppt Better interactive programs
  6. AngelCG10.ppt Geometry

Reading:
Announcements: By popular requests, homeworks will henceforth be due on Fridays.

13 Tues Sep 23

Topics: I will present transformations 3 different ways to help you understand this important topic.

  1. AngelCG11.ppt Representation
  2. AngelCG12.ppt Transformations
  3. My note on homogeneous coordinates and projections demoed by Albrecht Durer
    (The following display better in Firefox than Internet Explorer.)
  4. Homogeneous matrix examples, p' = M p for
    1. Translate by (1,2,3):
      M = \left(\begin{array}{cccc} 1 & 0 & 0 & 1\\ 0 & 1 & 0 & 2\\ 0 & 0 & 1 & 3\\ 0 & 0 & 0 & 1\end{array} \right) . This also works: M = \left(\begin{array}{cccc} 2 & 0 & 0 & 2 \\ 0 & 2 & 0 & 4 \\ 0 & 0 & 2 & 6 \\ 0 & 0 & 0 & 2 \end{array} \right)
    2. Rotate around Z axis by an angle whose cosine is 0.6:
M = \left(\begin{array}{cccc} .6 & -.8 & 0 & 0 \\ .8 & .6 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array} \right)


Reading:
Announcements:

  1. Tomorrow, go to Tiemann's talk.
  2. The final exam has been set for Fri Dec 12 11:30-2:30.
14 Wed Sep 24

Topics: Michael Tiemann, Red Hat, Exonovation--Leveraging Innovation from the Edge, DCC324
Reading:
Announcements:

15 Fri Sep 26

Topics:

  1. My note on 3D rotation
    1. all rigid transformations in 3D that don't move the origin have a line of fixed points, i.e., an axis, that they rotate around.
    2. deriving the vector formula for a rotation given the axis and angle
    3. computing the matrix from a rotation axis and angle
    4. testing whether a matrix is a rotation
    5. if it is, then finding the axis and angle
  2. Bill Jacobs' OpenGL video tutorial - excellent

Reading:
Announcements:

  1. The display list question from homework 4 is postponed until the next homework.
  2. Next Wed, go to the Network-Centric Data Acquisition talk
16 Tues Sep 30

Topics:

  1. My note on homogeneous coordinates and projections demoedby Albrecht Durer in more detail.
  2. My note on 3D rotation in more detail

Reading:
Announcements:

  1. Homework 3 solution online.
  2. Dreamworks is visiting RPI around Nov 4-5, to give a talk and interview students. If interested, contact the CDC.
17 Wed Oct 1

Topics: special talk, Dr. Gavin Pearson, Ministry of Defense in the UK, The Coming Transformation of Network-Centric DataAcquisition: Concept, Technologies, Benefits andChallenges, Lally 102
Reading:
Announcements:

18 Fri Oct 3 Class cancelled on 9/9 by Provost.
19 Tues Oct 7

Topics: Review for midterm exam
Announcements:

  1. What do you think of my replacing my lectures with pointers to distinguished external speakers, such as on open SW?
  2. Do you want to use calculators in tomorrow's exam?
  3. I'm working to set up a behind-the-scenes tour of EMPAC. The video and audio capabilities are incredible.
20 Wed Oct 8

Topics: Midterm exam
Announcements:

  1. Calculators, and any books, papers, and notes are allowed. Computers (above the level of calculators), communication tools, and sharing material with other students are not allowed.
  2. DreamWorks Animation will be coming to campus on Friday, February 29th. They are very interested in interviewing seniors in EMAC, EART and CSCI for a variety of full-time positions (Effects Animators, Effects Developers, Crowd Simulation Animators, Character FX Animators, Technical Directors). The RedHawk JobLink Job ID is 691510 for the full-time position, and #691536 for summer internships (use job ID in Keyword field). Resume submission ends on February 19th. ... DreamWorks's URL is: http://www.dreamworksanimation.com. DreamWorks will be making a presentation that is open to all students on Friday, 02/29 at 4:00 PM in Sage 3303. (More info is available.)
  3. Homework Solution4.pdf online.
21 Fri Oct 10

Topics:

  1. displaylist.c - sample display list program.
  2. AngelCG13.ppt OpenGL transformations
  3. AngelCG14.ppt Model Building
    1. This topic becomes ever more important as your models get bigger.
    2. We start to see the separation of geometry from topology.
  4. AngelCG15.ppt Classical viewing
    This is largely obsolete. However you should recognize the terms. Vanishing lines is useful for drawing perspective objects by hand.
  5. AngelCG16.ppt Computer viewing

Reading:
Announcements:

  1. Homework 5 online.
23 Wed Oct 15

Topics: regular lecture.
Reading:
Announcements:

24 Fri Oct 17

Topics:
Reading:
Announcements:

25 Tues Oct 21

Topics:
Reading:
Announcements:

26 Wed Oct 22

Topics: regular lecture.
Reading:
Announcements:

27 Fri Oct 24

Topics:
Reading:
Announcements: Term project proposal due, containing:

  1. title,
  2. team members (name, email, RIN),
  3. 100 word summary.

Email to TA Jixu Chen, chenjFOUR ATrpiDOTedu

28 Tues Oct 28

Topics:
Reading:
Announcements:

29 Wed Oct 29

Topics: regular lecture.
Reading:
Announcements:

Fri Oct 31

Topics: No class; prof running Fall Workshop in Computational Geometry at RPI

Tues Nov 4

Topics:
Reading:
Announcements:

Wed Nov 5

Topics: chance to talk to Jixu
Reading:
Announcements:

Fri Nov 7

Topics:
Reading:
Announcements: progress report due; email to TA Jixu Chen, chenjFOUR ATrpiDOTedu.

Tues Nov 11

Topics:
Reading:
Announcements:

Wed Nov 12

Topics: regular lecture.
Reading:
Announcements:

Fri Nov 14

Topics:
Reading:
Announcements:

Tues Nov 18

Topics:
Reading:
Announcements:

Wed Nov 19

Topics: regular lecture.
Reading:
Announcements:

Fri Nov 21

Topics:
Reading:
Announcements: progress report due; email to TA Jixu Chen, chenjFOUR ATrpiDOTedu.

Tues Nov 25

Topics:
Reading:
Announcements:

Tues Dec 2

Topics: Five minute term project presentations.
Reading:
Announcements:

Wed Dec 3

Topics: Five minute term project presentations.
Reading:
Announcements:

Fri Dec 5

Topics: review for final exam
Reading:
Announcements:

Fri Dec 12

Topics: Final exam. 11:30-2:30.

Google calendar

This is only a summary that I created so you can merge it with your other Google calendars. The details are above.