CMSC 427: Computer Graphics

Spring 2006

Introduction

This course provides an introduction to the principles of computer graphics. In particular, the course will consider methods for modeling 3-dimensional objects and efficiently generating photorealistic renderings on color raster graphics devices. The emphasis of the course will be placed on understanding how the various elements that underlie computer graphics (algebra, geometry, algorithms and data structures, optics, and photometry) interact in the design of graphics software systems.


Required Text

Computer Graphics with OpenGL, (3rd edition), D. Hearn and M. P. Baker, Prentice Hall, 2004.

Recommended Text

OpenGL Programming Guide: The Official Guide to Learning OpenGL, (Fourth Edition), by OpenGL Architecture Review Board, et al., Addison-Wesley, 2003. (This is also known as "the Red Book".)

Prerequisites

MATH 240 (Linear Algebra) and CMSC 420 (Data Structures). Knowledge of C, C++, or Java programming.


Course Work

Course work will consist of a combination of written homework assignments (around 2) and programming projects (around 3). Homeworks are due at the start of class. Late homeworks are not allowed (so just turn in whatever you have done by the due date). Programming assignments will typically be due at midnight of the due date. They are subject to the following late penalties: up to six hours late: 5% of the total; up to 24 hours late: 10%, and then 20% for every additional day late.

There will be two exams: a midterm and a comprehensive final. Tentative weights: Homeworks and projects 35%, midterm 25%, final exam 40%. The final exam will be Monday, May 15, 8:00-10:00am.

As a courtesy to the grader, homework assignments are to be written up neatly and clearly, and programming assignments must be clear and well-documented. Although you may develop your program on whatever system you like, for final grading your program must execute either on a workstation (Microsoft Windows, Linux, or Sun Solaris) either in the WAM or Linux labs. (Which do not have special graphics cards extensions.) If you develop your program on some other platform, it is your responsibility to see that it can be compiled and executed on one of these machines. Excessive delays due to system incompatibilities will result in point penalties.

Some homeworks and projects will have a special challenge problem. Points from the challenge problems are extra credit. This means that I do not consider these points until after the final course cutoffs have been set. Each semester extra credit points usually account for at least few students getting one higher letter grade.


Academic Dishonesty

All class work is to be done independently. It is best to try to solve problems on your own, since problem solving is an important component of the course, and exam problems are often based on modifications of homework problems. You are allowed to discuss class material, homework problems, and general solution strategies with your classmates. But, when it comes to formulating or writing solutions you must work alone. You may use free and publicly available sources, such as books, journal and conference publications, and web pages, as research material for your answers. (You will not lose points for using external sources.)

You may not use any service that involves payment, and you must clearly and explicitly cite all outside sources and materials that you made use of. I consider the use of uncited external sources as portraying someone else's work as your own, and as such it is a violation of the University's policies on academic dishonesty. Instances will be dealt with harshly and typically result in a failing course grade.


Topics

The following list of topics is very tentative. Depending on time, some topics may be added or dropped, and the order of topics may change.

Introduction
Overview of graphics systems, graphics devices, graphics programming.
Graphics Programming
OpenGL, graphics primitives, color, viewing, event-driven I/O, GL toolkit, frame buffers.
Geometric Programming
Review of linear algebra, affine geometry, (points, vectors, affine transformations), homogeneous coordinates, change of coordinate systems.
3-d transformations and perspective
Scaling, rotation, translation, orthogonal and perspective transformations, 3-d clipping.
Light and shading
Diffuse and specular reflection, Phong and Gouraud shading.
Using Images
Texture-, bump-, and reflection-mapping.
Implementation Issues
Rasterization, clipping.
Ray tracing
Ray-tracing model, reflective and transparent objects, shadows, light transport and radiosity.
Hidden surface removal
Back-face culling, z-buffer method, depth-sort.
Color
Gamma-correction, halftoning, and color models.
Modeling
Hierarchical models, fractals and fractal dimension.
Curves and Surfaces
Representations of curves and surfaces, interpolation, Bezier, B-spline curves and surfaces, NURBS, subdivision surfaces.