TeachingSs06CPP

Chair for Computer Aided Medical Procedures & Augmented Reality
Lehrstuhl für Informatikanwendungen in der Medizin & Augmented Reality

Graphikprogrammierung in C++

von Martin Groher, Tobias Sielhorst, Marco Feuerstein, and Joerg Traub

Typ: Programmierpraktikum Grundstudium
Generelle Studienplaneinordnung: BS-INF WA ab 2, INF. prakt. WP ab 2
ECTS: 6 Credits
Wöchentliches Treffen: Di, 16.00 - 17.30 Uhr (Raum MI 02.13.010)
Programmierberatung: Freitag, 13:00 - 14:00 Uhr (Lab - Raum MI 02.13.008)
Emailingliste:
Wichtig: Der Termin fuer die Abschlusspraesentationen ist auf Di, 10.10. 2006 verschoben worden!

Games

Game developed within the C++ Lab Course in the summer term 2006 by Fabian Buck & Markus Wallig.
Download the Game (7.1MB)
Game developed within the C++ Lab Course in the summer term 2006 by Tobias Lieber & Matthias Wieczorek.
Download the Game (1.7MB)
Game developed within the C++ Lab Course in the summer term 2006 by Martin Schuster & Marin Zec.
Download the Game (10.5MB)
Game developed within the C++ Lab Course in the summer term 2006 by Sa Wu.
Download the Game (3.4MB)
Game developed within the C++ Lab Course in the summer term 2006 by Stefan Dangl & Marcel Knapp.
Download the Game (17.8MB)

Wöchentlicher Ablauf

  • Montag 12:00 Uhr – Neues Aufgabenblatt ist online verfügbar.
  • Dienstag 16:00-17:30 Uhr – Wöchentliches Treffen (Raum MI 02.13.010)
  • Dienstag-Montag – Implementierung der Aufgaben in Teams
  • Freitag 13-14:00 Uhr - Programmierberatung (Raum MI 02.13.008)
  • Montag 12:00 Uhr - Abgabe der Aufgaben (SVN commit)

Inhalt

C++: Programmer's Weapon of Choice. Insbesondere auf dem Gebiet der Computer Graphik (Game Programming, etc.) wird die Prgrammiersprache C++ der Alternative Java in jedem Fall vorgezogen. In diesem Praktikum wird grundlegendes Wissen zur Programmierung mit C++ vermittelt. Alle Beispielaufgaben für das Praktikum kommen aus dem Gebiet Computer Grafik und Computer Vision. Für die Bearbeitung und Implementierungen werden Teams zu je zwei bis drei Personen gebildet. Die Aufgaben werden in der ersten Woche mit der GNU Compiler Collection (g++,gcc) und danach mit Visual Studio bearbeitet.
Das Praktikum ist in zwei Abschnitte unterteilt.
Im ersten Abschnitt werden grundlegende Konzepte der C++ Programiersprache, OpenGL und Team Based Software Engineering behandelt. Themen hierbei sind
  1. Tool für die Versionskontrolle SVN
  2. Präprozessor
  3. der C++ Compiler
  4. Linker/Einbinden von Bibliotheken
  5. Pointer, Felder und Strukturen
  6. Standard Template Library
  7. Makefiles
  8. aktuelle IDEs (Visual Studio/Eclipse)
  9. Debuggen
  10. Objektorientierung
  11. Grundlagen von OpenGL
Im zweiten Abschnitt des Praktikums wird sukzessive eine komplexere Aufgabenstellung (kleines interaktives Spiel) erarbeitet. Die hierfür benötigten Programmiertechniken bauen auf den in Abschnitt eins des Praktikums erarbeitet Techniken auf.

Voraussetzungen

Es wird kein C++ Wissen vorausgesetzt. Das Praktikum soll eine grundlegende Einführung in die C++ Programmiersprache geben. Java-Kenntnisse können von Nutzen sein. Konzepte der Programmierung und der Objektorientierung, soweit in "Einführung in die Informatik I & II" behandelt, werden vorausgesetzt. Gute Englischkenntnise sind von großem Vorteil.

Aufgaben

Datum Thema Folien Aufgabe Merkblatt/Lösungshinweise
25.04.06 Einführung: Header-files, Praeprozessor, Compiler, Linker Folien Blatt 1 Merkblatt 1
02.05.06 Funktionen, Attribute, Kontrollstrukturen, Makefiles, VS .NET 2005, SVN, Pointer, Arrays, Bildmanipulation Folien Blatt 2 Merkblatt 2
09.05.06 Pointer, Referenzen und Objektorientierung in C++ Folien Blatt 3  
16.05.06 2D Transformation, Grundlagen von OpenGL Folien Blatt 4  
23.05.06 Debuggen, 3D Transformationen und Licht in OpenGL, Displaylisten
Die Programmierberatung am 26 Mai fällt aus!
Folien Blatt 5 'Red Book' Kapitel 3,5,6
30.05.06 Texturen, Material und Transparenz sowie Einführung in QT: User Interfaces in C++ Folien Blatt 6 'Red Book' Kapitel 9
QT 4.1 Whitepaper
QT 4.1 Documentation
06.06.06 Pfingstferien      
13.06.06 QT und OpenGL, Vorstellung der Abschlussarbeit Folien Blatt 7
Abschlussarbeit
QT 4.1 Signals and Slots
QT 4.1 QGLWidget
QT 4.1 Meta-Object Compiler (moc)
20.06.06 Teampräsentationen der Ideen für die Abschlussarbeit      
27.06.06 Partikelsysteme Folien Blatt 9  Aquarium
04.07.06 Kollisionserkennung, Einfache Physiksimulation, Einfache Explosionen Folien Blatt 10  Water
11.07.06 Special Effects in OpenGL: Spiegel und Schatten Folien    Shadow & Mirror Code
18.07.06 Programmierberatung & Live Demo of a medical AR system 15-17Uhr MI 03.13.007      
25.07.06 Testat 15-17Uhr (genaue Zeiten siehe Email) MI 03.13.055    
MOVED TO... 10.10.06 Präsentation der Abschlussarbeit 16-18Uhr 03.13.010      

Teams

1 Buck, Fabian & Wallig, Markus
2 Lieber, Tobias & Wieczorek, Matthias
3 Schuster, Martin & Zec, Marin
4 Hase, Tankred & Muhra, Daniel
5 Friedl, Alexander & Stather, Michael
6 Wu, Sa & Landschoof, Achim
7 Benn, Dennis & Köhler, Barbara
8 Gegov, Atanas & Hristov, Ilian
9 Dangl, Stefan & Knapp, Marcel
10 Pleie, Frans-Matthis & Krusche, Stephan
11 Dichtl, Hans & Yukun, Huang
12 Georgiev, Veselin & Sieber, Markus

Voraussetzungen für den Schein

  • Einreichung der Aufgaben in Teamarbeit von zwei bis drei Teilnehmern bis spätestens Montag 12:00 Uhr
  • Mindestens 8 von 9 Aufgabenblättern wurden korrekt bearbeitet
  • Aktive Mitarbeit bei den wöchentlichen Treffen
  • Abgabe der Projektaufgabe
  • Teamarbeit
  • Bestehen eines 5min Testats

Wichtige Literatur und Tutorials

C++ Tutorial

C++ Referenzen

OpenGL

  • 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, einer Softwareschnittstelle zur Graphik Hardware. Behandelte Themen sind u.a. das Zeichnen geometrischer Objekte, Farben, der Einfluss auf Licht auf eine Szene, die Representation von Kameras, mit der eine Szene betrachtet werden kann und auch Hardware-nähere Techniken wie Antialiasing, Texture Mapping, oder Framebuffer Control.

QT

Weiterführende Literatur und Tutorials

C++ Tutorials

C++ Referenzen

Advanced Programming with C++

OpenGL

  • Dave Shreiner, OpenGL Reference Manual 'The Blue Book' kann auch hier eingesehen werden. Es wurde von den OpenGL Software-Architekten geschrieben und sollte erst verwendet werden, wenn eine gewisse Sicherheit im Umgang mit C++ erreicht wurde. Es enthält alle relevanten OpenGL Methodiken und dazu Code-Beispiele
  • NEHE - An Excellent OpenGL Web Tutorial Tutorials und mehr zu OpenGL auf Englisch. Hier die deutsche Übersetzung.
  • Folgende Referenz ist eher für Interessierte nach dem Kurs. Sie beschäftigt sich mit der Frage, wie man OpenGL Aufrufe geschickt benutzt, damit sie noch schneller ausgeführt werden (OpenGL tuning). Auf Englisch.

English Version

General content

The course is intended to teach you the basic concepts of C++. All assignments will focus on computer graphics and computer vision applications. You will be confronted with preprocessing, compiling, linking, the language itself, version control (SVN), makefiles, modern IDEs (Visual Studio), debugging, and a little on object orientation.

Prerequisites

The course is intended to teach C++, so knowledge of it is not necessary. Knowledge of JAVA would be of great advantage. The concepts of OO Programming and other concepts as conducted in the Introduction to CS lecture are assumed.

Schein requirements

Active participation in the weekly meeting, submission of the implementation of the weekly assignments of part I, teamwork, and the presentation of the final assigment.




TeachingForm
Title: Graphikprogrammierung in C++
Professor: Nassir Navab
Tutors: Martin Groher, Tobias Sielhorst, Marco Feuerstein, and Joerg Traub
Type: Programmierpraktikum
Information:  
Term: 2006SoSe
Abstract: C++: Programmer's Weapon of Choice. Insbesondere auf dem Gebiet der Computer Graphik (Game Programming, etc.) wird die Prgrammiersprache C++ der Alternative Java in jedem Fall vorgezogen. In diesem Praktikum wird grundlegendes Wissen zur Programmierung mit C++ vermittelt. Alle Beispielaufgaben für das Praktikum kommen aus dem Gebiet Computer Grafik und Computer Vision. Für die Bearbeitung und Implementierungen werden Teams zu je zwei bis drei Personen gebildet. Die Aufgaben werden in der ersten Woche mit der GNU Compiler Collection (g++,gcc) und danach mit Visual Studio bearbeitet.


Edit | Attach | Refresh | Diffs | More | Revision r1.57 - 12 Oct 2006 - 10:15 - JoergTraub

Lehrstuhl für Computer Aided Medical Procedures & Augmented Reality    rss.gif