Computer Graphics
Computer Graphics:
Computer graphics is concerned with producing images and animations (or sequences of images) using a computer. This includes the hardware and software systems used to make these images. The task of producing photo-realistic images is an extremely complex one, but this is a field that is in great demand because of the nearly limitless variety of applications. The field of computer graphics has grown enormously over the past 10–20 years, and many software systems have been developed for generating computer graphics of various sorts. This can include systems for producing 3-dimensional models of the scene to be drawn, the rendering software for drawing the images, and the associated user-interface software and hardware.
Our focus in this course will not be on how to use these systems to produce these images (you can take courses in the art department for this), but rather in understanding how these systems are constructed, and the underlying mathematics, physics, algorithms, and data structures needed in the construction of these systems. The field of computer graphics dates back to the early 1960’s with Ivan Sutherland, one of the pioneers of the field. This began with the development of the (by current standards) very simple software for performing the necessary mathematical transformations to produce simple line-drawings of 2- and 3-dimensional scenes. As time went on, and the capacity and speed of computer technology improved, successively greater degrees of realism were achievable. Today it is possible to produce images that are practically indistinguishable from photographic images (or at least that create a pretty convincing illusion of reality).
Course Overview:
Given the state of current technology, it would be possible to design an entire university major to cover everything (important) that is known about computer graphics. In this introductory course, we will attempt to cover only the merest fundamentals upon which the field is based. Nonetheless, with these fundamentals, you will have a remarkably good insight into how many of the modern video games and “Hollywood” movie animations are produced. This is true since even very sophisticated graphics stem from the same basic elements that simple graphics do. They just involve much more complex light and physical modeling, and more sophisticated rendering techniques.
In this course we will deal primarily with the task of producing a single image from a 2- or 3-dimensional scene model. This is really a very limited aspect of computer graphics. For example, it ignores the role of computer graphics in tasks such as visualizing things that cannot be described as such scenes. This includes rendering of technical drawings including engineering charts and architectural blueprints, and also scientific visualization such as mathematical functions, ocean temperatures, wind velocities, and so on. We will also ignore many of the issues in producing animations. We will produce simple animations (by producing lots of single images), but issues that are particular to animation, such as motion blur, morphing and blending, temporal anti-aliasing, will not be covered. They are the topic of a more advanced course in graphics.
Let us begin by considering the process of drawing (or rendering) a single image of a 3-dimensional scene. This is crudely illustrated in the figure below. The process begins by producing a mathematical model of the object to be rendered. Such a model should describe not only the shape of the object but its color, its surface finish (shiny, matte, transparent, fuzzy, scaly, rocky). Producing realistic models is extremely complex, but luckily it is not our main concern. We will leave this to the artists and modelers. The scene model should also include information about the location and characteristics of the light sources (their color, brightness), and the atmospheric nature of the medium through which the light travels (is it foggy or clear). In addition we will need to know the location of the viewer. We can think of the viewer as holding a “synthetic camera”, through which the image is to be photographed. We need to know the characteristics of this camera (its focal length, for example). Based on all of this information, we need to perform a number of steps to produce our desired image. Projection: Project the scene from 3-dimensional space onto the 2-dimensional image plane in our synthetic
Color and shading:
For each point in our image we need to determine its color, which is a function of the object’s surface color, its texture, the relative positions of light sources, and (in more complex illumination models) the indirect reflection of light off of other surfaces in the scene.
Hidden surface removal:
Elements that are closer to the camera obscure more distant ones. We need to determine which surfaces are visible and which are not.
Rasterization:
Once we know what colors to draw for each point in the image, the final step is that of mapping these colors onto our display device.
By the end of the semester, you should have a basic understanding of how each of the steps is performed. Of course, a detailed understanding of most of the elements that are important to computer graphics will beyond the scope of this one-semester course. But by combining what you have learned here with other resources (from books or the Web) you will know enough to, say, write a simple video game, write a program to generate highly realistic images, or produce a simple animation.
The Course in a Nutshell:
The process that we have just described involves a number of steps, from modeling to rasterization. The topics that we cover this semester will consider many of these issues.
Basics:
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.
Implementation Issues: Rasterization, clipping.
Modeling:
Model types: Polyhedral models, hierarchical models, fractals and fractal dimension. Curves and Surfaces: Representations of curves and surfaces, interpolation, Bezier, B-spline curves and surfaces, NURBS, subdivision surfaces.
Surface finish: Texture-, bump-, and reflection-mapping.
Projection:
3-d transformations and perspective: Scaling, rotation, translation, orthogonal and perspective transformations, 3-d clipping.
Hidden surface removal: Back-face culling, z-buffer method, depth-sort.
Issues in Realism:
Light and shading: Diffuse and specular reflection, the Phong and Gouraud shading models, light transport and radiosity