|
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.
|
|
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
- Required: Shreiner, Woo, Neider, Davis: OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 2.1, 6th Edition, Jul 2007 Addison Wesley Professional
- Recommended: Peter Shirley: Fundamentals of Computer Graphics, Second Edition, July 2005 A K Peters
(available online from Books24x7, on campus and off-campus with authorized IU logon)
Munshi, Ginsburg, Shreiner: OpenGL ES 2.0 Programming Guide, Jul 2008 Pearson Education (this book covers only OpenGL ES 2.0, and B481/Spring2009 will more likely focus on OpenGL ES 1.x as available on most currently available devices)
- possible choice, currently still reviewed: Pulli, Aarnio, Miettinen, Roimela, Vaarala: Mobile 3D Graphics with OpenGL ES and M3G, Morgan Kaufmann, 2008 Elsevier
|
|
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%
|
|
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
- Lines - Bresenham algorithm, circles, ellipses, polygons
- Character generation
- Logic Operations
- Color
- Direct color and color index techniques
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
- Hidden Surface and Line Removal Methods
- 3D Pipeline and Mid-level APIs
- 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
- 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
- High-resolution displays
- Scientific Visualization
- Augmented Reality
- Photorealistic Methods
|
|
|