MV 3202: Computer Graphics

Winter 2010 (FY10-2)

Synopsis and Course Goal

This course introduces you to computer graphics, its powerful capabilities, a history of its technologies as well as up-to-date developments, to its far-reaching potentials across the consumer, industrial, and military domains, and how to achieve these potentials.

You will learn about the principles of hardware and software used to create computer-generated images, about basic rendering and raytracing, 3D graphics programming in OpenGL, lighting and shading, textures, and scene graph architectures. MV3202 prepares you to design and implement 3D graphics simulations and to understand the theory of modern graphics rendering. The course is intended for students who have taken a basic course in, or have recent programming experience in, a programming language such as C++ or Java.

Course Learning Outcomes

What tasks do you need to master in order to achieve the overall course goal? Upon successful completion of this course, you will be able to:

Syllabus and Organization

Take a look at the Contents on the following pages to get an idea of the syllabus. Every chapter is a learning module with specific learning objectives, reading and study material, exercises, and graded assignments.

This is a preliminary schedule for the quarter. Reading assignments are from various textbooks, see :
Sh = Shirley,
Red = RedBook.

The reading report is due before class on the following Monday. For example, Sh1 is to be read in the week of 01/05 and the reading report must be in my hands before class on 01/12.







WeekDateModulesTopic Reading Assignments (due date)






1 1/4 0, 1 Introduction to Computer Graphics Sh1, Sh2 1/8: C++ quiz, math quiz, OpenGL Primer 2






2 1/112, 3 Raycasting & Raytracing Sh10 1/15: ray-object intersections






3 1/184 Graphics APIs, OpenGL Red1, Red2 1/22: quiz, primer2 extension; 1/18 is a holiday (MLK’s Birthday)






4 1/255, 6 Transformations, Viewing TransformationsSh6, Sh7, Red3 1/29: quiz






5 2/1 7, 8 Primitives, State, Geometric Modeling Sh17, Red2, Blender2/4: midterm (incl. primitives & state)






6 2/8 9 Scene Graphs & X3D Sh13, TBA






7 2/159 X3D cont., midterm discussion TBA 2/18: X3D scene; 2/15 is a holiday (President’s Day)






8 2/2210, 11 Lighting & Shading Sh9, Red5 2/26: interpolation calculation






9 2/2912 Texture Mapping Sh11, Sh3, Red9 3/5: OpenGL tutorial, X3D textures






10 3/7 13 The Framebuffer RedA TBA, group project






11 3/1514 Advanced Rendering & Capstone TBA Tue is last day of classes, 3/19: final project






Textbook, Web and Data Space

The main course web page (where you found this information) is here:
http://www.movesinstitute.org/~kolsch/courses/MV3202 . There is one required textbook for the course: Shirley’s Fundamentals of Computer Graphics, see the resources . Modules will be posted on Sakai, including up-to-date slides, software, reading and homework assignments, other course material and your grades.

Hours

Lectures and lab:
Tuesday, Wednesday, Thursday 0800-0850, WA-275
lab: Wednesday 1500-1650, WA-275
All time slots will be used for lectures and lab time. Please bring your laptop for every meeting.

Final:
Wednesday 3/17/09, 0800-0850 WA-275

Holidays:
Mon 18 Jan 2008 (MLK’s Birthday),
Mon 15 Feb 2008 (President’s Day)

Office Hours:
I am available for questions and help whenever I am in my office (WA-279) and have some time. If you would like a firm appointment, please don’t hesitate to set one up by email or phone (656-3402).

Grading

Grades for homework assignments etc. will be on Sakai:
35% non-programming homework, incl. reading reports
30% programming homework
15% midterm, quizzes
20% final

Homework, Late Policy, Teamwork etc.

Homework assignments will be posted on or before Mondays and are due the following Thursday at 11:59pm unless otherwise noted. No credit will be given for assignments that are more than 3 days late (Sunday 11:59pm). You can hand in at most one assignment up to 3 days late and still receive full credit. That is: one permitted late assignment for the entire quarter. Additional late assignment will be given a max of 50% credit.

Unless otherwise noted, written assignment can be handed in on a sheet of paper (preferred) or by email. If you email it to me, please make sure your name appears on top of the actual assignment (e.g., in the text file attachment), not just in the email. Programming assignment must be turned in using Sakai file submission. See the respective assignment assignment for the naming convention.

Collaborative work:

Reading Assignments

There will be weekly reading assignments from the textbook and from other reading material. A “reading assignment” requires you to read the material and to write a short, one or two page summary. Demonstrate your understanding of the contents, don’t provide me with a complete recount of the entire text. You are encouraged to add a paragraph in which you critique the reading, note questions that you have or state some other related comment. Print the reports (duplex, please) and bring them to class on the respective due day. If you cannot make it to class, please email them to me prior to class.

Resources

Textbooks and other resources, more or less in order of relevance within a topic (res: on reserve in the library).

Computer graphics in general

  1. Our textbook: Peter Shirley: Fundamentals of Computer Graphics, Third Edition, AK Peters. The book’s web page:
    http://www.cs.utah.edu/~shirley/fcg2/
  2. A classic book about computer graphics: Foley, van Dam, Feiner and Hughes: Computer Graphics: Principles and Practice, Addison Wesley
  3. A great book for advanced CG: Real-Time Rendering, by Tomas Akenine-Möller and Eric Haines,  880 pages, from A.K. Peters Ltd., 2nd edition, ISBN 1568811829, list price $59.
    http://www.realtimerendering.com/
  4. Another book: Interactive Computer Graphics, Edward Angel, 3rd Edition
    http://www.aw-bc.com/info/angel/computergraphics/

OpenGL

  1. res: Shreiner, Dave et al: OpenGL Programming Guide (The Redbook), 6th edition, 2008, ISBN-13 9780321481009. This book will be an essential reference for you and we will have select readings from it.
    http://www.pearsonhighered.com/educator/academic/product/1,3110,0321481003,00.html . The library has the 4th edition on reserve for you. It is also available online in even earlier editions, either here:
    http://fly.cc.fer.hr/~unreal/theredbook/ or with Google: “Redbook OpenGL”)
  2. Perry McDowell wrote up additional documents that closely follow the OpenGL Programming Guide (redbook). They are on Sakaiunder McDowell_OpenGL.
  3. A generic graphics book with a focus on OpenGL: F. S. Hill, Computer Graphics Using OpenGL, Second Edition, Prentice Hall, 2001. ISBN: 0-02-354856-8
    http://vig.prenhall.com/catalog/academic/product/1,4096,0023548568,00.html
  4. OpenGL tutorials: NeHe Productions provides a long list of tutorials, from the very basic to the advanced. They are very helpful.
    http://nehe.gamedev.net/
  5. additional reference for OpenGL: D. Shreiner (ed.), OpenGL Reference Manual: The Official Reference Guide to OpenGL Version 1.4 (the “blue book”), 4th Edition, Addison Wesley, 2004. ISBN: 0-321-17383-X
    http://www.pearsonhighered.com/academic/product/0,3110,032117383X,00.html

Math

  1. A great resource for all things math: Mathworld at
    http://mathworld.wolfram.com/
  2. Matrices and vectors (no geometry): first sections of Gonzalez’ and Woods’ review at
    http://www.imageprocessingplace.com/DIP/dip_downloads/review_materials_students_download/review.zip
  3. One of the classic textbook authors for linear algebra is Gilbert Strang. Probably the most appropriate book is titled “Linear Algebra and Its Applications,” published by Academic Press. His lectures are also available online via MIT’s Open Coure Ware at
    http://ocw.mit.edu/OcwWeb/Mathematics/18-06Spring-2005/VideoLectures/index.htm
  4. A somewhat slow-paced tutorial on Vector Math for 3D Computer Graphics, but it has questions to keep you engaged :-)
    http://chortle.ccsu.ctstateu.edu/VectorLessons/vectorIndex.html

Modeling and animation

  1. Blender (at http://www.blender.org/ ), the open source modeling and animation tool. Start with the brief introduction blender.html, then print the BlenderQuickStart.pdf guide. Both files are in your
    C:\Program Files\Blender Foundation\Blender
    directory after installation.
  2. A good tutorial explains the basics of modeling and animation in Blender is here:
    http://download.blender.org/documentation/htmlI/ch04.html
  3. osgexport http://projects.blender.org/projects/osgexport/ is an exporter from Blender to OpenSceneGraph (.osg) files. You need to put the python script (.py file) into your .blender/scripts directory.
  4. Cal3d http://cal3d.sourceforge.net/ is a skeletal based 3d character animation library. You can render Cal3d objects in OpenSceneGraph with osgCal2 http://osgcal.sourceforge.net/ .

Scene Graphs, including X3D and OpenSceneGraph

  1. Joe Sullivan’s OSG Tutorials are here:
    http://www.nps.navy.mil/cs/sullivan/osgtutorials/
  2. OSG training slides and examples from the creators of OSG are available from me upon request.
  3. For programming OSG, you will invariably need the reference guide (On their web page, DocumentationReferenceGuidesOsgDoxygen, or without frames:
    http://www.openscenegraph.org/osgwiki/pmwiki.php/ReferenceGuides/Osg
  4. OSGEdit http://osgedit.sourceforge.net/ allows viewing and editing of OSG scene graphs in a graphical format. (If installing on Fedora, use “./configure –disable-gnome-support”.)

C/C++ and Programming

  1. Essential reference: The C Programming Language by Kernighan and Ritchie:
    http://cm.bell-labs.com/cm/cs/cbook/
  2. Students seem to like these books (free for download): How to Think Like a Computer Scientist, from Green Tea Press, at
    http://greenteapress.com/
  3. An introduction into programming, exemplified on computer graphics:
    http://www.alice.org

Miscellaneous references

  1. A good introduction to Nvidia’s Cg and an extensive look at the graphics pipeline: Chapter 1 of nVidia’s Cg Tutorial, at
    http://developer.nvidia.com/object/cg_tutorial_home.html

Contents

Introduction to the Course
 Synopsis and Course Goal
 Course Learning Outcomes
 Syllabus and Organization
 Textbook, Web and Data Space
 Hours
 Grading
 Homework, Late Policy, Teamwork etc.
 Reading Assignments
 Resources
Contents
0 Administrativa
1 Introduction to Computer Graphics
 1.4 Installing GLUT
  1.4.1 GLUT on Linux
  1.4.2 GLUT on Windows
 1.5 Why Computer Graphics?
2 Raycasting
3 Raytracing
4 OpenGL Intro
5 Transformations
 5.4 Transformation Classes and Properties
 5.5 Quaternions
6 Viewing Transformations
7 OpenGL Primitives and Related State
8 Geometric Modeling
  8.2.1 Wings3D
  8.2.2 Blender
9 Scene Graphs
 9.1 Objectives
 9.4 X3D
  9.4.1 HTML Embedding X3D Graphics
 9.5 OpenSceneGraph
10 Lighting
  10.2.1 Typical OpenGL Calls
11 Shading
  11.2.1 Hardware Shaders
12 Texture Mapping
 12.2 Reading and Content
 12.3 Texturing in Wings3D
 12.4 Texture Repositories and Libraries
13 Fragment Operations, Framebuffer and Pipeline
14 Capstone