Praktikum 3D-Programmierung
Dozent: Prof. Butz
Betreueung: Otmar Hilliges
Umfang: 2 SWS
ECTS-Credits: für diese Veranstaltung nicht festgelegt
Aktuelles
- Die ProjektWikiSeite ist online.
- Die Anmeldung für das Praktikum ist beendet.
- Der erste Termin des Praktikums ist der 25. April.
- Die Liste der Teilnehmer ist online: vergebene plätze
Termine und Ort
- Vorlesung: Freitag 10-12 Uhr
- Ort: Amalienstraße 17, Raum A 105
Anmeldung
Eine Anmeldung ist nicht mehr möglich. Alle Plätze sind bereits vergeben.
Inhalte
- Thema: 3D Programmierung (nicht Modellierung) in C++ und OpenGL
- Programmiersprache: C++/OpenGL
Die Programmiersprache C++ ist auf dem Gebiet der interaktiven Computergrafik die am häufigsten verwendete Alternative. In diesem Programmierpraktikum wird grundlegendes Wissen zur Programmierung mit C++ vermittelt. Darüber hinaus werden wir uns mit der Programmierung von 3D Computergrafiken beschäftigen. Zur effizienten Darstellung von 3D Inhalten wird OpenGL verwendet. Für die Bearbeitung und Implementierungen werden Teams zu je zwei bis drei Personen gebildet. Das Programmierpraktikum ist in zwei Abschnitte unterteilt. Im ersten Abschnitt werden grundlegende Konzepte behandelt. Themen sind u.a.
- C++ Compiler, Linker/Einbinden von Bibliotheken, Debuggen
- Präprozessor, Objektorientierung, Pointer, Felder und Strukturen, Standard Template Library
- Grundlagen der 3D Computergrafik
- Grundlagen von OpenGL, GUIs mit GLUT, Texturierung, Beleuchtung, Shaderprogrammierung
Wir beginnen zunächst mit den Einstellungen die für OpenGL (bzw. eine 3-dimensionale Szene) berücksichtigt werden müssen. Dies beinhaltet vor allem die Kamera-Parameter, die hier erläutert werden. Danach starten wir mit einfachen 2D Objekten und ihren Transformationen und wenden dies dann nach gleichem Schema auf 3D Objekte an. Hierzu gehört unter anderem auch das Verständnis der Mathematik, d.h. der Transformationsmatrizen. Darauf aufbauend werden die Methoden der Färbung, Texturierung und des Blendings von Objekten angesprochen. Im Anschluss daran werden Lichtquellen, Schatten, Spiegelungen und Nebel behandelt. Den Abschluss der Theorie bilden Kollisionserkennung von Objekten und Partikelsysteme.
Im zweiten Abschnitt des Praktikums wird sukzessive eine komplexere Aufgabenstellung (z.B. kleines interaktives Spiel) erarbeitet. Die hierfür benötigten Programmiertechniken bauen auf den in Abschnitt eins des Systementwicklungsprojekts erarbeitet Techniken auf.
Aufgaben
Termin | Beschreibung | Folien | Aufgabe | Tipps |
---|---|---|---|---|
25.04.2008 | Einführung: Header- u. Source files, Präprozessor, Compiler, Linker Standard I/O |
PDF, 222KB | Blatt 1 |
Merkblatt zu SVN C++ reference: cstdio |
02.05.2008 | Klassen, Objekte, Vererbung | PDF, 201KB | Blatt 2 |
|
09.05.2008 | Fenster mit GLUT, OpenGL Basics | PDF, 303KB | Blatt 3 |
GLUT Specs GLUT Tutorials OpenGL - GLUT for Win32 |
16.05.2008 | Mathematische Grundlagen der 3D Computergraphik Beleuchtung in OpenGL |
PDF, 265KB | Blatt 4 |
OpenGL Referenz (RedBook) Online NeHe OpenGL Tutorials |
23.05.2008 | Szenegraphen, Texturen und Displaylisten | PDF, 266KB | Texture.h Texturen |
|
30.05.2008 | Pixel basierte Effekte: Bump-Mapping, Height-Mapping |
PDF, 409KB | Blatt 5 PPT Vorlage |
Per-Pixel Operations Tutorial Simple Bump-Mapping Height-Maps für Landschaften |
12.06.2008 | Kollisionserkennung und Physik Simulation | PDF, 166KB | NeHe Tutorial 30 Bsp. mit Code |
|
20.06.2008 | Partikelsysteme, Multipass Rendering | PDF, 313KB | NeHe particle system Tutorial Advanced techniques (ps) FBO 101 |
|
27.07.2008 | OpenGL Shader Language (GLSL) | PDF, 212KB | Lighthouse 3D Shading Tutorial Tutorial GLSL - DGL Wiki Nehe Shader Tutorial |
|
04.07.2008 | Stencil Operationen | PDF, 345KB | 3D Concept Stencil Buffer |
Voraussetzungen
- Hohe Motivation. Kann evtl. alle nachfolgenden Punkte Ersetzen.
- Programmiererfahrung in mindestens einer Objekt-Orientierten Programmiersprache (z.B. Java)
- Grundkenntnisse in linearer Algebra z.B. Transitionen und Translationen(aus dem Grundstudium)
- Grundkenntnisse im Software Engineering und Projektmanagement/Selbstorganisation
Für Studierende der Medieninformatik im Hauptstudium
Erwartete Vorkenntnisse: Vordiplom in Medieninformatik
Literatur
- Jesse Liberty, C++ in 21 Tagen. Schritt für Schritt zum Programmierprofi, Eine Einführung in C++ aufgegliedert in ein 21-tägiges Programm. Nach diesen 21 Tagen sollte man die grundsätzlichen Konzepte und Paradigmen von C++ verstanden haben.
- Bjarne Stroustrup, The C++ Programming Language, Das C++-Buch, der Autor ist der Begründer dieser Programmiersprache.
- Dave Shreiner, Mason Woo, Jackie Neider, OpenGL Programming Guide, 'The Red Book' kann auch hier eingesehen werden. Grundlegendes Buch für die Open Graphics Library.
- H.J. Bungartz, M. Griebel, C. Zenger, Einführung in die Computergraphik