MV 3202: Computer Graphics

Winter 2008 (FY08-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/07 and the reading report must be in my hands before class on 01/14.







WeekDateModulesTopic Reading Assignments (due date)






1 1/7 0, 1 Introduction to Computer Graphics Sh1, Sh2 1/10: survey, C++ quiz, math quiz, OpenGL Primer 2






2 1/142, 3 Raycasting & Raytracing Sh10 1/17: ray-object intersections






3 1/214 Graphics APIs, OpenGL Red1, Red2 1/24: quiz, primer2 extension; 1/21 is a holiday






4 1/285, 6 Transformations, Viewing TransformationsSh6, Sh7, Red3 1/31: quiz






5 2/4 7, 8 Primitives, State, Geometric Modeling Sh17, Red2, Blender2/7: primitives, create model






6 2/119 Scene Graphs & X3D Sh13, TBA 2/13: midterm (incl. scenegraphs, excl. X3D)






7 2/189 X3D cont., midterm discussion TBA 2/20: X3D scene; 2/18 is a holiday






8 2/2510, 11 Lighting & Shading Sh9, Red5 2/28: interpolation calculation






9 3/3 12 Texture Mapping Sh11, Sh3, Red9 3/7: OpenGL tutorial, X3D textures






10 3/1013 The Framebuffer RedA TBA, group project






11 3/1714 Advanced Rendering & Capstone TBA 3/20: group project






12 3/24 Final Exam 3/27 (Thursday) 0800-0950, WA-285






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 . Modules will be posted on Blackboard, including reading and homework assignments. Grades will also be made available on Blackboard. Up-to-date slides, software and other course material can be found at this internal file share:
\\comfort.ern.nps.edu\MV3202$

Hours

Lectures and lab:
Monday, Tuesday, Wednesday 1300-1350, WA-285
lab: Friday 1300-1450, WA-285
These two time slots will be used for lectures and/or lab time. Please bring your laptop for every meeting.

Final:
Thursday 03/27/08, 0800-0950 WA-285

Holidays:
Mon 21 Jan 2008 (MLK’s Birthday),
Mon 18 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 Blackboard:
35% non-programming homework, incl. reading reports
30% programming homework
15% midterm and 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 Blackboard’s Digital Dropbox. 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, Second 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) - please use them freely:
    \\comfort.ern.nps.edu\MV3202\material\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.
  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/

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
  2. a database of texture images:
    http://vismod.media.mit.edu/vismod/imagery/VisionTexture/vistex.html

Instructor

Mathias Kölsch, Assistant Professor, Computer Science Department

Office hours: whenever I'm in the office, or by email appointment.
Questions? Please don't hesitate to contact me!