CS 485 Fall 2008, Assignments

Our TA is: Hongbo Zhou (hongboz@siu.edu). His office hours are 2-4 on Tues & Thurs.

For Java 2D graphics see Sun's tutorial on Java 2D. as well as a chapter on Java 2D graphics from "Core Web Programming" (may be dated). To access OpenGL with Java, we use JOGL ( JSR 231 javadoc and JOGL (Java OpenGL) User Guide). 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. C/C++ developers should check out GLUT as well.

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


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, CandyFab).


The graphics pipeline and graphics api's. We introduce 2D graphics with Java. An example given as a zip file which can be imported as an Eclipse project is given. If you haven't used Eclipse before, brief instructions on importing a Java OpenGL project under Eclipse are given here. Note that, Java2D is already included in Java so no extra libraries need to be loaded (JOGL does require extra libraries).

Lab 1 (Java2D self portrait) is assigned (due Friday, Sept. 5)
We meet in the CS workstation lab (Faner 2102) on Friday.

Read Chpt 2: Graphics Programming. After our quick introduction to programming with Java2D, we have more perspective when considering graphics api options. Next we turn our attention to OpenGL. If you are thinking about developing OpenGL code with C/C++, take a look at the draw example application implemented using C and GLUT in the file draw.c. You may also find this additional information for using OpenGL/Glut with C++ helpful.


Begin Reading Chpt 3:  Interaction, logical & physical devices, event processing. Display lists, graphics client/server. Ideas for picking using different methods.

Lab 2 (Interactive Visualization of a 2D Pinhole/Synthetic Camera) assigned (due Friday, Sept. 26)

Begin reading 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. Hierarchical modeling - example of 3 of hearts playing card. Transforms in OpenGL. Robot Arm example.    We also discussed how to determine if a polygon is convex, tessellation and winding numbers.

Homework 1 is due at the start of class on  Mon, Sept. 29.

Exam 1 will be on Wed, Oct 1. We will review for the exam on Mon, Sept. 29

Hierarchical modeling - example of 3 of hearts playing card. Transforms in OpenGL. Robot Arm example.  We also discussed how to determine if a polygon is convex, tessellation and winding numbers.

A bonus assignment to earn points to improve exam 1 scores was given. This is an individual assignment due on Fri. Oct. 10

Picking with OpenGL SELECT mode. More discussion about OpenGL picking can be found in the OpenGL Programming Guide (link to the pick chapter) and this online tutorial at Lighthouse3D.

Lab 3 (2D Hierarchical Modeling and OpenGL Picking) is assigned (due Mon, Oct 27)

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.)

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

Homework 2 was assigned (Oct. 27). It is due on Mon, Nov. 3

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

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

Read about hidden surface removal in section 7.11.
Quadtrees and Octrees are described in section 10.12.3

Meet in the Faner 2102 Lab on Friday, Nov. 7. to experiment with creating, texturing and rendering 3D objects with AOI.

Exam 2 will be on Wed, Nov. 12. We will review for the exam on Mon, Nov. 10. The due date for lab 4 is extended to Friday Nov. 14

Raytracing and Constructive Solid Geometry (Sec 13-13.3.1, 10.12.1)

Lab 5: Creating an Animated Movie (must work in groups 2-4) due start of class, Friday Dec. 5 (Movie Demo Day!)

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

Transparency and alpha, alpha as a measure of pixel coverage, anti-aliasing, nyquist frequency, super sampling, subpixels
Figure 8.29 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
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,8.12.2

Animation (key frames, inbetweening, kinematics/inverse kinematics), section 10.6, layered tracks, masks

3d object representations (height fields, sweeps, meshes, physical modeling - particle systems, flocks/herds, fractals etc.)
Sections  11, 5.7
Bezier curves (control points, convex hull, interpolation vs. approximation, subdivision, computing by hand) Sections 4.1.8, 12.6.1, 12.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. 5 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:  Mon, Dec. 8 at 1pm in our regular classroom. This exam will emphasize topics covered since exam 2 (Starting with Raytracing and CSG.)