This is an introductory course on the major topics in the areas of image synthesis, interactive techniques, geometric modeling, and computer-based animation. The material covered includes (1) basic principles of operation of raster graphics display devices and common two dimensional input devices, (2) basic algorithms for creating and manipulating two-dimensional raster objects, including BitBlt techniques, scan conversion methods for line segments, circles and polygons, filling algorithms and simple anti-aliasing schemes, (3) homogeneous coordinate transformation techniques, (4) parallel and central projection and perspective transformations, (5) common algorithms for clipping including Cohen-Sutherland, Sutherland-Hodgman and Liang-Barsky, (6) hidden surface removal, (7) basic light and reflectance models for local illumination, (8) Gouraud and Phong shading and basic texture and bump mapping, (9) principles of ray tracing, (10) basic parametric object modeling, including Bezier and B-spline curves and surfaces, (11) basic interaction and user-interface techniques, (12) principles of hierarchical modeling and (12) principles of device-independent graphics software architecture.
Grading will be based on two exams, a midterm and a second exam given on the last class day, and a series of implementation projects which will be assigned through the semester. The exams will emphasize the ideas, principles and mathematics behind the material covered and will not involve writing code fragments. Persons taking this course on a pass/fail basis need not take the exams. For these students, successful completion of the projects will determine the course grade. Project submissions will each include a code listing and a written project description, which will include a description of the software architecture of the system and a user's guide.
Programming may be done on any departmental workstation or, subject to prior instructor approval, on other machines accessible to the student. This year we have a new graphics and multimedia teaching laboratory in Painter Hall 3.120 with 20 Pentium workstations running Solaris in addition to the SUN and IBM workstations.
Grading involves interactive demonstrations of the programs by the students, so any machine used will have to be available for demonstrations of have an accessible counterpart on which we can do the demos. We will assume students are familiar with Xwindows or whatever alternative GUI programming environment they plan to use. The course will not concentrate on teaching the use of Xwindows or any other windowing environment in detail, however. Any programming language/environment is acceptable, provided the instructor or TA is familiar enough with it to evaluate the project. This should be checked in advance if the student wishes to employ any potentially exotic technology.
The programs will involve the use of the OpenGL graphics library or its equivalent, as this is rapidly emerging as the industry standard 3-D graphics library. The public domain Mesa package, which provides an OpenGL-like set of libraries for 3-dimensional image generation, is available for your use in the lab and on the departmental SUNs and IBM X-terminals. This package is publicly available to those who wish to use it on private systems (see the Mesa Home Page ). I have successfully installed it on Linux-based PCs, and there are versions available for Windows and for Macintoshes as well. In addition, many vendors provide OpenGL for their own platforms, and commercial versions for a variety of platforms are available from Portable Graphics and Template Graphics .