VGP351A
Fall 2007, 3 credits
Tuesday, 6:00PM - 9:45PM
Room #201
In this course students will be introduced to principles of 3D computer graphics using the OpenGL programming interface. Students will learn fundamental concepts of transformation, lighting, and texturing.
By the end of the course, students will be able to:
Display static and animated models using OpenGL.
Apply direct lighting and texturing to those models.
Debug common OpenGL problems.
Know where to look find additional OpenGL information.
The complete, up to date, course syllabus is also available on-line at the course website. The syllabus is available as both HTML and PDF.
This course is both programming and math intensive. Some background in C or C++ programming is required. Familiarity with object oriented programming principles will be very helpful but is not strictly required. Some background in matrix math and trigonometry will be helpful but are also not required.
Required text:
Richard S. Wright Benjamin Lipchak Nicholas Haemel OpenGL SuperBible: Comprehensive Tutorial and Reference (4th Ed.). Addison-Wesley Professional, June 2007. ISBN 0321498828.
The book also has a website, that includes source code and pre-built binaries.
In addition to paper and writing utensils, each student will need a removable storage device. The storage device will be used to both bring documents and sample code home from class and bring homework completed assignments to class. The storage requirements should be minimal, so a small USB flash-drive (256MB) should be sufficient.
Each student's grade in this course will be primarily based on a total of five single-week programming assignments and one four-week programming project. The remainder of the student's grade will be based on bi-weekly quizes and a final exam.
Programming assignments will be graded first and foremost on whether or not correct output is produced. The remaining points are based on the style of the program. This includes, but is not limited to, algorithm selection, code formatting, and naming conventions. A detailed rubric will be provided with each assignment.
Programming Assignments | |
Homework programming assignments | 50 pts. |
Term project | 50 pts. |
Subtotal | 100 (59%) |
Tests | |
In-class quizzes | 20 pts. |
Final Exam | 50 pts. |
Subtotal | 70 pts. (41%) |
Total | 170 pts. (100%) |
Some assignments may carry extra-credit opportunities, but they will be infrequent.
I do not accept late work. If you miss a deadline, you will not earn the points for that activity. There are no make-up opportunities. If you are unable to attend class on the due date for a assignment, please submit it by e-mail before class.
If you are not in class for an in-class exercise, you cannot earn those points. If you miss an entire class, you are responsible for obtaining copies of handouts and other classroom materials from your classmates.
Leave food and drink outside the class. Disciplinary action will be taken toward any student found using the equipment in an inappropriate manner, taking cell phone calls or surfing the web. Disruptive, disrespectful or rude behavior will not be tolerated.
Presenting the writings, images or paraphrased ideas of another as ones own, is strictly prohibited at the Art Institute of Portland. Properly documented excerpts from others works, when they are limited to an appropriate amount of the total length of a student's paper, are permissible when used to support a researched argument.
It is AiPD policy not to discriminate against qualified students with a documented disability in its educational programs, activities or services. If you have a disability-related need for adjustments or other accommodations in this class, contact the Disability Services Coordinator.
Amber Perrin
Disabilities Services Coordinator
The Art Institute of Portland
1122 NW Davis Street
Portland, OR 97209-2911
503-382-4836
<aperrin@aii.edu>
Course road-map
What is OpenGL?
What is SDL?
Compile OpenGL ``Hello, world!''
Drawing in OpenGL
Immediate mode
Types of primitives
Hidden surface removal
Back-face culling
Z-buffering
Buffers
Color buffer
Depth buffer
Stencil buffer
Brief mention of other buffers that we won't use this term
Homework assignments:
Read OpenGL Superbible, chapter 1 and chapter 2. In chapter 2 skim the GLUT details in the section titled ``Using GLUT''. We will not use GLUT in this course. Also in chapter 2, skip the sections titled ``Identifying the Version'' and ``Using Extensions''.
Brief introduction to vector math
Addition and subtraction
Dot product
Cross product
Matrix multiplication
Transformations
Timing for animation
Homework assignments:
Read OpenGL Superbible, chapter 3. Skim the sections ``Line Stippling,'' ``Filling Polygons, or Stippling Revisited.''.
Programming assignment #1: moving objects w/stencil. Due (10/16).
Projections
Lighting and materials, part 1
Lighting models
Ambient
Lamber
Phong
Blinn
Lights and lighting in OpenGL
Controlling lights
Spot lights
Light source attenuation
Shading models
Simple, planar shadows
Homework assignments:
Read OpenGL Superbible, chapter 5.
Programming assignment #2: lit, 3D objects. Due (10/23).
Lighting and materials, part 2
Color-materials
Visualizing spot lights
Texture mapping, part 1
Explicit mapping of textures to geometry
Texture filtering
Texture wrap modes
Texture ``objects''
Loading texture data
Homework assignments:
Read OpenGL Superbible, chapter 6.
Texture mapping, part 2
Texture combiners, part1: texture environment
Texture coordinate generation
Environment mapping
Homework assignments:
Read OpenGL Superbible, chapter 8.
Programming assignment #3: Texture mapped virtual world. Due (11/13).
Texture mapping, part 3
Specular highlights
Point sprites
Multitexture
Texture combiners, part 2: GL_ARB_texture_env_combine and friends
Homework assignments:
Read OpenGL Superbible, chapter 9.
Tangent space
Calculating tangents
Tangent-space lighting
Performing tangent-space lighting with texture combiners.
Bump mapping
Homework assignments:
Programming assignment #4: Phong shading with texture combiners. Due (11/27).
Framebuffer operations
Blending
Alpha test
Fog
Multipass rendering
Homework assignments:
Read OpenGL Superbible, chapter 6. Skip the section ``Accumulation Buffer.''
Term project assigned. Due (12/11).
Vertex arrays
Vertex buffer objects
Homework assignments:
Read OpenGL Superbible, chapter 11.
Work on final project
Homework assignments:
Prepare for final exam
Finish final project