Home | Lehre | Videos | Texte | Vorträge | Software | Person | Impressum, Datenschutzerklärung |
Last update 2007-07-11, latest changes marked in red
Computer
Graphics
Required
optional subject for the bachelor's program Medienformatik
Optional
subject for the bachelor's program Digitale Medien
6 credits
Summer semester 2007
Lecture:
Thu 3.15 – 4:45 p.m., I117, starting March 22nd
Lab
(mandatory): Thu 9:45 a.m. – 1 p.m., I220, every 14 days in two
interleaved groups A and B
Tutorial (optional): Thu 5 – 6:30
p.m., I117 or I220, every 14 days in two interleaved groups A and
B
See below for the detailed schedule.
If you plan to attend this course, please send me (Jörn Loviscach) an e-mail so that I can compile a mailing list. Excellent students may use this course to prepare a poster for a scientific conference. Please contact me in advance if you want to do so.
Syllabus: This course presents an overview of basic algorithms and methods in the field of computer graphics (GUIs, 2D, 3D, animation), presented in their current implementations as mirrored in APIs, development tools, and application software. Secondary objectives of this course are to deepen the students' understanding of what constitutes good software design and to improve their skills in debugging. The lectures will be given in English with a translation of more complex parts into German.
Prerequisites: foundations of analysis and linear algebra; basic software development skills in a language such as Java (programs involving five or more proprietary classes, file I/O, and threads)
Lecture notes: available online the day before the lecture, see the folder next to this HTML page
Recommended books: There is enough free material on the Web. If you look for a comprehensive book, try out Shirley et al.: Fundamentals of Computer Graphics, Second Edition, ISBN 1-56881-269-8 (the best book I know on this topic) and Brill & Bender: Computergrafik, ISBN 3-446-22150-6. For questions concerning programming style consider McConnell: Code Complete 2, ISBN 0735619670.
Lab: 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 or more. 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. 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, even though in later business and research practice you would of course strive to reuse somebody else's work.
Attendance to the lab is mandatory, with the typical exemptions such as illness. Note that most of the work has to be done at home nonetheless (6 credits = 180 hours of work). You may also use the computer graphics lab when there are no classes.
Assignments are to be submitted via e-mail. According to the regulations, you need to include source code and executable files plus substantial documentation:
Objectives (merely my description of the assignment)
Requirements (formulate precisely how the software has to behave)
Software Design (e.g., diagrams about classes or processes)
Test documentation (What are points to be tested intensively? What did you test in which way? Consequences?)
User guide and an example application (e.g., commented screen shots)
I prefer to receive the documentation in lean HTML 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'll grade every assignment with zero to three points, namely the lowest point number resulting from 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 (e.g., asserts, exceptions, log files) |
self-explanatory |
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). The results of the three assignments will enter the final grade with weights of 20%, 40%, and 40%, respectively.
Schedule
Thu, 15 Mar |
I'm off to meetings at CeBIT. To compensate for that, there are an additional final lecture and lab instead, see below. |
Thu, 22 Mar |
Lab A: introduction to C#, .NET, Windows Forms, and Visual Studio .NET |
Thu, 22 Mar |
Visual Computing in a nutshell: GUIs, image manipulation/processing, 2D vector graphics, modeling, animation, behavior, rendering (z-buffer, ray tracing, etc); human visual system; color spaces |
Thu, 22 Mar |
Tutorial B: modeling with Cinema 4D |
Thu, 29 Mar |
Lab, B: introduction to C#, .NET, Windows Forms, and Visual Studio .NET |
Thu, 29 Mar |
Event-driven programming in Second Life and in .NET; 2D graphics programming with GDI+ in .NET; double buffering |
Thu, 29 Mar |
Tutorial A: modeling with Cinema 4D |
Thu, 19 Apr |
Lab A: Assignment 1 (Event-driven programming) |
Thu, 19 Apr |
Vector graphics; Bézier curves, B-spline curves; file formats (EPS, PDF, SVG, Flash, XPS a.k.a. Metro) |
Thu, 19 Apr |
Tutorial B: modeling with Maya |
Thu, 26 Apr |
Lab B: Assignment 1 (Event-driven programming) |
Thu, 26 Apr |
Bitmap graphics; developing Paint.NET plug-ins; antialiasing, interpolation |
Thu, 26 Apr |
Tutorial A: modeling with Maya |
Thu, 3 May |
Lab, Groups A: Assignment 2 (Bitmap Filter); Assignment 1 due |
Thu, 3 May |
Introduction to XNA Game Studio and the Xbox 360 |
Thu, 3 May |
Tutorial B: modeling with Blender |
Thu, 10 May |
Lab, Groups B: Assignment 2 (Bitmap Filter); Assignment 1 due |
Thu, 10 May |
Data flow on a GPU; z-buffer; using pre-built shader programs; Linear perspective, homogeneous coordinates, composition of transformations, matrices |
Thu, 10 May |
Tutorial A: modeling with Blender |
Thu, 17 May |
Legal holiday |
Thu, 24 May |
Lab, Groups A: Assignment 2 cont'd |
Thu, 24 May |
Lighting; diffuse and specular reflection; normals; Gouraud and Phong interpolation |
Thu, 24 May |
Tutorial B: texturing with BodyPaint 3D |
Thu, 31 May |
Lab, Groups B: Assignment 2 cont'd |
Thu, 31 May |
3D modeling: explicit surfaces, parametric primitives, representation via vertex and index buffers, Boolean operations |
Thu, 31 May |
Tutorial A: texturing with BodyPaint 3D |
Thu, 7 Jun |
Lab, Groups A: Assignment 3 (3D); Assignment 2 due |
Thu, 7 Jun |
3D modeling (cont'd): spline surfaces; subdivision surfaces; metaballs and other implicit surfaces; voxels; points (point-based rendering) |
Thu, 7 Jun |
Tutorial B: animation with Cinema 4D |
Thu, 14 Jun |
Lab, Groups B:Assignment 3 (3D); Assignment 2 due |
Thu, 14 Jun |
Texturing: color, bump, displacement, etc.; uv editing; MIP mapping; alpha blending |
Thu, 14 Jun |
Tutorial A: animation with Cinema 4D |
Thu, 21 Jun |
Lab, Groups A: Assignment 3 cont'd |
Thu, 21 Jun |
3D animation: keyframing, function curves, procedural/behavioral animation |
Thu, 21 Jun |
Tutorial B: animation with Maya |
Thu, 28 Jun |
Lab, Groups B: Assignment 3 cont'd |
Thu, 28 Jun |
1 p.m., room 122: 3D animation (cont'd): hierarchical animation, inverse kinematics |
Thu, 28 Jun |
|
Thu, 5 Jul |
Lab,
Groups A |
Thu, 5 Jul |
Other 3D rendering APIs; global illumination effects (shadow mapping, ray tracing, radiosity and friends) |
Thu, 5 Jul |
Tutorial
A+B: animation with |
Thu, 12 Jul |
4 - 5:30 p.m., room 117 Outlook: Hot topics in research |
Sun, 15 Jul |
Assignment 3 due |