CS 485 Fall 2007, Assignments

Our TA is: Sujatha Nulu (snulu@cs.siu.edu)
The OpenGL Programming FAQ as well as the online verisons of older editions of the OpenGL Ref. Manual and OpenGL Prog. Guide are useful sources of information. For Java developers, the JOGL (Java OpenGL) User Guide is as well as the JSR 231 javadoc is online. C/C++ developers should check out GLUT.

CS 2102 Lab Hours are 8a-8p M-Th; 8a-4:30p on F


Read Chpt 1: Intro to Graphics and Graphics Systems. We mentioned 3D printers and you may be interested in the following sites for more information (RepRap, Mad Scientist).

Read Chpt 2: Graphics programming and the OpenGL api.

We discussed an OpenGL jogl jsr231 example in class. Our example uses 3 classes. JOGLPlainMain acts as a main class which sets up a fairly generic interface. JOGLEventListener implements the basics of a GLEventListener and DrawListener provides most of the custom behavior of the application. These files are bundled together in this zip file. The file also includes a build.xml file to compile and run the example (instructions are here). If you come across pre jsr231 jogl code, this posting gives some experiences about migrating from jogl 1.1.1 to jsr231.

An example of the same application implemented using C and GLUT is in the file draw.c. You may find Angel's instructions on using Visual C++ with OpenGL/Glut useful.  If developing with GLUT under Linux you should use a makefile.

Lab 1: Simple OpenGL 2D Graphics was assigned (Sept. 5). It is due on Friday Sept. 14.

Read Chpt 3:  Interaction, logical & physical devices, event processing. Display lists, graphics client/server.

Lab 2: Interactive Visualization of a 2D Pinhole/Synthetic Camera was assigned (Sept. 14). It is due on Friday Sept. 28.

Read about transforms in Chpt 4. We are only looking at 2D transforms for the moment. We discussed how transforms can be represented with matrices and combined together.

Homework 1 was assigned (Sept. 19). It is due on Wed, Sept. 26.

Exam 1 will be on Mon, Oct 1. We will review for the exam on Fri, Sept. 28

Hierarchical modeling - example of 3 of hearts playing card. Transforms in OpenGL. Robot Arm example.   Picking using different methods. An extension of the robot illustrated how picking with OpenGL SELECT mode could be done. We also discussed how to determine if a polygon is convex, tessellation and winding numbers.

Lab 3: Picking, 2D Hierarchical Modeling was assigned (Oct. 8). It is due on Wed, Oct. 24.

Read about 3D transforms in Chpt 4. Transforms are extended to 3D. The biggest complication is rotation as now we must specify which axis to rotate about. Rotations about the 3 primary axes can be used to form a rotation about an arbitrary axis.

Quaternions can also be used to do aribitrary 3D rotations (see text sec 4.12)

Chapter 5 of the text covers positioning the camera and projections. (gluLookAtgluPerspective, glOrtho, glFrustrum etc.)

Lab 3: Picking, 2D Hierarchical Modeling due date was extended to Mon, Oct 29.

We introduced 2D texture covered in the text in sections 8.7.1, 8.8.1-3 (glTexCoord, glTexParameter ( CLAMP, REPEAT ) etc.)

Homework 2 was assigned (Oct. 22). It is due on Mon, Oct. 29.

Read sections 7.3-6 about clipping (region codes, line clipping, polygon clipping, bounding extents and other primitives)

Read about Clipping (region codes, line clipping, polygon clipping, bounding extents and other primitives) in sections 7.3-6

Lab 4: 3D Modeling & Viewing with texture and viewports due date Mon, Nov 12. (may work in pairs).

Exam 2 will be on Wed, Nov. 7.

Read 7.11 on Hidden Surface Removal (HSR), Object Space vs Image Space, various methods (backface culling, painter's alg., Z-buffer, etc.) Useful data structures (Quadtree & Octree section 10.10.3) were also discussed.

Raytracing and Constructive Solid Geometry (Sec 12.2-12.3.1, 10.10.1)

Lab 5: Creating an Animated Movie due start of class, Friday Dec. 7 (Movie Demo Day!)

Lighting and Shading Models (Sect 6-6.3.3: specular, diffuse, light sources, lighting formula, important vectors)
local vs. global illumination

Class meets in the CS Conference Room (Faner 2127) on Monday Nov. 26.

Transparency and alpha, alpha as a measure of pixel coverage, anti-aliasing, nyquist frequency, super sampling, subpixels
Figure 8.32 in the text gives a nice illustration of aliasing that can occur in patterns as a perspective project increases the signal frequency
Read sections 7.12, 8.11.4, 8.13.1, 8.12.1-3

Color blending with alpha (finding a pixel's color by blending foreground and background color using alpha)
Intermediate texture objects, layered textures, bump mapping, solid/procedural textures Section 8.7
Animation (key frames, inbetweening, kinematics/inverse kinematics), layered tracks, masks Sections 10.6

3d object representations (height fields, sweeps, meshes, physical modeling - particle systems, flocks/herds, fractals etc.)
Sections 10.1, 10.12-13, 9.7.3
Bezier curves (control points, convex hull, interpolation vs. approximation, subdivision, computing by hand) Sections 11.6.1, 11.9.2

You can get hands-on experience with many of the topics listed above, using POVray.

Line rasterization methods (y=mx+B, DDA, midpoint/Bresenham's) Sections 7.8-9
Seed fill algorithms (flood and boundary) (practice examples) Section 7.10.4


Class meets in the CS Computer Lab (Faner 2102) on Friday, Dec. 7 for Movie Day. All Lab 5 materials should be ready to demo at this time. Each group should should submit a CD with all their materials. An "index.html" webpage should enable linking to write-up material and allow playing the movie.


Exam 3 will be given during finals week:  Wed, Dec. 12 at 8:15am in our regular classroom. This exam will emphasize topics covered since exam 2 (Starting with Raytracing and CSG.)