Praktikum 3D-Programmierung
Prof. Andreas Butz, Otmar Hilliges
Umfang: 2 SWS
Aktuelles
- Achtung die Abschlußbesprechung findet nicht im Seminarraum 107 statt, sondern im Besprechungsraum im 5.Stock (Raum A506)
- Informationen zu den einzelnen Projekten sollen auf die Wikipage
- Zum bearbeiten der Wikipage ist eine Registrierung nötig
- Es gibt eine Mailing Liste zur Diskussion von Fragen rund um das Praktikum.
Termine und Ort
- Wöchentliche Besprechung: Mittwoch, 10:15 - 11:45
- Ort: Amalienstr. 17, Raum 107
- Erster Termin: 25. April 2007
Ablauf
- Dienstag 12:00 - Neues Aufgabenblatt steht zum Download bereit.
- Mittwoch 10:15 - 11:45 - Wöchentliche Treffen zur Präsentation und Besprechung.
- Dienstag - Montag - selbständige Bearbeitung unter der Woche
- Montag 12:00 - Abgabe der Aufgaben
Inhalt
- 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 - Abgabe |
Beschreibung | Folien | Aufgabe | Tipps |
---|---|---|---|---|
25.04.2007 | 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.2007 | Klassen, Objekte, Vererbung | PDF, 201KB | Blatt 2 |
|
09.05.2007 | Fenster mit GLUT, OpenGL Basics | PDF, 303KB | Blatt 3 |
GLUT Man Pages OpenGL - GLUT for Win32 |
16.05.2007 | Mathematische Grundlagen der 3D Computergraphik Beleuchtung in OpenGL |
PDF, 265KB | Blatt 4 |
OpenGL Referenz (RedBook) Online NeHe OpenGL Tutorials |
23.05.2007 | Szenegraphen, Texturen und Displaylisten | PDF, 266KB | Texture.h Texturen |
|
30.05.2007 | Pixel basierte Effekte: Bump-Mapping, Height-Mapping |
PDF, 409KB | Blatt 5 PPT Vorlage TUM Imagelib |
Per-Pixel Operations Tutorial Simple Bump-Mapping Height-Maps für Landschaften |
20.06.2007 | Kollisionserkennung | PDF, 166KB | NeHe Tutorial 30 Bsp. mit Code |
|
27.06.2007 | Partikelsysteme, Multipass Rendering | PDF, 313KB | NeHe particle system Tutorial Advanced techniques (ps) FBO 101 |
|
04.07.2007 | OpenGL Shader Language (GLSL) | PDF, 203KB | Lighthouse 3D Shading Tutorial Tutorial GLSL - DGL Wiki |
|
11.07.2007 | Stencil Operationen | PDF, 254KB | 3D Concept Stencil Buffer |
Teams
Vorraussetzungen
- 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