Home | Lehre | Videos | Texte | Vorträge | Software | Person | Impressum, Datenschutzerklärung | Blog
letzte Änderung
am 2002-01-15, im Text gekennzeichnet durch rote Schrift
Jörn Loviscach
ECG Einführung in die Computergrafik
alias DM-201 Computergrafik
Vorlesung: Mittwoch, 13.30-15.00 Uhr, Raum E407
Labor: Donnerstag 14-täglich, 13.30-16.45
Uhr, Raum E306B
Abweichungen siehe unten
Pflichtfach für das Vordiplom im Diplomstudiengang Medieninformatik
Pflichmodul für den Bachelor-Studiengang Medieninformatik (Digitale
Medien)
Wahlpflichtmodul für den Bachelor-Studiengang Mediengestaltung
(Digitale Medien)
Lernziele
-
die wichtigsten Algorithmen, die für Grafikdesign, Spiele, Animationsfilme
und grafische Bedienoberflächen eingesetzt werden, in selbstentwickelten
Programmen umsetzen und anwenden
-
einfache Aufgaben mit Grafik- und GUI-Bibliotheken lösen
-
Vertiefung von Java® in Algorithmen und Datenstrukturen
-
Klassen und Methoden in C++ formulieren
-
Debugging-Techniken
Voraussetzungen
Diplomstudiengang Medieninformatik: bestandene Prüfungen in MAI 1
und GDI dringend empfohlen
Bachelor-Studiengang Medieninformatik (Digitale Medien): DM-101 und
DM-103 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. Im Sinne einer formativen Evaluation plane ich außerdem
regelmäßige kurze Umfragen und anonyme Tests.
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 sind von jedem Teilnehmer einzeln abzugeben. Ich weiche dieses
Semester aus zwei Gründen von den üblichen Zweiergruppen ab:
-
Zweiergruppen führen nach meiner bisherigen Erfahrung dazu, dass ein
Gruppenmitglied die Aufgaben löst und das andere zuschaut.
-
Die von den Prüfungsordnungen geforderte Abgrenzung der Einzelleistungen
stellt sich oft als schwierig heraus.
Die Gruppeneinteilung sowie die Verteilung auf die 14-täglichen Labortermine
A und B (siehe Terminplan) geschieht im ersten Vorlesungstermin.
Die erste Aufgabe dient zur Probe; ich rechne sie nicht in die Note
ein. Nach der ersten Aufgabe gebe ich eine Liste zur verbindlichen Anmeldung
herum. Wer sich in diese Liste einträgt, 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:
-
Sie legen mir ein entsprechendes ärztliches Attest vor.
-
Sie kündigen mir mindestens zwei Kalendertage vorher ihre Abwesenheit
an und begründen die sinnvoll und glaubhaft (Vorstellungsgespräch
bei Pixar, Teetrinken mit Kai Krause).
-
Sie vereinbaren mit mir mindestens zwei Kalendertage vorher einen Sondertermin
oder Abgabe/Betreuung per E-Mail.
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.
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.
Damit Sie nicht nur auf den Rechnern des Softwaretechnik-Labors arbeiten
können, sondern auch zu Hause oder auf einem Notebook, habe ich als
Grundlage kostenlose Software ausgesucht:
Alternative Entwicklungsumgebungen z.B. für Mac OS X®
sind nach Absprache möglich. Um Sie aber nicht in Versuchung zu führen,
Raubkopien zu verwenden, werde ich keine Lösungen auf Basis
von Microsoft® Visual C++® akzeptieren.
Für die Aufgaben ist gemäß der Prüfungsordnungen
nicht nur der Quellcode abzugeben, sondern eine komplette Dokumentation,
also zusätzlich:
-
Aufgabenstellung
-
Anforderungsdefinition (größtenteils in Aufgabenstellung enthalten;
präzisieren, wo nötig)
-
Entwurf (z.B. als UML-Grafik)
-
Testdokumentation (Was haben Sie wie getestet? Konsequenzen?)
-
Benutzungshinweise und ein Anwendungsbeispiel (z.B. Screenshot mit Kommentaren)
Die Dokumentation können Sie mit einem simplen Texteditor oder HTML-Editor
und eingescannten Handzeichnungen verfassen; eine elektronische Version
ohne Papierausdruck genügt mir. Microsoft® Word®
missbillige
ich ausdrücklich. Wenn Sie unbedingt ein monströses Textverarbeitungsprogramm
benutzen müssen, nehmen Sie das kostenlose Sun® StarOffice®.
Die Dokumentation haben Sie selbst zu verfassen, ohne fremdes Bild-
oder Textmaterial (abgesehen vom Text der Aufgabenstellung). Aber ich ermuntere
Sie ausdrücklich, sich zur Aufgabenlösung umfassend zu informieren
(Kommilitionen, Internet, Bücher etc.). Allerdings müssen Sie
angeben, welches Material in Ihrem Programm aus welchen fremden Quellen
stammt. Verstöße dagegen werte ich als Betrugsversuch. Außerdem
befrage ich Sie bei der Präsentation über Ihr Programm, um festzustellen,
ob Sie es auch verstehen.
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
-
Foley u.a.: "Computer Graphics", ISBN 0-201-84840-6: Das Standardwerk beschreibt
zwar Stiftplotter und kennt kein OpenGL, aber dafür kann man sich
inzwischen auf die Formeln des immer wieder korrigierten Werks weitgehend
verlassen (nächste Auflage für Frühjahr geplant).
-
Angel: "Interactive Computer Graphics: A Top-Down Approach with OpenGL",
ISBN 0-201-74892-4: eigenwilliges, aber kluges Konzept, sofort mit OpenGL
zu starten; in der aktuellen Auflage (Juni 2001) ist zusätzlich eine
OpenGL-Einführung enthalten
-
DeLoura (Hrsg.): Game Programming Gems
I/II: Sammlungen von knappen, von Praktikern verfassten Aufsätzen
zu diversen Fragen der Spieleprogrammierung von 3D über Kommunikation
bis Künstliche Intelligenz
-
Böhm: "Fehlerfrei programmieren in C und C++", ISBN 3-932588-67-3:
wie sich Bugs selbst melden I
-
Maguire: "Writing Solid Code", ISBN 1-556-15551-4: wie sich Bugs selbst
melden II
Material im Web
-
Grafik-Programmierschnittstellen: Java2D,
Java Advanced Imaging,
Java3D,
OpenGL,
DirectX
-
interaktive OpenGL-Funktionsdemos von Nate Robins,
NeHe OpenGL-Tutorial
-
GUI-Programmierschnittstellen: Creating a GUI with
JFC/Swing,
GLUT,
KDE
2.0 Development
-
SDL (Simple
DirectMedia Layer): kostenlose plattformübergreifende Multimedia-Programmierbibliothek
-
Grafik-Programmierung: flipCode,
Gamasutra,
GameDev.net
-
Programmierung allgemein: Thinking
in Java, Thinking
in C++, Essentials of C++
for Java Programmers, Guide to Faster, Less Frustrating Debugging
-
Dateiformate: Wotsit (z.B. BMP, GIF,
JPEG, TIFF, PDF, PS) und W3C (z.B. PNG,
SVG)
-
Stand der Technik: scene.org
-
Immer noch nichts Brauchbares gefunden? Google
benutzen!
Termine
03.10. Mi |
Tag der deutschen Einheit |
04.10. Do |
kein Labor vor erster Vorlesung |
10.10. Mi |
Überblick; Bitmapbild, Vektorgrafik, 3D-Szene,
Zeitablauf; optische Wahrnehmung, Farbmodelle; Einteilung der Labor-Gruppen |
11.10. Do |
verlegt auf 15.10./18.10. wegen Terminkollision |
15.10. Mo |
Labor, 11.30-13.00 Gruppen A, 13.30-15.00 Gruppen
B: Umgang mit JBuilder, Debugging |
17.10. Mi |
Beispiel von 2D-Grafikschnittstellen: Java2D,
PostScript |
18.10. Do |
Labor, 13.30-15.00 Gruppen A, 15.15-16.45 Gruppen
B: Umgang mit Dev-C++ und Insight Debugger, C++-Grundlagen |
24.10. Mi |
verlegt auf 13.11. wegen Terminkollision |
25.10. Do |
Labor, Gruppen A: "Java contra C++" |
31.10. Mi |
Ereignisgesteuerte Programmierung grafischer
Oberflächen: Swing, GLUT |
01.11. Do |
Labor, Gruppen B: "Java contra C++" |
07.11. Mi |
Filter und Effekte auf Bitmap-Basis, Antialiasing,
Interpolation |
08.11. Do |
Labor, Gruppen A: "Bitmap-Effekte"; Abgabe "Java
contra C++" |
13.11. Di |
Raum 402, 15.15-16.45, Hermite-Kurven, Bézier-Kurven
und ihre Wiedergabe; Grundlagen von B-Spline- und NURBS-Kurven |
14.11. Mi |
Perspektive, Projektionsarten; 3D-Liniengrafik
mit OpenGL |
15.11. Do |
Labor, Gruppen B: "Bitmap-Effekte"; Abgabe "Java
contra C++" |
21.11. Mi |
homogene Koordinaten: Projektionsformeln, Verkettung
von 3D-Transformationen, Modelview-Matrix von OpenGL |
22.11. Do |
Labor, Gruppen A: "Perspektive" |
28.11. Mi |
z-Sortierung; z-Buffer am Beispiel von OpenGL;
Backface Culling |
29.11. Do |
Labor, Gruppen B: "Perspektive". Abgabetermin
"Bitmap-Effekt" für Gruppen A |
05.12. Mi |
Lambert-Schattierung und Phong-Glanzlichter in
OpenGL; Gouraud- und Phong-Interpolation; Bestimmung der Vertexnormalen |
06.12. Do |
Labor, Gruppen A: "Zufallsuniversum"; Abgabetermin
"Bitmap-Effekt" für Gruppen B |
12.12. Mi |
Texturierung: Farbe, Bump, Displacement etc.;
Projektionsarten; MIP Map; Grundlagen prozeduraler Texturen |
13.12. Do |
Labor, Gruppen B: "Zufallsuniversum"; Abgabetermin
"Perspektive" für Gruppen A |
19.12. Mi |
3D-Modellierung, Teil 1: explizite Flächen
f(x,y), parametrische Grundkörper, Boundary Representation, Boolesche
Operationen |
20.12. Do |
Abgabetermin "Perspektive" für Gruppen B;
Labor Gruppen A verlegt auf 10.01. wegen Terminkollision |
09.01. Mi |
Verlegt auf N.N. wegen Terminkollision |
10.01. Do |
Labor, Gruppen A und B: "Modelle und Texturen" |
16.01. Mi |
schon um 11.30.
3D-Modellierung, Teil 2: Spline-Flächen, Subdivision Surfaces, Metaballs
und andere implizite Flächen (Marching Cubes); Grundlagen der Animation |
17.01. Do |
Labor, Gruppen A. Abgabetermin
"Zufallsuniversum" für Gruppen A. |
23.01. Mi |
schon um 11.30. Immediate
Mode/Retained Mode; Szenengraphen, Java3D; Fotorealismus: Raytracing, Radiosity-Grundlagen |
24.01. Do |
Labor, Gruppen B. Abgabetermin
"Zufallsuniversum" für Gruppen B |
31.01. Do |
Abgabetermin "Modelle und Texturen" für
Gruppen A |
07.02. Do |
Abgabetermin "Modelle und Texturen" für
Gruppen B |