Computer Graphics - CS 3700
Course Outline - - Spring 2004
Last changed: May 7, 2004

 


Instructor: Prof. William J. Taffe
Office: Memorial 205
Office Hours:  See my home page
Class Meetings:  M,W,F 9:05-9:55

Textbooks:Computer Graphics using OpenGL (2nd Edition) by F.S. Hill, Jr., Prentice Hall, 2001

  I chose it for several reasons.  It:

  1. has a good selection and coverage of the fundamental topics of Computer Graphics
  2. gets to 3D and "modern graphics topics" within a one-semester course
  3. it is based on the OpenGL API (Application Programmers Interface)
  4. includes good homework problems and programming projects
  5. reads quite well
Other Materials: A three-ring binder is recommended for class notes, handouts, notes from the textbook, and homework problems.  It works better than a spiral--bound binder.

Role of the Instructor: This course will be taught as a seminar.  Together, we will read the text, solve homework problems, and do programming projects.  Although I will lecture on some topics, I won't try to "tell you everything you have to know." I'll highlight a few points, show some slides, lead discussions on the textbook material, coach you on homework problem presentations, make suggestions on programming methodology, etc.   We have an excellent textbook full of information, and it is your responsibility to read and study it. We will use class time for discussing  the text, doing problems which illustrate significant points, and discussing the programming projects.

OpenGL:   OpenGL is the open standard of the graphics community. It is inherently 3D and allows the user to produce interesting displays rather quickly.  It is also "open" meaning it is not owned by anyone but rather is available to all.  It can be downloaded free.  We will also be using the Microsoft compiler Visual C++ but we will compiling to a "console" model not to a windows model letting OpenGL control the screen.  We are using Microsoft since the combination of WindowsXP and MS Visual C++ allows and easy linkage to OpenGL. PSU has a site license that allows all students and faculty to obtain a copy of Visual Studio at no additional cost.

Grading:

Discussion forums:  There are a number of discussion forums used by the opengl community.  I encourage you to join, read and (when appropriate) contribute to these groups.  You can find them at: http://www.opengl.org/discussion_boards/cgi_directory/Ultimate.cgi

Useful Links

   &  


 

Date Topic Reading Programming Assignments Date Due
Feb 2 Introduction to the course  

Get a textbook

 
Feb 4 Overview of Graphics
 1.0 - 1.6
Prepare an OpenGL programming environment  2/9
Feb 6 Graphics primitives ... points and lines
 2.1 - 2.2

Assignment 1 . Do "example 2.2.2" to be sure you can create a GLUT window and a basic OpenGL program

 2/13
Feb 9

Overview - graphics pipeline and viewing
transformation. Graphics vs animation and image analysis.

 2.3
   
Feb 13 GLUT interactions with mouse and kbd
2.4 - 2.5

Assignment 2.    This is a variation on Case Study 2.4 You will design an input file format, create a file of polygon objects using that format, and write a program that will read and display the objects.

 2/20
Feb 16  Windows, Viewports
 3.1 - 3.3
   
Feb 18

Clipping

 

3.4
Assignment 3   This is a variation on Case Study 2.6 You will write a program which allows the user to capture a group of vertices, lines and/or polygons and save the appropriate information to a file using the format you designed for Assignment 2.   3/1
Feb 20

Canvas Class & Relative drawing

3.5
   
Feb 23 Canvas Class & Relative drawing cont.
3.7
Assignment 4 ... A case study from Chapter 3 ... note the shift in date due  3/10
Feb 25 Drawing Circles and Arcs
3.8 - 3.9
   
Feb 27 Vectors and Vector Algebra
4.1 - 4.2 Appendix 2
   
Mar 1 The Dot Product

4.3

   
Mar 3 First Hour Exam .. Chapters 1-3   Assignment 5 ... An animation with tweening 3/17
Mar 5

The Vector Product
and some Vector Applications in CG

4.4
   
Mar 8 More Vector Apps in CG
4.5 - 4.8
   
Mar 10 More Vector Apps in CG
4.9
   
Mar 12 Affine Transformations
5.1 - 5.2
   
Mar 15 3D Transformations
5.3
Assignment 6 ... Simple Ray Tracing 3/29
Mar 17 3D Transformations continued
5.4 - 5.5
   
Mar 19 Applications of Transformations in CG
 
   
Mar 22,24,26 Spring Break
 
   
Mar 29 Choose term projects   Assignment 7 ... 3D Scene with a SDL 4/7
Mar 31 Transformations in OpenGL
Scene Description Language
5.6
5.7 and Appendix 5
   
Apr 2 Finish SDL
Introduction to solid modeling with polygonal meshes
6.1-6.2
   
Apr 5 Polyhedra
6.3 
   
Apr 7 Extruded Shapes
Note: We will skip Section 6.5
6.4
Assignment 8 ... Displaying mesh solids stored in files 4/19
Apr 9 No class ...      
Apr 12 3-D Viewing 7.1 & 7.2    
Apr 14 The Camera 7.3    
Apr 16 The Perspective View 7.4 Assignment 9 ... Flying around a teapot 5/7
Apr 19 Second Hour Exam -- Chapters 4, 5 & 6      
Apr 21 Stereo Views 7.5    
Apr 23 No class ... CCSCNE mtg.      
Apr 26 The Taxononmy of Projections 7.6    
Apr 28 Shading and Light 8.1 No further programming assignments ...  
Apr 30 Shading Models 8.2 Work on your term project ...  
May 3 Flat Shading and Smooth Shading 8.3    
May 5 Raster Displays` 10.1 & 10.2    
May 7 Combining pixmaps ... the alpha channel 10.3    
May 10 Bresenham's Algorithm and Area Filling conceptually    
May 12 Review ...      
May 14 Third Hour Exam      
May 21 Final Project Presentations 8:00-10:30 AM    


    Programming Assignments


Term Programming Project

    Fifteen percent of your grade is based on the final programming project which should be started immediately after spring break and presented to the class on the date of the "final examination".   A typical project will consist of both an extensive program and a (short) report.

    In order that we agree on what comprises a reasonable project, I would like each of you to hand in a one page proposal (150-200 words) on March 29(first class after Spring Break). I will review each proposal and approve, disapprove or suggest modifications. My two concerns will be the amount of effort a given project will require (either too much or too little would be unacceptable) and that the project involve appropriate computer graphics. In general, programming projects should include well-designed user interaction, a non-trivial world model rendered in 3D, effective use of features such as lighting, material properties, texture mapping, etc.

    Reading the text may suggest some possible projects.  I especially want to encourage projects which use OpenGL since you will all have experience with its basics and this would be an excellent opportunity to solidify that knowledge. It should be the choice for most interactive projects.  However, it is possible to successfully propose a project that does not involve OpenGL.

    If you have special hardware or software that is available to you because of some outside source (for example: at your job) explain this in your proposal describing how you will demonstrate your project to the class.

Some possible projects and areas include:

1.    CAD/painting: projects under this heading can range from designing a paint package to a three dimensional design system for a particular application areas such as robotics, architecture, or circuit layout

2.    OpenGL++: One of the disadvantages of OpenGL is that it is not object oriented. A project in this area could implement a class library that supports geometric types such as points and vectors directly. The library would be built on top of OpenGL. It would include the library and complete documentation.

3.    Ray tracers: ray tracing provides an alternate model for building three dimensional graphics. A simple ray tracer that supports only a few object types and simple shading is not too difficult to construct (see chapter 14).  Alternatively, an extensive project might be done using the shareware ray tracer, POV Ray.

4.    Algorithms: You can investigate a particular class of algorithms such as hidden line algorithms and examine them for efficiency and functionality.

5.    Data Visualization: build data visualization tools for examining 3D surfaces or objects.  Or, build a visualization tool for constructing good 3D maps from surface contour information.

6.    Advanced rendering: Many possibilities here:  for ex. texture mapping, compositing, and use of the accumulation buffer.

7.     VRML: Teach yourself VRML and construct some realistic models using this scripting language.

8.     OpenGL on UNIX.  Install OpenGL and GLUT on UNIX.   Test a variety of programs in this environment;  examine its performance versus the Windows XP version.

9.     Java binding:  Investigate the Java binding for OpenGL.  Rewrite several of the textbook's examples in Java/OpenGL.

The above list is not exclusive. You can meet with me to suggest projects in other areas.


Videos
Between the Departmental Collection and Lamson Library we have several good videos on Computer Graphics.  They include:

Computer Graphics Titles Available in Lamson Library
(As of Spring 1998 ... currently being updated)

Title              Interactive computer graphics : a top-down approach with OpenGL
Author          Angel, Edward
Publisher     Addison-Wesley, 1997
LC#              T385 .A514 1997

 

Title              OpenGL programming for Windows 95 and Windows NT / Ron Fosner
Author          Fosner, Ron
Publisher     Addison-Wesley Developers Press, c1997
LC#              T385 .F663 1997
 

Title              OpenGL programming guide : the official reference guide for OpenGL, release 1.1
Author          Mason Woo, Jackie Neider, Tom Davis
Publisher     Addison Wesley , 1997
LC#              T385 .N435 1997

Title              OpenGL reference manual : the official reference document to OpenGL, version 1.1
Author          OpenGL Architecture Review Board ; Renate Kempf and Chris Frazier, editors
Publisher     Addison-Wesley Developers Press, 1996
LC#              T385 .O642 1996
 

Title             OpenGL superbible : the complete guide to OpenGL programming for Windows NT and Windows 95
Author          Wright, Richard S., 1965-
Publisher     Waite Group Press, c1996
LC#              T385 .W73 1996
 

Title              OpenGL programming for the X Window System
Author          Kilgard, Mark J
Publisher     Addison-Wesley Developers Press, c1996
LC#              T385 .K487 1996