Home | Lehre | Videos | Texte | Vorträge | Software | Person | Impressum, Datenschutzerklärung | Blog RSS last edited: 2006-01-16; edits marked red
Jörn Loviscach

Introduction to Computer Graphics
= ECG Einführung in die Computergrafik
= DM-301-1 Computergrafik

Required subject for the Vordiplom in the program Diplom-Medieninformatik
Required optional subject in the bachelor program Digital Media (6 Credits)

If you attend this course, please send me an e-mail so that I can compile a mailing list.
 

Schedule

Lecture: Thursday, 9:45 - 11:15 a.m., room I-032a
Lab: Wednesday, 9:45 a.m. - 1 p.m. (bi-weekly, groups A, B), lab I-220 or Thursday, 8 - 9:30 a.m. (weekly, group C)
But see below!

Intended Learning Outcomes

Prerequisites

Introduction to Mathematics (MAI) and Introduction to Computer Science (GDI) strongly recommended

Lecture

I'll give the lecture in English with German translations of critical parts. The lecture is in interactive form: I'll try to gain feedback from you. If something is unclear or you have a comment or a tangential question, you don't need to put up your hand. Just ask. If you have suggestions concerning content or form, just let me know. Outside lecture and lab I can best be reached via e-mail.

The day before each lecture, I prepare lecture notes and put them in the corresponding directory beneath this Web page, together with example code. The notes are no work for eternity; I typically focus on content and on didactics rather than on form. According to the regulations, your attendance in the lecture is not required. However, if you don't attend the lecture, you will have a hard time working on the assignments.

Laboratory

The assignments for the lab are both a vital learning method of this course and its sole method of grading. They can (and should) be worked on in teams of two persons. You may work on your own, but not in a team of three or more persons. In the lab, I'll talk with you about your solution, not only to give hints but also to check the contribution of each member of a team.

I recommend that you collect information from everywhere. But I expect everybody to understand the program he or she submits. Furthermore, any material (text, code, images, sounds, etc.) that you did not create on your own has to be clearly declared as such. In the assignments, you will achieve a better grade with self-developed material, although in later business practice you would of course strive to reuse somebody else's work.

Attendance at the lab is compulsory, limited by the typical exemptions such as illness. As an alternative to attend the lab, you may contact the corresponding tutor in advance (!) for a special meeting or electronic communication. Note that most of the work has to be done at home. You may also use the computer graphics lab when there are no classes.

Assignments are to be submitted via e-mail to the tutors, who may also be approached with questions. According to the regulations, you need to include not only source code and executable files, but also substantial documentation:

I prefer to receive documentation in lean HTML (no export from Microsoft® Word®) or PDF. It is ok to use hand-drawn diagrams; you may practice using drawing programs elsewhere. If you cannot do without some kind of word processor, I recommend OpenOffice.org or (even better) some form of LaTeX.

I grade every assignment with zero to three points, and that is the least point number according to the following categories:
 
Points
Solution of Problem
Structure
Naming
Comments
Documentation
0
vital part missing
spaghetti
muddled
virtually no comments
important part(s) missing
1
mostly complete, but for instance erroneous behavior in important exceptional cases
some logical problems, no defensive programming
partially confusing
every class and every non-trivial method explained with comments that are automatically extractable (in the context of C# that means XML)
mostly complete, but for instance not covering important problems or gaps
2
complete up to minor gaps
basically object-oriented, basic defensive programming
comprehensible
in addition: explanations of code that cannot be understood on first linear reading (If there are no difficult-to-read passages in the code, that's even better!); do not comment every single line
virtually complete
3
complete
clean classes built using design patterns; defensive programming; instrumented code
self-explaining
in addition: comments describing vital algorithms in brief
exhaustive

If you achieve three points in every category and if your solution clearly exceeds the original task in features, structure, or documentation, you are awarded four points instead. If you achieve one point for every assignment, your total mark will be 4.0 (sufficient). If you achieve four points for every assignment, your mark will be 1.0 (excellent).

Book and Web Recommendations

Schedule, Syllabus

Thu, 6 Oct Survey: Modeling, Animation, Rendering
Wed, 12 Oct Lab, Groups A: introduction to C#, .NET, Windows Forms, and development environments
Thu, 13 Oct Lab, Groups C: introduction to C#, .NET, Windows Forms, and development environments
Thu, 13 Oct Human visual system, color spaces; bitmap, motion picture, vector graphics, 3D scene, animation, interaction; file formats
Wed, 19 Oct Lab, Groups B: introduction to C#, .NET, Windows Forms, and development environments
Thu, 20 Oct Lab, Groups C: introduction to C#, .NET, Windows Forms, and development environments, cont.
Thu, 20 Oct 2D graphics programming using GDI+ under C#; bitmaps filters and effects
Wed, 26 Oct Lab, Groups A: assignment 1
Thu, 27 Oct Lab, Groups C: assignment 1
Thu, 27 Oct Assert, trace; pointer arithmetics in C#; antialiasing, interpolation
Wed, 2 Nov Lab, Groups B: assignment 1
Thu, 3 Nov Lab, Groups C: assignment 1, cont.
Thu, 3 Nov Hermite curves, Bézier curves; basics of B-Spline and NURBS curves
Wed, 9 Nov Lab, Groups A: assignment 2; deadline: assignment 1
Thu, 10 Nov Lab, Groups C: assignment 2; deadline assignment 1
Thu, 10 Nov Introduction to Managed DirectX; perspective, projection
Wed, 16 Nov Lab, Groups B: assignment 2; deadline: assignment 2
Thu, 17 Nov Lab, Groups C: assignment 2, cont.
Thu, 17 Nov Homogeneous coordinates: projection, composition of 3D transformations, matrices
Wed, 23 Nov Lab, Groups A: assignment 3; deadline: assignment 2
Thu, 24 Nov Lab, Groups C: assignment 3; deadline: assignment 2
Thu, 24 Nov Elimination of hidden surfaces, z buffer; back face culling; double buffering
Wed, 30 Nov Lab, Groups B: assignment 3; deadline: assignment 2
Thu, 1 Dec Lab, Groups C: assignment 3, cont.
Thu, 1 Dec Lighting; diffuse and specular reflection; Gouraud and Phong interpolation; determining the vertex normal
Wed, 7 Dec Lab, Groups A: assignment 4; deadline: assignment 3
Thu, 8 Dec Lab, Groups C: assignment 4; deadline: assignment 3
Thu, 8 Dec 3D modeling, part I: explicit surfaces, parametric primitives, boundary representation, Boolean operations
Wed, 14 Dec Lab, Groups B: assignment 4; deadline: assignment 3
Thu, 15 Dec Lab, Groups C: assignment 4, cont.
Thu, 15 Dec 3D modeling, part II: spline surfaces; subdivision surfaces; metaballs and other implicit surfaces; voxels; points (point-based rendering)
Wed, 21 Dec Lab, Groups A: assignment 5; deadline: assignment 4
Thu, 22 Dec Lab, Groups C: assignment 5; deadline: assignment 4
Thu, 22 Dec Texturing: color, bump, displacement, etc.; types of projection; MIP mapping; alpha blending
Wed, 11 Jan Lab, Groups B: assignment 5; deadline: assignment 4
Thu, 12 Jan Lab, Groups C: assignment 5, cont.
Thu, 12 Jan 3D animation: keyframing, function curves, hierarchical animation; interpolation of rotations
Wed, 18 Jan Lab, Groups A: deadline: assignment 5
Thu, 19 Jan Lab, Groups C: assignment 5, cont.
Thu, 19 Jan 3D animation (continued). Talk and demo on virtual reality: stereoscopy and head-mounted displays, head tracking, OpenGL
Wed, 25 Jan Lab, Groups B: deadline: assignment 5
Thu, 26 Jan Lab, Groups C: deadline: assignment 5
Thu, 26 Jan Outlook: further rendering APIs, rendering techniques