Vertiefungskurs zur Graphischen Datenverarbeitung I

Wochenstunden: 1 Vorlesung + 1 Übung
Prüfungsart: Laborübung
Frequenz: jährlich (Sommersemester)
Credit Points: 3, unbenotet

Zu den aktuellen Veranstaltungen

Zielsetzung

Die Teilnehmer des Kurses sollen anhand eines größeren Projektes praktische Programmiererfahrungen im Bereich der Graphischen Datenverarbeitung sammeln.

Es werden Ihnen weiterhin Kenntnisse in der objektorientierten Programmierung (C++), der GUI Programmierung mit GTK--, der Graphikprogrammierung mit OpenGL sowie grundlegende Konzepte des objektorientierten Designs vermittelt.

Dabei werden in den Vorlesungen vorgestellte Verfahren vertieft, analysiert und auf einer Entwicklungsumgebung aufbauend implementiert.

Voraussetzung sind Kenntnisse in einer höheren Programmiersprache (wie C++, C, Java, Pascal oder ähnliches). Die weiteren Inhalte werden in der Anleitung zum Labor erläutert. Die Teilnehmer können in Kleingruppen (bis max. 2 Personen) zusammenarbeiten und müssen aber am Ende des Semesters ein komplettes Programm abgeben und alle Programmteile erklären können.
Empfohlen wird der Besuch der Vorlesung Graphische Datenverarbeitung I, in der die theoretischen Grundlagen des zu implementierenden Systems erklärt werden.

Inhalte

Ziel dieses Kurses ist die schrittweise Entwicklung eines Programmpaketes in C++ zur Visualisierung von 3D Objekten.

Ausgehend von einer vorgegebenen Dreiecksdatenstruktur, die die Teilnehmer einlesen lassen sollen, werden zunächst verschiedene Projektionsmodelle (Parallel- und Zentralprojektion) zu implementieren sein. Anschließend sollen die Daten im Drahtgittermodell, sowie unter Verwendung des Painter- und des Z-Buffer-Algorithmus, visualisiert werden. Dafür sind unterschiedliche Beleuchtungsmodelle (Flat-, Gouraud- und Phong-Shading) vorzusehen.

Im weiteren Verlauf werden OpenGL Routinen für die Darstellung genutzt und Techniken wie z.B. Texture Mapping und Double Buffering implementiert. Dabei wird die graphische Benutzerschnittstelle (GUI), die zu Beginn in einer Basisversion vorgegeben wird, ständig erweitert.

Die Aufgaben sind im Einzelnen:

  1. Entwurf Datenstruktur Szene (Objekte Scene, Solid, Triangle), sowie IO-Implementierung (Einlesen aus einer Datei)
  2. Implementation eines 4D Vectors und einer 4D Matrix sowie der Operatoren <code>*, +, -, =, >>, <<</code>
  3. Darstellen der Szene (nur Punkte, Parallelprojektion, Zentralprojektion)
  4. Darstellen der Szene im Drahtgittermodell (Bresenhams Algorithmus)
  5. Zeichnen aller Dreiecke in OpenGL (Flat-Shading)
  6. Implementation weiterer Shading Modelle (Gouraud und Phong)
  7. Navigation (Rotation / Zoom) mit der Maus in der Szene
  8. Double Buffering und Texture-Mapping (Projektion einer Bitmap auf die Seiten eines Würfels)