|
This course teaches how to program a computer to generate photo-realistic images. The general idea is that if you have a scene model and a sensor model, then you should be able to create the same image that a camera would for that scene and viewpoint. Scene models include 3D object models and light sources. Objects models include descriptions of their surfaces properties, i.e. appearance. Sensor models include focal lengths, aspect ratios, etc., as well as the position and orientation of the camera. Note that this course is not about how to create 3D models, or how to use 3D modeling packages. This course will emphasize geometric objects and transformations, perspective projections, lighting and reflectance models, shading models, 3D curves and surfaces, and fast algorithms for clipping, line drawing, and hidden surface removal. Students will become experienced OpenGL programmers, and may finally understand why linear algebra is so important. |
|
In order to understand the material in this course, you will need to have a good working knowledge of data structures such as linked lists, trees, symbol tables, and dynamically allocated structures. You will need to know how to implement these data structures in C or C++. This course will also draw on knowledge of the 2D and 3D geometry of vectors and coordinate systems, and on the use of matrix algebra for coordinate transformations. To successfully complete this course, you should be familiar with material related to the above topics covered in M229 (Matrices and Linear Equations), CS200 (Algorithms and Data Structures), and CS314 (Software Development Methods).
There is one required textbook for this course:
Below are two common references for OpenGL which students may optionally wish to use. Latest editions of these are marginally better than older versions, but for much of what is covered in this course the updates are not critical.
Students are responsible for doing the assigned reading prior to the lecture in which the material is to be covered. Reading assignments are announced in class. Students in doubt about reading assignments are encouraged to ask for clarification in lecture. The readings will also be keyed to topics as the course progress web page develops over the semester.
Students may also be assigned reading in outside sources available publicly through the web. These assignments will be made if and when appropriate.
The following are the dates for the two midterms and the final exam. Make-up exams are only given for extraordinary circumstances (e.g., illness, death of family member). Please plan accordingly.
Event |
Time and place |
|---|---|
| Midterm 1 | September 28, in class |
| Midterm 2 | November 2, in class |
| Final Exam | December 10, 9:10 to 11:10 AM, normal classroom |
The following are the basic topics covered in CS410. In keeping with the design of the textbook, many of these topics are exemplified through their use within OpenGL.
| Topic | Sub Topic |
|---|---|
| 2D Drawing | Polygon Filling Event Handling Clipping and Aliasing |
| Geometric Transformations | Basic Affine Transformations Homogeneous Coordinates Composition of Homogeneous Transforms Viewport Transformations Orthographic and Perspective Projection |
| 3D Drawing | Types of Projection: Perspective, Orthographic, etc. The Projection Pipeline Hidden Surface Removal |
| Geometric Modeling | Polygonal Models Curves: Hermetian, Bezier, Splines Surfaces: NURBS |
| 3D Rendering | The Projection Pipeline |
There are five formally graded elements to this course. At the end of the semester the final grade will be based upon a weighted sum of points earned in each of these areas. The specific weighting is:
| Element | Weight |
|---|---|
| Quizzes (~5) | 5 % |
| Essays (~2) | 15 % |
| Project (~3) | 40 % |
| Midterms (2) | 25 % |
| Final Exam | 15 % |
There will be approximately five short, roughly ten minute, quizzes given at the start of class. These will be distributed, somewhat roughly, throughout the semester. There is a formal writing component to this class and there will be two short essays, approximately five pages, assigned. One will come early in the semester, the other toward the end. The largest single element of the course is the semester programming projects. There are typically three such projects. There are also three major written exams, two midterms and one final exam. These exams are taken in the classroom and are closed book, closed notes, etc.
The following are the late and makeup policies for the course.
All students are expected to conduct themselves professionally. We (the instructors and GTAs) assume you are familiar with the policies in the student information sheet for the department. Additionally, you are computing professionals and should be familiar with the code of conduct for the primary professional society, ACM. You can read the ACM Code of Conduct HERE.
We work to maintain an environment supportive of learning in the classroom and laboratory. Towards that end, we require that you be courteous to and respectful of your fellow participants (i.e., classmates, instructors, GTAs and any tutors). In particular: