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