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:
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 |
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 |
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 |
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