Home | Lehre | Videos | Texte | Vorträge | Software | Person | Impressum, Datenschutzerklärung | Blog RSS Jörn Loviscach

Generative Computergrafik 2

"Generative Computergrafik" ist eine Pflichtveranstaltung des Medieninformatik-Studiums. Das erste Semester zählt zum Grundstudium (Grundlagen der Computergrafik), das aktuelle zweite Semester zum Hauptstudium (3D-Grafik und -Animation).

Alle letzten Änderungen dieser Webseite sind durch rote Schrift gekennzeichnet!
letzte Änderung: 22. Juni 2001
 

Ziel

Diese Veranstaltung soll die grundlegenden Algorithmen und die in der aktuellen Praxis benutzten Verfahren vermitteln, die für grafische Bedienoberflächen, Grafikdesign, Animationsfilm und nicht zuletzt auch für Spiele eingesetzt werden. Zentraler Punkt in diesem Semester ist dabei die 3D-Programmierung für Design- wie auch für Echtzeitanwendungen.
 

Prüfungsleistungen

Der Laborteil (Prüfungsordnung: "praktische Entwicklungsarbeit") ergibt eine Note für das Diplomzeugnis. Die Laboraufgaben prüfen den Inhalt der Vorlesung; eine Klausur findet nicht statt.
 

Unterrichtsform

Die Vorlesung ist seminaristisch; ich werde also versuchen, den Stoff im Gespräch mit Ihnen zu erarbeiten. Wenn Sie nicht folgen können, bremsen Sie mich sofort, indem Sie nachfragen. Das ist eine strikte Anweisung an Sie, keine freundliche Empfehlung. Sie können davon ausgehen, dass andere Studenten dieselben Probleme haben -- das aber nicht kundtun. Um eine Frage zu stellen, müssen Sie sich nicht mit Handzeichen melden. Unterbrechen Sie mich einfach bei der nächstmöglichen Gelegenheit.
 

Skript

Meine Unterlagen scanne ich ein und stelle sie zum Download bereit. Ich hoffe, meine Schrift ist halbwegs lesbar; ansonsten melden Sie sich bitte zwecks Entzifferung. Die Seiten etwa mit pdfTeX und einem Grafikprogramm sauber aufzubereiten, würde mich mehrere Stunden pro Vorlesung kosten. Diese Zeit möchte ich lieber dazu benutzen, an der Didaktik zu arbeiten.

Eingeschobene Seiten sind nach dem Muster 10, 10a, 10b, 11 nummeriert. Ändere ich Skripte im Nachhinein z.B. wegen Fehlern, stelle ich zusätzlich eine kommentierende HTML-Datei in das jeweilige Verzeichnis. Mangels Zeit ausgelassene Stellen markiere ich mit einer Wellenlinie am rechten Rand. Diese Stellen sollten Sie zwar zur Kenntnis nehmen, Teil von Prüfungen sind sie aber nicht.
 

Labor

Im Laborteil soll Java 2 Plattform benutzt werden, z.B. pur mit Emacs oder mit grafischen Entwicklungsoberflächen wie Borland JBuilder oder Sun Forte for Java. Andere Systeme werden nicht vorausgesetzt, weil im Grundstudium nur Java, aber nicht C++ gelehrt wurde. Bei Nachweis entsprechender Vorkenntnisse lasse ich aber im Laborteil auch C++ mit Klassenbibliotheken wie MFC oder Qt zu.

Es ist sinnvoll, dass Sie den Laborteil in Zweiergruppen absolvieren. Einer"gruppen" lasse ich zwar zu; die Anforderungen bleiben aber dieselben.

Die Anwesenheit bei den Laborterminen ist verpflichtend, außer:

Bei fortgesetzter unentschuldigter Abwesenheit muss ich Ihre Leistung im Laborteil mit der Note 5,0 beurteilen. Wegen erlaubter Abwesenheit nicht erbrachte Leistungen sind schnellstmöglich nachzuholen.

Der Laborteil dient sowohl dem Lernen als auch der Bewertung -- zwei Ziele, die sich oft beißen. Deshalb möchte ich das eine so weit wie möglich von dem anderen trennen. Und zwar auf folgende Weise:

Durchführung ohne Bewertung. Ich stehen Ihnen bis zum nächsten Labortermin (s. nächster Punkt) für Fragen zur Verfügung, auch per E-Mail. Ich werde aber darauf achten, Ihnen nur Denkanstöße z.B. zur Fehlersuche zu geben, keinesfalls fertige Lösungen. Um von dem Laborteil zu profitieren, sollten Sie keine fremden Programme abkupfern. Weil Sie diese im Zweifelsfall nicht so gut verstehen wie ihre selbstgeschriebenen, bringt Ihnen das auch bei der Benotung Nachteile.

Bewertung des Resultats. Spätestens beim nächsten Labortermin (also im Normalfall nach 14 Tagen) muss die Gruppe ihr Programm gemäß Aufgabenstellung vorlegen. Die laut Prüfungsordnung geforderte Dokumentation ist Teil des Programms, wie sich aus dem Folgenden ergibt. Für das Programm vergebe ich 0 bis 3 Punkte, und zwar die kleinste Punktzahl aus den vier Kategorien folgender Tabelle:
 

Punktzahl Problemlösung Strukturierung/Klassen Wahl der Bezeichner Kommentierung
0 wesentlicher Teil fehlt konfus konfus praktisch nicht vorhanden
1 weitgehend, aber z.B. wichtige Ausnahmefälle nicht behandelt teilweise logische Mängel teilweise verwirrend Das Programm ist seine eigene Dokumentation. Jede Klasse und jede Methode enthält eine Beschreibung des Algorithmus und wichtiger Variablen (ca. 100 Wörter für die Hauptklasse bis hinab zu ca. 10 Wörtern für eine wichtige Methode einer Hilfsklasse).
2 praktisch vollständig logisch verständlich Zusätzlich: Alle kritischen Stellen sind kommentiert
3 vollständig stark modular, leicht zu erweitern und anzupassen selbsterklärend Zusätzlich: Alle nicht auf den ersten Blick einleuchtenden Stellen sind kommentiert.

Ergeben sich in allen Kategorien 3 Punkte und geht das Programm deutlich über die Aufgabenstellung hinaus, indem es z.B. in größerem Rahmen Java Swing, Java-Objektmodell oder Exceptions nutzt, vergebe ich 4 Punkte für das Programm.

Außerdem stelle ich Fragen an jedes Gruppenmitglied, um festzustellen, inwieweit es das Programm verstanden hat. Auch das bewerte ich mit Punkten:

Von diesen beiden Punktwertungen pro Teilnehmer und Aufgabe verwende ich die jeweils kleinere und bilde daraus zum Schluss die Gesamtnote des Laborteils. Wer bei jeder Aufgabe exakt einen Punkt erzielt, besteht den Laborteil mit der Note 4,0 (sofern unentschuldigte Abwesenheit oder mangelhafte Vorbereitung etc. dem nicht entgegenstehen).
 

Literatur

Das Standardwerk ist immer noch Foley u.a.: "Computer Graphics", ISBN 0-201-84840-6. Es beschreibt zwar Stiftplotter und kennt kein OpenGL; aber dafür kann man sich inzwischen auf die Formeln des immer wieder korrigierten Werks (zwölfte Auflage!) weitgehend verlassen. Für andere Bücher über Computergrafik gilt das nicht so unbedingt ...

Gerade zum Thema Computergrafik kann man sich kostenlos im Web informieren: einfach den Namen des Algorithmus in eine Suchmaschine eintippen. Am zuverlässigsten sind die einschlägigen Kurse von US-Universitäten. Quellen für Algorithmen sowie für aktuelle Nachrichten aus der Spiele-Entwicklerszene sind flipCode, Gamasutra und GameDev.net.
 

Dokumentationen

.

Raum und Zeit

Mittwoch 3. Doppelstunde E407, Labor: jeden zweiten Donnerstag 2. und 3. Doppelstunde E306
 

Termine.

14..Mär Mi globale Beleuchtung: stochastisches Raytracing (Distribution Raytracing), Backward Raytracing (Photon Tracing), Radiosity-Grundlagen
15. Mär Do Labor, Gruppen A: Raytracer
21. Mär Mi Texturierung, Teil 1: Farbe, Bump, Displacement etc.; Projektionsarten (plan, zylindrisch, sphärisch, Wrap, UV)
22. Mär Do Labor, Gruppen B: Raytracer
28. Mär Mi Texturierung, Teil 2: trilineare Interpolation, SAT, MIP-Map; Grundlagen prozeduraler Texturen
29. Mär Do Labor, Gruppen A: Textur-Projektion, prozedurale Texturen
18. Apr Mi Texturierung, Teil 3: Fortsetzung prozedurale Texturen; Perlin-Noise; Hypertexturen
19. Apr Do Labor, Gruppen B: Textur-Projektion, prozedurale Texturen
25. Apr Mi Modellierung, Teil 1: explizite Flächen f(x,y), parametrische Grundkörper, Boundary Representation, Boolesche Operationen (CSG), Metaballs, implizite Flächen (Marching Cubes), 3D-Scan
26. Apr Do Labor, Gruppen A: (Fortsetzung)
02. Mai Mi Modellierung, Teil 2: NURBS-Flächen, relationale Modellierung, Subdivision Surfaces
03. Mai Do Labor, Gruppen B: (Fortsetzung)
09. Mai Mi Zehnjahresfeier Technische Informatik
10. Mai Do Labor, Gruppen A: (Fortsetzung)
16. Mai Mi Animation, Teil 1: Interpolation von Position, Lage, Größe und anderen Parametern, Keyframes, Objekt-Hierarchien; natürliche Interpolation von Drehungen
17. Mai Do Labor, Gruppen B: (Fortsetzung)
28. Mai Mo Terminänderung, 3. Block, E404 Animation, Teil 2: Physik (Rigid Body Dynamics, Soft Body Dynamics, Collision Detection, Partikel, Cloth), prozedurale Animation (Expressions)
30. Mai Mi Animation, Teil 3: Motion Capture, Motion Tracking, Morphing, Bones, Inverse Kinematik, Non-Linear Animation
31. Mai Do Labor, Gruppen A: Subdivision Surfaces
06. Jun Mi Echtzeit-Rendering, Teil 1: Rendering-Pipeline, Immediate/Retained Mode, Double Buffering; OpenGL-Grundlagen
07. Jun Do Labor, Gruppen B: Subdivision Surfaces
13. Jun Mi Echtzeit-Rendering, Teil 2: OpenGL-Details: Display-Listen, Vertex-Arrays, Texturen, Select-Rendermodus
14. Jun Do Labor, Gruppen A: Keyframe-Animation
20. Jun Mi Echtzeit-Rendering, Teil 3: DirectX, Java3D und OpenInventor im Überblick
21. Jun Do Labor, Gruppen B: Keyframe-Animation
27. Jun Mi 3D-Dateiformate: DXF, VRML, MPEG-4, 3DS, RIB, "Web3D"
28. Jun Do Labor, Gruppen A: OpenGL
04. Jul Mi Post-Processing-Effekte: Halo, Blendenflecke, Bewegungsunschärfe, Tiefenunschärfe
05. Jul Do Labor, Gruppen B: OpenGL
.