Spätestens
im Embedded-Bereich müssen InformatikerInnen einsehen: Nicht nur der
Strom entsteht jenseits der Steckdose; auch die Computergrafik kommt nicht
aus der Maus. Auf die Frage: „Was kann man mit
einem Raster darstellen, dessen Zellen beliebige Farben annehmen können
(wie bei einer Werbetafel aus farbigen LEDs)?" darf es nur eine
Antwort geben: „Alles!"
Nach dieser
Prämisse werden in zwei voneinander weitestgehend unabhängigen Kursen,
anhand eines eigens für diese Vorlesung geschaffenen, frei verfügbaren
Programmpakets, ca. 30 Jahre Grafik-Entwicklung im Zeitraffer
durchgenommen. Dabei übernehmen zunächst ASCII-Zeichen die Rolle der
Pixel.
Der Grundlagen-Kurs (BSc) wendet sich zuerst der Frage zu, wie man
auf einer gekachelten Fläche jene Platten optimal aussucht, die visuell
den Eindruck einer geraden Linie vermitteln. Dann widmet man sich der
Aufgabe, Linien in der Ebene (Abb.1) und im Raum zu positionieren, zu
Drahtmodellen zusammenzufügen (Abb.2) und Datenstrukturen zu wählen, die
Verarbeitung und Speicherung von 3D-Objekten für einen Austausch von
Modellen auch zwischen unterschiedlichen Implementierungen ermöglichen.
Schrittweise wird eine eigene Grafik-Pipeline aufgebaut, die mindestens so
mächtig ist, wie jene, die heutzutage noch auf kleinen Displays
elektrischer Anlagen (z.B. Kopierer) verwendet werden, und die sogar
nicht-quadratische (ASCII-) Pixel ausgleicht.
Es
folgen die Auseinandersetzung mit den Gesetzen der Perspektive und
Überlegungen darüber, wie man die abgewandte, nicht sichtbare Seite von
Objekten rechnerisch eliminiert (Abb.3), bevor man aufwendige
Verdeckungsalgorithmen einsetzt.
Mit diesem
„Proviant im Gepäck" hat man ein anderes Verständnis für die
anschließende Anwendung der professionellen Grafik-Bibliothek OpenGL
(Abb.4), für die soche Techniken nur einzeilige „Aufrufe" sind –
welche freilich zu merkwürdigen Konstruktionen führen können, wenn man
nicht weiß, was im Hintergrund gerechnet wird.
Gesondert
werden hier die Aufgabenstellungen, die
Lösungen und die ermutigende Notenentwicklung in den bisherigen
(schriftlichen) Klausuren behandelt.
Der Kurs Computergrafik (MSc) beginnt (zur Wahrung seiner
Eigenständigkeit) mit einem kritischen Repetitorium der o.a. Inhalte. Man
stellt fest, daß auch noch so reife Dreizeiler sich manchmal als
innovationsfähig erweisen. Anschließend wird im selben Stil neuen Fragen
nachgegangen:
Wie werden
Flächen von Grafik-Objekten (Abb.5) mit Farbe gefüllt, und warum setzen
professionelle Grafik-Bibliotheken den Einsatz konvexer Flächen voraus? Was
würde der Wegfall dieser Einschränkung bedeuten?
Wann nennt
man die Helligkeitsschwankungen am virtuellen Modell „Schatten" und
wann „Schattierung", und wie werden Lichteffekte logisch
unterschieden, rechnerisch nachgebildet und programmtechnisch codiert
(Abb.6)? Was ist darin photorealistischer Nachbau und was optische
Täuschung? Wie nutzt man das Linienziehen als lineare Interpolation, und
wie kann menschliche Intuition in mathematische Verfahren einfließen
(Abb.7)?
Wie hilft das
Werk von J.B.J.Fourier (1768-1830), das treppenartige Aussehen schräger
Linien auf Monitoren zu erklären, und wie funktioniert die Technik der
Kantenglättung, deren Name („Antialiasing", Abb.8) aus dem
Griechischen über das Lateinische ins Englische gelangte und hierzulande
so einheitlich falsch ausgesprochen wird, daß internationale
Gesprächspartner nur noch verdutzt fragen können: „Oh –
German?"
Diese
Themen werden detailliert behandelt und teilweise (bei Interesse auch
ganz) eigenständig programmiert. Auch die (in Lehrbüchern kaum
erklärte) Technik der Texturierung (Abb.9) wird exakt mathematisch
hergeleitet und pixelgenau, geradezu „embedded-tauglich" (Abb.10),
erörtert. Zu allen Techniken wird mit nachempfundenem Pioniergeist der
Weg vom physikalischen Effekt über das vereinfachte, echtzeitfähige
Modell bis hin zum Pixelsetzen erläutert. Zur Implementierung an
praxisüblichen Systemen wird zugleich der Umgang mit der Grafikbibliothek
OpenGL vertieft und in den betreuten Übungen (notfalls in gemeinsamer
Kleinarbeit) beschritten. Auch hier wird die Programmiersprache C eingesetzt,
in der auch OpenGL codiert ist.
Schließlich wird (je nach
Zeitbudget) die geschichtliche und matehmatische Entwicklung weicher
Kurven behandelt und in der ursrpünglichen Form der Splines programmiert
(Abb. 11).
Die bisher
stets guten bis sehr guten Noten in der (nunmehr mündlichen) Prüfung und die
persönlichen Gespräche mit Absolventen lassen auf eine durchaus
erfolgreiche Stoffvermittlung schließen.
Die hier angewandte Didaktik
wird seit fast zwei Dekaden zurückgedrängt, zugunsten des Einübens
reinen Anwendungsdenkens von Bibliotheken, über die keiner fragt, wer sie
später weiterentwickeln soll. Entsprechend wundern sich manche
Entwicklungsleiter der Simulatorenindustrie, wieso jüngere Absolventen
oft auf Hindernisse stoßen, die ältere Kollegen zu den Grundlagen zählen.
Teilnehmerinnen und Teilnehmer
dieser Kurse behalten eine Grafik-Bibliothek, an deren Entwicklung sie
mitgewirkt haben, und die sie eigenständig oder als Zusatz zu OpenGL
betreiben und jederzeit zu allen Zwecken weiterentwickeln
können.
InteressentInnen
können gerne auch probeweise an den Lehrveranstaltungen teilnehmen, um
herauszufinden, ob sie der Faszination des Faches erliegen.