!doctype html public "-//w3c//dtd html 4.0 transitional//en">
Generative Computergrafik
Home | Lehre | Videos | Texte | Vorträge | Software | Person | Impressum, Datenschutzerklärung | Blog
Last edit: 2006-06-26, marked red
Jörn Loviscach
GCG Generative Computergrafik
= DM-310-1 Digital Film Production
Required course for the Diplomstudiengang Medieninformatik
Required option for the bachelor program Digital Media
If you attend this course, please send me an e-mail so that I can compile
a mailing list.
Schedule
Lecture: Wednesday, 9:45-11:15 a.m., I-122
Lab: Wednesday, 8:00-9:30 a.m., I-220
(group A), and 11:30-13:00 a.m. (group B), I-220, no
lab in first week
But see below!
Intended Learning Outcomes
-
Students know fundamental concepts of the 3D animation process and its
support through software.
-
Students can employ basic techniques for modeling, animation, and rendering
in software they develop themselves.
-
Students are able to use selected tool kits such as game engines and the
.fx framework for basic tasks.
-
Students are able to develop (genuinely!) object oriented software consisting
of a several hundred lines of code.
Prerequisites
Linear algebra, analysis, object-oriented programming, basics of real-time
3D programming in one of the standard APIs (OpenGL, Java3D, DirectX, Managed
DirectX)
Lecture
I give the lectures 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. For technical questions, please refer
to the tutors first.
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, the tutors and I 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 that you did not write, draw, etc. on your own has to be clearly
declared as such. In the assignments, you will achieve a better grade
with material you've developed on your own, even though in industrial 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 me
in advance (!) for a special meeting or electronic communication. Notice
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.
According to the regulations, you need to include not only source code
and executable files but also substantial documentation:
-
Objectives (merely my description of the assignment)
-
Requirements (largely contained in my description of the assignment; make
precise where necessary)
-
Software Design (e.g., UML diagrams)
-
Test documentation (What have you tested in which way? Consequences?)
-
User guide and an example application (e.g., commented screen shots)
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'd 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# this 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 grade will be 4.0 (sufficient). If you achieve four points for
every assignment, your grade will be 1.0 (excellent).
For commenting style see "Code Complete 2" or
at least the bullet lists about self-documenting
code and about commenting (free registration
required).
Book and Web Recommendations
-
Roedy Green: How to Write Unmaintainable
Code
-
McConnell: Code Complete 2
-
Freeman, Freeman et al.: Head First Design Patterns
-
Shirley: Fundamentals of Computer Graphics, 2nd Edition
-
Watt/Policarpo: 3D Games Vol. I+II
-
Miller: Managed DirectX 9 Kick Start (somewhat outdated)
-
Brill/Bender: Computergrafik
-
DeLoura et al.: Game Programming Gems I-V
-
Fernando et al.: GPU Programming Gems I+II
-
Engel et al.: ShaderX I-IV
Schedule, Syllabus
Wed 2006-03-15 |
Survey: 3D animation and special F/X in practice; no
lab in first week |
Wed 2006-03-22 |
Subdivision surfaces; lab: assignment 1 |
Wed 2006-03-29 |
Vertex and pixel shaders, HLSL, intro to .fx; lab: assignment 1 (cont'd) |
Wed 2006-04-19 |
Vertex deformations in .fx; lab: assignment 1 (cont'd) |
Wed 2006-04-26 |
Lighting, pixel-based effects in .fx; lab: assignment 2 |
Wed 2006-05-03 |
postponed: 2006-07-04 |
Wed 2006-05-10 |
Bones, IK, morphing; hierarchical animation and soft skinning with DirectX; lab: assignment 2 (cont'd) |
Wed 2006-05-17 |
Frameworks and toolkits: game engines, physics engines; lab: assignment
2 (cont'd) |
Wed 2006-05-24 |
Particles, herds;
lab: assignment 3 |
Wed 2006-05-31 |
Motion capture, non-linear animation; lab: assignment 3 (cont'd) |
Wed 2006-06-07 |
Joystick, Steering Wheel, and other controllers; lab: assignment 3 (cont'd) |
Wed 2006-06-14 |
Ray tracing; lab: assignment 4 |
Wed 2006-06-21 |
Radiosity and friends; lab: assignment 4 (cont'd) |
Wed 2006-06-28 |
Shadows; lab: assignment 4 (cont'd) |
Tue 2006-07-04 |
9:45-11:15, room 119 Current research topics |
Wed 2006-07-05 |
Batch Renderers; post effects, compositing; final lab |