Interactive Graphics
CSCI B481 Spring 2009

instructor:
Mitja Hmeljak
mitja@indiana.edu 
office hours: TBA

B481 Pages


Planned special topics for Spring 2009:
  • OpenGL ES programming for  mobile  devices (new!)
    • OpenGL ES is the 3D graphics API used on the iPhone, Android and Symbian platforms, Playstation 3, &c.
    • for B481 coursework, we'll use OpenGL ES desktop-based simulators
    • students with OpenGL ES capable hardware (such as iPod touch, iPhone, Nokia N95, T-Mobile G1, &c.) will be encouraged to test B481 programming assignments on their own devices

 
 
  
 
              Course Description
Course Prerequisites
Course Objectives
Course Policies
Course Topics
                      Readings
 Labs
 Exams and Grades
 Weekly Schedule
 Selected Topics
             

Information on this page is preliminary and subject to change: consider it a beta version. Please report bugs, and changes you'd like to see before the final release.
 

 
Course Description
  • Computer Graphics (CG) techniques.
  • Introduction to graphics hardware and software.
  • Two-dimensional graphics methods, transformations, and interactive methods.
  • Three-dimensional graphics, transformations, viewing geometry, object modeling, and interactive manipulation methods.
  • Basic lighting and shading.
  • Video and animation methods.

 
Course Prerequisites
 
P: CSCI C343 or H343, MATH M301 or M303, or consent of instructor. Familiarity with Unix and C programming experience are highly recommended; you will need to learn C quickly if you do not know it already. We will review the mathematics briefly.

 
Course Objectives
 
B481 is the main course in computer graphics for Computer Science undergraduate students.
 
Interactive graphics is a crucial part of many interfaces and applications. A basic knowledge of computer graphics (CG) is useful for any task that involves a computer. This course concentrates on:
  • fundamental principles of displaying 2D information using computer graphics
  • 3D programming for geometry modeling, transformation, viewing, lighting and shading
  • interactive techniques for real-time computer graphics
  • dynamic scene-graphs APIs and engines for virtual reality (VR)
For the Spring 2009 semester, we also plan to explore By the end of this semester, students should be able to:
  • understand the fundamental stages and mathematical foundation of the 3D polygon projection rendering pipeline
  • develop interactive 2D and 3D graphics applications using OpenGL and OpenGL ES
  • describe the relative advantages and disadvantages of low-, middle-, and high-level computer graphics
  • identify state-of-the-art trends in graphics hardware, display devices, and rendering methods
Additional considerations
 
This is not officially a programming in the large course. However, there will be several coding assignments. You will be writing C code to program OpenGL and OpenGL ES APIs on linux systems in the Burrow, and LSL code for VR programming within Second Life. Any Unix-based systems available in STC labs are also likely adequate for development.
Other programming languages, APIs or OSes will not be considered for assignments submitted for grading.

 
Course Policies
 
All students are required to know and follow Computer Science Department policies on Academic Integrity, dishonesty, and cheating.

 
Selected Topics
 
3D Graphics
  • polygon-projection model-based 3D graphics
  • standard OpenGL API programming
OpenGL ES and 3D graphics programming for mobile devices (new!)
  • Vertex Arrays, Buffer Objects
  • touch-based input, accelerometer events, proximity sensors

 
Readings
 
Textbooks

 
Labs
 
Labs will meet Fridays 1:00PM-2:00PM

 
Exams and Grades
  • Final Exam: 30%
  • Midterm: 20%
  • Coding assignments and projects: 30%
  • Readings, written assignments, in-class presentations: 15%
  • Participation (active class presence and journal note-taking): 5%

 
Weekly Schedule
 
Lecture TR, 1:00PM-2:15PM Lindley Hall 115
Lab F, 1:00PM-2:00PM Lindley Hall 030

 
Course Topics
 
Note: the following outline is a -quite ambitious- superset of what we'll actually have time to cover during the semester. It will be refined as the Spring 2009 semester start approaches.
Study guides for mid-term and final exams will specify which material will be tested, such as amount of details and emphasis on specific topics.
Intro to CG
  • Introduction to Computer Graphics
  • Computer Graphics History and Applications
  • Computer Graphics Hardware and Interactivity
  • Computer Graphics APIs, levels of abstraction
Low-Level Graphics
  • CG hardware
    • raster graphics
    • vector graphics
    • CRT basics
    • LCD, DLP basics
    • raster scan basics
    • GPUs
    • input devices
  • Scan conversions for raster image graphics
    • Pixels and coordinates
    • Lines - Bresenham algorithm, circles, ellipses, polygons
    • Character generation
    • Logic Operations
  • Color
    • Direct color and color index techniques
    • Gamma correction

2D Graphics Concepts
  • Basic drawing and interaction techniques
    • Platform-neutral APIs
    • OpenGL, OpenGL ES, GLUT
  • 2D Analitic Geometry:
    • Axes, points, vectors, lines, curves
    • Functional and parametric forms
    • Interpolation
    • convexity, orientation, inside/outside
  • 2D Coordinate Transformations
    • homogeneous coordinates
    • translation, scaling, rotation
    • matrix representations, inverse transformations
    • window -> viewport  -> screen transformations.
    • scene information,  transformation command sequences
  • 2D Interactive Input Methods
    • Physical input devices
    • Logical input constructs
    • Mouse interaction with graphical objects
    • Interactive picture manipulation techniques, proximity in 2D
  • Clipping
    • line clipping
    • window clipping methods
    • polygon, area and text clipping
  • 2D Image Operations
    • area fills
    • halftoning
    • dithering
    • antialiasing
3D Graphics Concepts
  • Math and Geometry for 3D Graphics
    • 3D vectors, homogeneous coordinates
    • 3D Transformations - Translation, Scaling, Rotation, Reflection, Shear
    • Composite Transformations
  • 3D shape representation
    • 3D surfaces - polygon, curved (Bezier, spline), surface generation methods
  • 3D Projections and Viewing
    • Parallel and Perspective projections
    • Viewing transformations and viewing volume
    • 3D Volume and Polygon Clipping
    • Camera Motion
  • Hidden Surface and Line Removal Methods
  • 3D Pipeline and Mid-level APIs
    • OpenGL
    • Special Effects Buffers
    • API-specific operations
    • GPU-specific operations
Light, Surfaces, Scenes and Animation
  • Modeling Light and Shading
    • light sources and ambient light
    • diffuse and specular reflection, refraction
    • texture and surface patterns
  • Modeling Surfaces and Materials
    • Surface Shading methods and models
    • Constant, Gouraud and Phong methods
    • Ray Tracing
    • Color models
    • Transparency, blending, reflections, shadows
    • texture mapping
  • Shading Language Programming
    • Vertex Processing
    • Fragment Processing
    • OpenGL Shading Language
  • Scene Modeling
    • Scene Graphs and Primitives
    • Complex Object Modeling
    • Animation Methods
  • High-level APIs
    • historical examples: Open Inventor, Performer, VRML, X3D
    • Scene Graph Scripting: LSL (Linden Scripting Language)
Virtual Reality Concepts and Advanced Methods
  • VR Displays
  • 3D Interaction and VR Input Devices
  • VR Audio, Sonification and Sound Programming
  • Haptics
  • VR APIs
    • CAVElib, VRJuggler
  • High-resolution displays
  • Scientific Visualization
  • Augmented Reality
  • Photorealistic Methods

 
 
Mitja Hmeljak 2009