[ Announcements | Lectures Notes | | OpenGL demo | Research Projects]

CSc 433/533: Computer Graphics



Schedule of due dates:

Instructor

Alon Efrat, Gould-Simpson 747 

            alon@cs.arizona.edu

Gould Simpson 725, Tel: 520-626-8047 

Office Hours: MonWed 1:00- 2:15 


TA

David Lee, Gould-Simpson 725 

            drlee@email.arizona.edu

Office Hours: TuesThurs 9:00- 11:00 


Prerequisites:

C SC 345 , C SC 352 , Math 215


Recommended text:

The text books below are highly recommended but not required. While course content will be available on-line, many students will find it helpful to refer to acomprehensive text. The two texts below have significant overlap in terms of elementary material, and so students may opt to purchase only one. In summary, the Foley & van Dam book provides encyclopedic coverage and rigorous exploration of graphics topics, similar to CLRS for Algorithms. However, it is somewhat dated, and uses an older graphics package (PHIGS) for examples. The Hearn and Baker book is newer and its coverage of topics is more straightforward, and it also uses OpenGL for its code examples. In short, Hearn and Baker is probably more suitable to introducing the concepts of graphics, while Foley and van Dam is a more robust desk reference.

·         Hearn and Baker. Computer Graphics with OpenGL, 3rd ed., Pearson Prentice Hall (2003).

·         J.D. Foley, A. van Dam, S. Feiner, J. Hughes. Computer Graphics - Principles and Practice, 2nd ed. Addison-Wesley (1990).


Other books that may be useful:

·         Alan Watt, 3D Computer Graphics, 3rd Ed., Addison-Wesley, 0-201-39855-9. Highly recommended, but somewhat advanced.

·         Alan Watt and M. Watt, Advanced Animation and Rendering Techniques, Addison-Wesley (1992), 0-201-39855-9. A collection of more advanced methods for 3D rendering.

·         Edward Angel. Interactive Computer Graphics: A top down approach with OpenGL. Friendly introduction, good for learning OpenGL and graphics together.

·         Shreiner et al, OpenGL Programming Guide, Version 2.1, 6th ed, Addison-Wesley (2007). The definitive reference for OpenGL programming, also known as "The Red Book."


Overview:

Computer graphics is the art and science of creating digital images from abstract computer encoded models. We will consider both the reduction of models to images (rendering) and model creation (modeling). We will also touch upon issues for both these aspects when sequences of images are to be created (animation).

This course will focus mostly on fundamentals. We will make use of basic linear algebra and geometry. A sound understanding of using matrices to represent transformations will be very helpful. You should be comfortable thinking about problems such as: Given a point, is it in the plane of a polygon? If so, and if the polygon is convex, is the point inside the polygon? I will go over the requisite math as it arises, but if you are not confident with your background, you may wish to contact the instructor to discuss it.

This course will have a heavy programming component. You must be fluent in either C or C++.

This course will have both graduate and undergraduate students (including honors students). Graduate students will have additional requirements for assignments and on exams. It is possible for grad students to negotiate exchanging research-oriented project work for assignments. Honor students, as well as non-honor bur well motivated students can opt to be involved in a research projects. .

Topics:

This is an outline of the material to be covered. The topics and their depth will be adjusted as needed.

·         Course orientation. Introduction to graphics. Math preview. Graphics primitives. Introduction to OpenGL. Event processing via callbacks for interactive graphics programs. How images are made to appear on computer monitors (3).

·         Basic algorithms for drawing lines, anti-aliasing, filling polygons, etc. (2).

·         2D Clipping (1).

·         2D transformations. Mapping to view-port. Homogeneous coordinates (2).

·         3D transformations (1).

·         Projecting from 3D to 2D, 3D clipping (3).

·         Basic color, shading and surface models (Lambertian, Phong) (1).

·         3D visibility (back plane culling, Z buffer, ray casting, etc) (2).

·         Ray tracing (1).

·         Modeling basics. Hierarchical modeling; Introduction to constructive solid geometry (2).

·         Shading and surface models revisited, Color, Gouraud shading, Radiosity (3).

·         Curves and curved surfaces. Fractals (2).

·         Cool and Modern stuff. Graphics Hardware Units (GPU). Animation (2).

Grading:

 

    Assignments: 53%

    Midterm: 18%

    Final: 18%

    Max(Midterm,Final): 9%

    Class Participation: 2%

 

A cumulative percentage of 92% guarantees an A, 82% guarantees a B, 20% a C, and 60% a D. In Gray-area cases, the final grade will be the outcome of class participation, and general mastering of the material. (possibly differently for 433 and 533).


Assignments:

There will be 5-7 assignments, with a substantive focus on programming. These programming assignments are designed to both provide experience in writing interactive graphics software and to help students learn specific theoretical material. The grade of the lowest one will be dropped. Submission in pairs is allowed and encouraged.

Assignments will be handed-in electronically, and thus will be time stamped. Material to be submitted will include source code, build files (such as Linux makefile), an executable, a readme, and likely other files as explained in the instructions for each given assignment. Include a readme file with your submission describing any known problems or bugs, as well as any extra features you included (which may be eligible for modest extra credit).

This semester, we are offering two build options for programming assignments. Assignments should build and run on Linux (using make/gcc) or Windows XP (using Visual Studio). The CS graphics machines (GS 930) will be used as reference systems for all submitted material. If programs are developed elsewhere, or on other OS's, they should be checked on these machines before being handed-in. Further, assignments should be easy for the grader to compile and run -- by simply typing "make" for Linux installations or by running the "build" command in Visual Studio. (The reference machines in GS930 are hartal, hartford, harvard, harvestry, harmotome, harness, harvill, primo, and punker. The aliases for these machines are gr01-gr09.)

Assignments that fail to comply with these instructions may be counted as zero credit.


Exams:

There will be a midterm and a final exam. Each exam counts as 18% of the course grade. The higher of these two scores adds an additional 9% to the final course grade. Exams will include material covered in class that is not part of the programming assignments, and may only be covered tersely in the notes.


Policies:

Good attendance is expected and strongly advised.

Exams must be attended at their appointed time unless you have permission in advance to do otherwise. Make up exams will not be given except under extraordinary circumstances.

Assignment late policy: Late assignments will be accepted with penalty until five days late. From that point onwards, assignments will not be accepted. This is a matter of courtesy to your TA. The late penalty is 10% per day. In addition, there is a 12 hour "grace" period (late with no penalty) for each turn-in deadline. For example, if an assignment is due at 23:59:59 on Nov. 10, submissions prior to 11:59:59 (inclusive) on Nov. 11 will be accepted without penalty. Similar reasoning applies for each additional penalty day, up to 5 days.

Some attempt will be made to detect violations of the University of Arizona's academic integrity policy. Specifically, exams and written assignments must be the sole work of the student. Students may help each other with the problem analysis and general strategies relevant to the programming assignments, but detailed help or code sharing is not permitted. All code in programming assignments will be assumed to have been written by the student (or student team) unless attribution is given. An obvious exception to this rule is sample code which has been provided by the instructor for this course through the course web page tree. Such code does not require attribution (we know where it came from). It is also permissible to include with attribution code from external sources provided that the code is published, has not been solicited, and was not written for course requirement for this or a similar course given elsewhere.

OpenGL Demos and Libraries

Lecture Notes