Home | Lehre | Videos | Texte | Vorträge | Software | Person | Impressum, Datenschutzerklärung | Blog RSS letzte Änderung am 2003-01-19, im Text gekennzeichnet durch rote Schrift
Jörn Loviscach

ECG Einführung in die Computergrafik
alias DM-301-1 Computergrafik

!Abweichungen siehe unten
Vorlesung: Montag, 15.15-16.45 Uhr, Raum I122
Labor: Dienstag 14-täglich, 8.00-11.15 Uhr, Raum I220

Pflichtfach für das Vordiplom im Diplomstudiengang Medieninformatik
Wahlpflichtmodul für den Bachelor-Studiengang Digitale Medien

Lernziele

Voraussetzungen

Diplomstudiengang Medieninformatik: bestandene Prüfungen in MAI 1 und GDI dringend empfohlen
Bachelor-Studiengang Digitale Medien: DM-101-1 und DM-103-1 erfolgreich absolviert

Prüfungsleistungen

Mit Hilfe der Software-Entwicklungsarbeit im Laborteil sollen die Studierenden ihr Verständnis vertiefen und gleichzeitig unter Beweis stellen.

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.

Sollten Fragen außerhalb von Vorlesung oder Labor auftreten, mailen Sie mich einfach an. Meine Reaktionszeit beträgt typischerweise nur wenige Stunden, auch am Wochenende. Wenn Sie Wünsche oder Ideen zu Inhalt und Ablauf haben, lassen Sie es mich wissen.

Die Anwesenheit in der Vorlesung ist gemäß der Prüfungsordnung nicht verpflichtend, im Unterschied zur Anwesenheit beim Labor. Allerdings habe ich in den vergangenen Semestern Folgendes festgestellt: Wer sich an den Laboraufgaben versucht, ohne die Vorlesung zu hören, muss ein Vielfaches an Zeit investieren.

Skript

Meine Unterlagen scanne ich ein und stelle sie ebenso wie vorgeführte Beispielprogramme zum Download bereit. (Anmerkung: 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, mit Ihnen und am Inhalt zu arbeiten.) Eingeschobene Seiten sind nach dem Muster 10, 10a, 10b, 11 nummeriert. Ändere ich Skripte im Nachhinein, insbesondere wegen Fehlern, stelle ich zusätzlich eine kommentierende Datei changes.html in das jeweilige Verzeichnis.

Labor: Formales

Die Aufgaben können und sollen (nicht zuletzt aufgrund der Teilnehmerzahl) in Zweiergruppen bearbeitet werden. Einzelarbeit ist möglich; aber ich werde keine Abstriche bei den Anforderungen machen. Ich werde Sie im Labor interviewen, um festzustellen, ob die Einzelleistung der Gruppenleistung entspricht. Gruppen mit drei oder mehr Teilnehmern sind nicht möglich.

Ich ermuntere Sie ausdrücklich, sich zur Aufgabenlösung umfassend zu informieren und auszutauschen (Kommilitionen, Internet, Bücher etc.). Aber ich erwarte, dass jede(r) seine Lösung versteht. Das werde ich durch Nachfragen prüfen. Selbstverständlich: Fremdes Material in Programmen oder Dokumentationen ist deutlich als solches zu deklarieren; alles andere wäre ein Betrugsversuch.

Die erste Aufgabe (Das erste Windows®-Programm) dient zur Probe; ich rechne sie nicht in die Note ein. Wer die zweite Aufgabe abgibt, meldet sich damit verbindlich an. Er/sie erhält auf jeden Fall am Semesterende eine Note, sonst niemand. Haben Sie sich angemeldet, ist die Anwesenheit bei den Laborterminen für Sie 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. Die Abgabefristen für jede Aufgabe einschließlich der Dokumentation (s.u.) ergeben sich aus der Terminliste unten. Verspätete Abgabe führt zu Punktabzug.

Sonderlösung: Wegen der stark verschiedenen Ausgangslage bei Mathematik und Informatik biete ich für Teilnehmer(inn)en mit fortgeschrittenen Kenntnissen an, nach Absprache statt der diversen kleinen Aufgaben eine einzige große Aufgabe von entsprechendem Gesamtumfang zu bearbeiten, welche die Themen der Vorlesung abdeckt. Beispiele:

Labor: Aufgaben

Jeder Labortermin soll dazu dienen, dass Sie zum einen mir ihre Lösung der jeweils alten Aufgabe präsentieren (ich stelle Ihnen Fragen dazu) und zum anderen mit der nächsten Aufgabe beginnen. Ich erwarte, dass Sie einen Großteil der Arbeit in den 14 Tagen zwischen den Laborterminen erledigen. Bei Problemen mailen Sie mich an. Die Fragen, die Sie mir stellen, haben keinen Einfluss auf die Benotung. Ich werde aber darauf achten, Ihnen nur Denkanstöße z.B. zur Fehlersuche zu geben, keinesfalls fertige Lösungen.

Weil Windows®-Programmierung im Zentrum steht, liegt die Arbeit mit der Entwicklungsumgebung Microsoft® Visual C++® 6.0 (im Labor installiert) oder deren neuer .NET-Version nahe. Zur Arbeit außerhalb des Labors können Sie die relativ günstige Studentenversion benutzen oder (noch preiswerter) die in einigen Büchern klebende Autorenedition (z.B. in "Jetzt lerne ich Visual C++ 6", 24,95 Euro, ISBN 3-8272-5519-8, so lange noch nicht vergriffen). Weil ich nicht auf die Programmierung mit der MFC-Klassenbibliothek eingehen will, können Sie auch das kostenlose Dev-C++ benutzen.

Für die Aufgaben ist gemäß der Prüfungsordnungen nicht nur der Quellcode abzugeben, sondern eine komplette Dokumentation, also zusätzlich:

Die Dokumentation verfassen Sie als schlankes HTML, ggf. mit eingescannten Handzeichnungen; bitte nur eine elektronische Version ohne Papierausdruck. Microsoft® Word® missbillige ich ausdrücklich. Wenn Sie unbedingt ein monströses Textverarbeitungsprogramm benutzen müssen, nehmen Sie das kostenlose OpenOffice.org.

Labor: Bewertung

Für jede Aufgabe vergebe ich 0 bis 3 Punkte, und zwar die kleinste Punktzahl aus den Kategorien folgender Tabelle:
 
Punkte Problemlösung Struktur Bezeichner Kommentare Dokumentation
0 wesentlicher Teil fehlt konfus konfus praktisch nicht vorhanden wesentlicher Teil fehlt
1 weitgehend, aber z.B. wichtige Ausnahmefälle nicht oder unkorrekt behandelt teilweise logische Mängel teilweise verwirrend jede Klasse und jede nichttriviale Methode erklärt weitgehend, aber z.B. wichtige Ausnahmefälle nicht behandelt
2 praktisch vollständig logisch verständlich zusätzlich: alle kritischen Stellen kommentiert. praktisch vollständig
3 vollständig modular, leicht erweiterbar selbsterklärend zusätzlich: alle nicht auf den ersten Blick einleuchtenden Stellen kommentiert. vollständig

Ergeben sich in allen Kategorien drei Punkte und geht das Programm deutlich über die Aufgabenstellung hinaus, indem es z.B. eine erweiterte Funktionalität bereitstellt, etwa Exceptions oder überladene Operatoren sinnvoll nutzt oder gestalterisch hochwertig dokumentiert ist, vergebe ich vier Punkte.

Wer bei jeder Aufgabe exakt einen Punkt erzielt, besteht den Laborteil mit der Note 4,0.

Literaturtipps

Material im Web

Termine

07.10. Mo verlegt auf 14.10, damit Blockbildung
08.10. Di Labor, Gruppen A: Einführung in C++ und die Entwicklungsumgebung
14.10. Mo zusätzlich 13.30-15.00: Ereignisgesteuerte Programmierung und grafische Oberflächen am Beispiel von Windows®
14.10. Mo Beispiel von 2D-Grafikschnittstellen: Windows®-GDI, PostScript®
15.10. Di Labor, Gruppen B: Einführung in C++ und die Entwicklungsumgebung
21.10. Mo verlegt auf 28.10, damit Blockbildung 
22.10. Di Labor, Gruppen A: Das erste Windows®-Programm
28.10. Mo zusätzlich 13.30-15.00: Bitmapbild, Vektorgrafik, 3D-Szene, Zeitablauf; optische Wahrnehmung, Farbmodelle
28.10. Mo Filter und Effekte auf Bitmap-Basis
29.10. Di Labor, Gruppen B: Das erste Windows®-Programm 
04.11. Mo verlegt auf 11.11, damit Blockbildung
05.11. Di Labor, Gruppen A: Bitmap-Effekt; Abgabe "Das erste Windows®-Programm"
11.11. Mo zusätzlich 13.30-15.00: Antialiasing, Interpolation
11.11. Mo Hermite-Kurven, Bézier-Kurven und ihre Wiedergabe; Grundlagen von B-Spline- und NURBS-Kurven
12.11. Di Labor, Gruppen B: Bitmap-Effekt; Abgabe "Das erste Windows®-Programm"
18.11. Mo 2D-Grafik mit OpenGL®; Perspektive, Projektionsarten
19.11. Di Labor, Gruppen A: Kurven; Abgabe "Bitmap-Effekt"
25.11. Mo schon um 13.30, I-122: homogene Koordinaten: Projektionsformeln, Verkettung von 3D-Transformationen, 3D-Grafik mit OpenGL®, Modelview- und Projection-Matrix
26.11. Di Labor, Gruppen B: Kurven; Abgabe "Bitmap-Effekt"
02.12. Mo z-Sortierung; z-Buffer; Backface Culling
03.12. Di Labor, Gruppen A: Perspektive; Abgabe "Kurven"
09.12. Mo schon um 13.30, I-122: Beleuchtung; diffuse und glänzende Reflexion; Gouraud- und Phong-Interpolation; Bestimmung der Vertexnormalen
09.12. Mo auf Montag vorgezogen (5.+6. Block): Labor, Gruppen B: Perspektive; Abgabe "Kurven"
16.12. Mo 3D-Modellierung, Teil 1: explizite Flächen f(x,y), parametrische Grundkörper, Boundary Representation, Boolesche Operationen
17.12. Di Labor, Gruppen A: Zufallsuniversum; Abgabe "Perspektive"
06.01. Mo 3D-Modellierung, Teil 2: Spline-Flächen, Subdivision Surfaces, Metaballs und andere implizite Flächen (Marching Cubes); Grundlagen der Animation
07.01. Di Labor, Gruppen B: Zufallsuniversum; Abgabe "Perspektive"
13.01. Mo Texturierung: Farbe, Bump, Displacement etc.; Projektionsarten; MIP-Map; Alpha-Blending
14.01. Di Labor, Gruppen A: Texturierte Szene; Abgabe "Zufallsuniversum"
20.01. Mo Immediate Mode/Retained Mode, Displaylisten, Vertex-Arrays, Szenengraphen, 3D-Dateiformate
21.01. Di Labor, Gruppen B: Texturierte Szene; Abgabe "Zufallsuniversum"
27.01. Mo Fotorealismus: Raytracing, Radiosity-Grundlagen
28.01. Di Abgabetermin "Texturierte Szene" für Gruppen A
04.02. Di Abgabetermin "Texturierte Szene" für Gruppen B