Home | Lehre | Videos | Texte | Vorträge | Software | Person | Impressum, Datenschutzerklärung |
Alle letzten Änderungen dieser Webseite sind
durch rote Schrift gekennzeichnet!
Eingeschobene Seiten sind nach dem Muster 10, 10a, 10b, 11 nummeriert. Ändere ich Skripte im Nachhinein z.B. wegen Fehlern (Sollten die etwa jemals passieren? ;-), 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.
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 (vorbehaltlich deren Verfügbarkeit im Labor).
Es ist sinnvoll, dass Sie den Laborteil in Zweiergruppen absolvieren. Einergruppen lasse ich zwar zu; die Anforderungen bleiben aber dieselben. Die Gruppeneinteilung sowie die Verteilung auf die 14-täglichen Labortermine A und B (siehe Terminplan) geschieht in der Veranstaltung am 4. Oktober.
Die Anwesenheit bei den Laborterminen ist verpflichtend, außer:
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 Labortermins (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:
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. Verbindlich für
die Prüfung ist aber, wie Begriffe und Algorithmen
in der endgültigen Version des Skripts stehen, und nicht, wie
sie sich irgendwo im Web finden.
04. Okt | Mi | Überblick; Bitmapbild, Vektorgrafik, 3D-Szene, Zeitablauf; optische Wahrnehmung, Farbmodelle; Einteilung der Labor-Gruppen |
10. Okt | Di | Labor, Gruppen A: Gammakorrektur und Farbraum-Konvertierung |
11. Okt | Mi | Beispiel einer 2D-Programmierschnittstelle: Java2D |
17. Okt | Di | Labor, Gruppen B: Gammakorrektur und Farbraum-Konvertierung |
18. Okt | Mi | Alpha-Compositing; Bitmap-Korrekturen und -Effekte: Weichzeichner, Staubfilter |
24. Okt | Di | Labor, Gruppen A: Staubfilter (mit Alpha-Compositing und Weichzeichner) |
25. Okt | Mi | 2D-Transformationen: Verschiebung, Skalierung, Drehung; Verkettung von Transformationen |
31. Okt | Di | Labor, Gruppen B: Staubfilter (mit Alpha-Compositing und Weichzeichner) |
01. Nov | Mi | ausgewählte 2D-Algorithmen: Linie, Kreis |
07. Nov | Di | Labor, Gruppen A: Linienalgorithmus für beliebige Steigung |
08. Nov | Mi | Antialiasing: Nyquist-Theorem, Bandbreite/Abtastfrequenz, sinc, Supersampling, Filter, stochastisches Sampling; bilineare und bikubische Interpolation |
14. Nov | Di | Labor, Gruppen B: Linienalgorithmus für beliebige Steigung |
15. Nov | Mi | Druckraster, Dithering |
21. Nov | Di | Labor, Gruppen A: Gegenüberstellung verschiedener Antialiasing-Methoden |
22. Nov | Mi | parametrische Kurven, Teil 1: C0, C1, G0, G1 etc.; kubische Kurven: Hermite, Bézier; Unterteilung, Diskretisierung |
28. Nov | Di | Labor, Gruppen B: Gegenüberstellung verschiedener Antialiasing-Methoden |
29. Nov | Mi | parametrische Kurven, Teil 2: quadratische und kubische B-Splines, non-uniform B-Splines, rationale B-Splines, NURBS-Kurven |
05. Dez | Di | Labor, Gruppen A: Interaktiv steuerbarer rationaler B-Spline |
06. Dez | Mi | 2D-Dateiformate: BMP, TIFF, PNG, GIF, JPEG; PostScript/EPS/PDF, SVG; Schriftarten (PostScript, TrueType) |
12. Dez | Di | Labor, Gruppen B: Interaktiv steuerbarer rationaler B-Spline |
13. Dez | Mi | Projektionen und 3D-Transformationen: Camera obscura, Perspektive, Projektionsarten; 3D-Clipping (View Frustrum); Verschiebung, Skalierung, Drehung, Darstellung von Drehungen, Verkettung von Drehungen |
19. Dez | Di | Labor, Gruppen A: Plotprogramm mit EPS-Ausgabe |
20. Dez | Mi | homogene Koordinaten: Projektionsformeln, Verkettung von Transformationen |
09. Jan | Di | Labor, Gruppen B: Plotprogramm mit EPS-Ausgabe |
10. Jan | Mi | Sichtbarkeitsberechnung: Backface Culling; z-Sortierung, z-Buffer, Volumen-Rendering, Raytracing |
16. Jan | Di | Labor, Gruppen A: z-Puffer-Renderer mit interaktiver Drehung |
17. Jan | Mi | Raytracing: Schnittberechnungen, Spiegelung, Brechung, Schatten; Rekursion, Optimierung (Shadow Maps, Environment Maps) |
23. Jan | Di | Labor, Gruppen B: z-Puffer-Renderer mit interaktiver Drehung |
24. Jan | Mi | Beleuchtung und Schattierung: Lambert, Phong, Cook-Torrance, Blinn, anisotrope Schattierung; Gouraud-Interpolation, Phong-Interpolation; Bestimmung der Vertexnormalen aus den Flächennormalen |
globale Beleuchtung, Teil 1: stochastisches Raytracing (Distribution Raytracing), Backward Raytracing (Photon Tracing), Radiosity-Grundlagen |
globale Beleuchtung, Teil 2: Radiosity-Details, Optimierung |
Texturierung, Teil 1: Farbe, Bump, Displacement etc.; Projektionsarten (plan, zylindrisch, sphärisch, Wrap, kubisch, UV); SAT, trilineare Interpolation, MIP Map |
Texturierung, Teil 2: prozedurale Texturen; Volumentexturen, UVW-Koordinaten; Hypertexturen |
Modellierung, Teil 1: explizite Flächen f(x,y), parametrische Grundkörper, Boundary Representation, Boolesche Operationen (CSG) |
Modellierung, Teil 2: NURBS-Flächen |
Modellierung, Teil 3: Subdivision Surfaces |
Modellierung, Teil 4: prozedurale Modelle (Fraktale, L-Systeme), Hypertexturen, Metaballs, implizite Flächen (Marching Cubes), 3D-Scan |
Animation, Teil 1: Interpolation von Position, Lage, Größe und anderen Parametern, Keyframes, Objekt-Hierarchien; natürliche Interpolation von Drehungen |
Animation, Teil 2: Physik (Partikel, Soft Body), prozedurale Animation |
Animation, Teil 3: Motion Tracking, Morphing, Bones, Spines, Non-Linear Animation |
Echtzeit-Rendering, Teil 1: Rendering-Pipeline, Immediate Mode, Double Buffering; OpenGL-Grundlagen |
Echtzeit-Rendering, Teil 2: OpenGL-Details, DirectX-Grundlagen |
Echtzeit-Rendering, Teil 3: Retained Mode, Szenengraphen; Java3D und OpenInventor im Überblick |
3D-Dateiformate: DXF, VRML, MPEG-4, 3DS, RIB, MetaStream |
Post-Processing-Effekte: Halo, Blendenflecke, Bewegungsunschärfe, Tiefenunschärfe |
nicht-fotorealistisches Rendering |
letzte Änderung: 20. Januar 2001