GLART -- OpenGL as an Art Medium (Spring 2006)

Description:
The computer provides artists with a bewildering variety of options for creating images: image editors, 3D modelling tools, animation tools, and dozens of progrmaming languages. Yet at the lower level of all computer rendering lies a relatively simple and very powerful graphics processor. OpenGL provides access to this lower level of rendering, and gives artists the opportunity to create their own "brush and canvas", to produce high performance animated graphics in both 3D and 2D. The purpose of this course is to introduce OpenGL and provide a working knowledge of this powerful API. We will use Java, Eclipse and an OpenGL library to explore basic concepts of OpenGL such as coordinate systems, navigating in a 3D space, cameras, rendering models, mouse and keyboard input, lighting, texturing and blending. The course consists of weekly programming assignments and a final project. This class is intended for students who are comfortable with programming.

Syllabus

Week 1 (Sep 2) OpenGL Intro / Geometry

  • Class Intro / Overview
  • Brief history of OpenGL
  • Anatomy of an OpenGL program
  • Geometry: Vertices and Triangles
  • Eclipse review

  • Week 2 (Sep 9) Transformations

  • The coordinate system
  • Intro to Matrix math
  • Translate, Scale and Rotate
  • The "Model view"

  • Week 3 (Sep 16) Space

  • Perspective vs. Ortho
  • Defining the space: Frustum
  • The Depth buffer and Z
  • The viewpoint: gluLookat
  • The viewport

  • Week 4 (Sep 23) Light and Materials

  • Light components: ambient, diffuse, specular
  • Color and light
  • Directional vs. Positional light
  • Material reflectivity
  • Interaction of light and material

  • Week 5 (Sep 30) Texture

  • Loading images pixel formats
  • Texture coordinate space
  • Color and texture
  • Alpha blending textures

  • Week 6 (Oct 7) Models

  • Model file formats
  • Intro to (very) basic modelling
  • Loading and rendering a model

  • Week 7 (Oct 21) Navigation

  • Mouse and keyboard input
  • Converting Screen to world coordinates Project and Unproject
  • Moving through the space
  • Interaction

  • Week 8 (Oct 28) Text and Display Lists

  • Display Lists
  • Texture mapped text
  • Drawing text in and over a scene

  • Week 9 (Nov 4) Timing

  • The "Game Loop": controlling rendering speed

  • Week 10 (Nov 11) Extensions

  • Intro to ARB extensions
  • Pbuffers, render to texture
  • Saving the screen, giant screen captures

  • Week 11 (Nov 18) Shadows (and propose final projects)

    Week 12 (Nov 25) Final Projects in Progress

    Week 13 (Dec 2 ) Final Projects in Progress

    Week 14 (Dec 9) Final Project Presentations

     

    Reading Materials

  • OpenGL Programming Guide (the Red Book), Woo, Neider, Davis (Required)
  • The Red Book first edition available online not as up to date, but can be used for this course.
  • Essential Mathematics for Games (Optional) If you want to get into 3D mathematics in depth this book is clear and practical
  • Resources

  • NeHe tutorials, excellent source of OpenGL coding tutuorials
  • Nate Robins tutorials, programs demonstrate key features of OpenGL
  • OpenGL.org, official OpenGL site
  • OpenGL reference, documentation of OpenGL API
  • LWJGL.org, home of the Lightweight Java Game Library
  • JOGL, Java OpenGL project
  • Potatoland (Mark Napier), code samples and links for Java/OpenGL and LWJGL
  • Homework Wiki, link to your class assignments here
  • Email

  • napier __at__ potatoland __dot__ org