Computer Graphics Programming I


Table of Contents
Course Description
Prerequisite
Texts
Required Materials
Grading
AiPD Policies
Course Calendar


Course Description

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:

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.


Prerequisite

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.


Texts

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.


Required Materials

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.


Grading

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 assignments50 pts.
Term project50 pts.
Subtotal100 (59%)
Tests 
In-class quizzes20 pts.
Final Exam50 pts.
Subtotal70 pts. (41%)
Total170 pts. (100%)

Some assignments may carry extra-credit opportunities, but they will be infrequent.


Grading Scale

A=93% and above
A-=90%-92%
B+=87%-89%
B=83%-86%
B-=80%-82%
C+=77%-79%
C=73%-76%
C-=70%-72%
D+=67%-69%
D=60%-66%


Late Work

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.


Attendance and Participation

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.


AiPD Policies

Lab Policies

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.


Plagiarism

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.


Students with Disabilities

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
PortlandOR 97209-2911
503-382-4836


Course Calendar

Week 1 (October 2nd, 2007)

Lecture slides.

  • 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''.


Week 2 (October 9th, 2007)

Lecture slides.

  • 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).


Week 3 (October 16th, 2007)

Lecture slides.

  • 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).


Week 4 (October 23rd, 2007)

Lecture slides.

  • 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.


Week 5 (October 30th, 2007)

Lecture slides.

  • Texture mapping, part 2

    • Texture combiners, part1: texture environment

    • Texture coordinate generation

    • Environment mapping

  • Homework assignments:


Week 6 (November 6th, 2007)

Lecture slides.

  • 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.


Week 7 (November 13th, 2007)

Lecture slides.

  • Tangent space

    • Calculating tangents

    • Tangent-space lighting

    • Performing tangent-space lighting with texture combiners.

    • Bump mapping

  • Homework assignments:


Week 8 (November 20th, 2007)

Lecture slides.

  • 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).


Week 9 (November 27th, 2007)

Lecture slides.

  • Vertex arrays

  • Vertex buffer objects

  • Homework assignments:

    • Read OpenGL Superbible, chapter 11.


Week 10 (December 4th, 2007)

  • Work on final project

  • Homework assignments:

    • Prepare for final exam

    • Finish final project


Week 11 (December 11th, 2007)

  • Final exam. 5:30PM - 7:30PM. Do not be late today!