22C:251 Advanced Computer Graphics --- Spring 1998

Note that this course if officially 22C:297. It is a new course that does not yet have the number it should.

MWF 11:30, 205 MacLean Hall

PROFESSORS
Jim Cremer, 101P MLH, Email: cremer@cs.uiowa.edu, Office hours: 2:00-3:00 Mondays, or by appointment
Joe Kearney, 101M MLH, Email: kearney@cs.uiowa.edu, Office hours: TBA, or by appointment


WHAT'S NEW (Last updated Thursday, 2/2/98)



Prerequisites

A previous graphics course, such as 22C:151. Good working familiarity with vectors, matrices, transformations, numerical linear algebra. Basic graphics programming ability (e.g. experience with OpenGL). Undegraduates may register only with permission of the instructor(s).

Textbooks

A. Watt and M. Watt, Advanced Animation and Rendering Techniques: Theory and Practice, Addison Wesley, 1992

Other possibly useful books

Foley, van Dam, Feiner, Hughes Computer Graphics: Principles and Practice, Addison-Wesley, Second edition in C, 1996. This is probably the most famous, the most widely used, and the most comprehensive book on the fundamentals of computer graphics. In some spots, though, it is a bit out of date. It does not use the OpenGL API in its algorithms and code samples. This book will be on reserve in the Mathematical Sciences library.

Hearn and Baker, Computer Graphics, C Version, 2nd Edition, Prentice Hall, 1997.

OpenGL Architecture Review Board, OpenGL Programming Guide, Addison Wesley, 1997.

OpenGL Architecture Review Board, OpenGL Reference Guide, Addison Wesley, 1997.

Kilgard, OpenGL Programming for the X Window System, Addison-Wesley, 1996. This book provides extensive information about using OpenGL within an X Windows-based computing environment. The author is the developer of the GLUT toolkit that many people use to easily put together OpenGL applications. Probably only worth buying if you will do extensive, fairly sophisticated X Windows OpenGL programming. Much of the information in the book can also be obtained via the WWW (a good place to start your search is the
Links to information on OpenGL, Mesa, GLUT, etc. section).


Requirements and grading

Course grades will be based on performance on homework assignments, a substantial semester project(done in groups of 2 or 3 students), and a final exam. more details will be available here at the beginning of the semester The components will be weighted roughly as follows

		Homeworks assignments         20%
		Semester project              60% 
		Final exam                    20%

NOTE:We reserve the right to change any or all of these percentages by 5 percent up or down.

Syllabus and semester schedule

This course will examine several topics in computer graphics in depth. We will spend 2-3 weeks each on topic covering areas such as ray tracing, radiosity, volume rendering, animation, real-time virtual environments, curves and surfaces, texture mapping, and antialiasing.


  PLEASE NOTE:  This schedule is approximate. It will be upated
  to reflect the actual schedule as the semester progresses.

  Week 1 
          1/19 NO CLASS - University holiday 
          1/21 Goals, organization, topics                             Jim/Joe
	       project selection begins
          1/23 Review of transformations, modeling                     Jim
               standard graphics pipeline,
               issues, state of the art
                        
  Week 2  
          1/26  More graphics review - lighting and reflection         Jim
          1/28  Shadows (Ch 5)                                         Jim
          1/30  Shadows (Ch 5)                                         Jim
                PROJECT SELECT, GROUP ORGANIZATION DUE              
   
  Week 3  Ray Tracing
          2/2   Chapter 8                                              Jim
          2/4   Chapter 9                                              Jim 
          2/6   Chapter 10                                             Jim

  Week 4  Radiosity 
          2/9                                                          Jim
          2/11  Chapter 11                                             Jim
          2/13                                                         Jim

  Week 5  2/16  Volume Rendering                                       Jim
          2/18  Volume Rendering                                       Jim
          2/20  Global Illumination (Ch 12)                            Jim
                and Advanced rendering interfaces (Ch 14)               

  Week 6  Mapping - texture, environment (Ch 6), procedural (Ch 7) 
          2/23                                                         Joe
          2/25                                                         Joe 
          2/27                                                         Joe

  Week 7  Project progress report presentations                        students
          3/2  1. Animation I (Keyframe animation)
               2. Volume Rendering
          3/4  1. Radiosity 
               2. Ray tracing
 h         3/6  1. Animation  II (Evolutionary algorithms)
               2. Real-time graphics 
                  
  Week 8  3/9
          3/11 To be announced                                         Jim/Joe
          3/13

  Week 9  (3/16-20)  SPRING BREAK -- NO CLASS

  Week 10 Curves and surfaces (Chapter 3)
          3/23                                                         Jim
          3/25                                                         Joe
          3/27                                                         Joe
 
  Week 11 Curves, surfaces, and modeling (Chapter 3 + more 
          3/30                                                         Joe
          4/1                                                          Joe
          4/3                                                          Joe

  Week 12 4/6
          4/8  Project progress report presentations (2/day)           students
          4/10

  Week 13 Animation
          4/13                                                         Joe
          4/15                                                         Joe
          4/17                                                         Joe

  Week 14 Animation 
          4/20                                                         Joe
          4/22                                                         Joe
          4/24                                                         Joe

  Week 15 Final project presentations
          4/27 Group 1
          4/29 Group 2
          5/1  Group 3
          
  Week 16 Final project presentations
          5/4 Group 4
          5/6 Group 5
          5/8 Group 6

  Thursday, May 14      FINAL EXAM
                        7:00pm, 205 MLH

Programming language, graphics API and toolkits

Program code in lectures will be given in C and OpenGL (and pseudo-code). For homework and programming projects C and C++ with OpenGL are acceptable. Other toolkits and languages may be used when appropriate (upon approval of the instructors).

For developing and maintaining projects with multiple files, the Make program can save a lot of time. However, Makefiles have a peculiar syntax which can be difficult to understand. A good introduction to Makefiles can be found at GNU Make: A Program for Directing Recompilation. The section A Simple Makefile is helpful if you already know the general idea, and just want an example to work from.

The graphics API used for the course is OpenGL. Only the departmental Silicon Graphics machines have a true OpenGL implementation. If you do your work on Hewlett-Packard workstations or on PCs running Linux, you may use Mesa, essentially a free version of OpenGL. Mesa does not match the OpenGL API 100 per cent and is not a "certified" OpenGL implementation, but you can use it as if it were a real OpenGL for the purposes of this course.

The OpenGL API does not deal directly with windowing systems and user interaction. In order to avoid some of the pain and verbosity of X/Motif programming, we will use the GLUT (OpenGL Utility Toolkit). It is a library that provides a simple interface for windowing operations and user interaction. Issues specific to particular windowing systems or operating systems are hidden within the GLUT implementation. Thus, programs written using OpenGL plus GLUT are portable across windowing and operating systems.

NOTE: If you have a strong desire to your programming work under Windows95 or Windows NT with OpenGL, you must arrange it with the instructors at the very beginning of the semester. You will probably not receive nearly as much help or support if you go this route. The instructors have much less experience with Windows or NT graphics programming. (But we do want to have people try things and tell us their experiences!)


Computers available

For implementing homework assignments, the best machines are probably the new Silicon Graphics O2s in B5 MLH. The 16 SGIs in B5 were purchased in Summer 1997 with money from student computing fees.

Room 105 MLH contains a large number (18?) of Hewlett-Packard workstations. You can do your homework on these machines using the Mesa package instead of native OpenGL.

There will be approximately 5 older SGIs in 311 MLH. It is likely that that room will be open only to Computer Science graduate students.


Documenting and submitting programs

For assignments that contain programming components, you must submit via the 'submit' command:

and also turn in hardcopy of:

Important Notes

Your 'submit'ed source code must compile without any modification. If it does not, or if the instructions you give for compilation are incorrect, you may receive a 0 for the assignment.

It is very important that programs be well-written and clear. Clarity, style, organization will be considered in grading programs. Your code should include precise comments where appropriate. On the other hand, avoid the approach of ritualistically filling your code with comments, especially those that are pointless (e.g. "this is a variable declaration") or imprecise (e.g. "this loop goes around and around until it figures out the answer"). Ambiguous or inaccurate comments can be worse than none at all.

Using the 'submit' command

You will use the 'submit' command to submit program code and documentation. The files that you want to turn in should be included in one directory, e.g. 'hw1files'. To submit the directory, execute 'submit hw1files' on one of the CS department's Silicon Graphics or Hewlett Packard workstations. The program will then ask you course you are submitting for. Respond with '22c251'. Then it will request a "Location:". To this, you should respond with the name associated with a particular assignment. The name will be included in the homework assignment (and will typically be something like 'hw1').

Homework Assignments


Group project home pages


Homework and Exam Solutions


Scores and grades


Lecture notes


Where are the Mesa and GLUT libraries and include files?

The Mesa and GLUT libraries and include files can be found in the directory
          /group/class/22c251

NOTE: We might also put PC/Linux files here at some point but we're not promising. (We assume most Linux users can easily get and make this stuff for themselves.)


Links to information on OpenGL, Mesa, GLUT, etc.

You can find a great deal of useful information on OpenGL, GLUT, Mesa, using OpenGL with X and Motif, OpenGL-related publications and documentation, benchmarks, and other related things on Silicon Graphics' OpenGL WWW Center.

Digital Equipment Corp has a nice set of OpenGL Reference Pages, though they're for Version 1.0, not Version 1.1 (which is the latest).

Brian Paul's Mesa 3-D graphics library home page is the place to start for information on Mesa.

Mark Kilgard's GLUT API Reference Pages are the definitive source of information on GLUT (the GL Utility Toolkit).


Possibly useful links.

There is a WWW page with a list of indices of refraction and reflection percentages for a variety of materials. (thanks to N. Brixius for pointing this out)

Course discussion newsgroup

We once had a course newsgroup, uiowa.class.22c-151, for the introductory graphics class, but it was not used much. I'm considering attaching some discussion software to the class homepage. If people think it will be useful, I'll try to do it ...

Late assignment policy

All assignments are due at the beginning of class. Submission of any code and programs via 'submit' must also be executed by the beginning of class. Late assignments turned in within 24 hours will receive a 25% penalty, and those turned more than 24 late will receive a 50% or greater penalty. Assignments will not be accepted more than 48 hours late unless approval is obtained from the instructors before the normal due date. Regrade requests must be made within one week of when the assignments are returned in class.

Academic integrity

Homework and programming assignments, except when explicitly specified otherwise, should be done alone. It is reasonable to discuss general approaches to problem solutions or algorithm design with other students but the bulk of the work must be done alone. Working out details, sharing in the write-up or sharing or copying code will be treated as a violation of the academic integrity rules.