Direkt zum Inhalt
 
 
emotio_grafik_multimedia.jpg
 
  Startseite  
 

Grafikprogrammierung (WS 2019/2020)

Dozent: Prof. Dr. Thorsten Thormählen
 
Modulbezeichnung: CS 581
 

Qualifikationsziele

In der Vorlesung werden Kenntnisse zur Erstellung von interaktiven Computergrafik-Anwendungen vermittelt.  Diese umfassen allgemeine Konzepte der Computergrafik, die unabhängig von der verwendeten Programmierumgebung sind, wie z.B. die mathematische Beschreibung von 2D- und 3D-Objekten, Lichtern und Kameras, die Repräsentation der 3D-Szene in einem hierarchischen Szenengraphen oder die mathematische Beschreibung von Materialen und deren Reflektanz-Eigenschaften. Durch Programmierbeispiele in einer praxisrelevanten Programmierumgebung sollen die Studenten alle notwendigen Techniken erlernen, um zukünftig selbstständig konkrete Computergrafik-Projekte realisieren zu können. Dazu werden ebenfalls Grundlagen zur Erstellung von grafischen Benutzerschnittstellen vermittelt. Außerdem soll die allgemeine Fähigkeit zum wissenschaftlichen Arbeiten und Lösen von Problemen sowie die Kommunikationsfähigkeit der Teilnehmer verbessert werden.

Programmierumgebung

Die Veranstaltung legt einen starken Fokus auf moderne Rasterisierungsverfahren und verwendet OpenGL als Grafikbibliothek und GLSL als Shader-Sprache. Grundlegende Kenntnisse der objekt-orientierten Programmierung werden vorausgesetzt. Die Programmierübungen und die in der Vorlesung gezeigten Beispiele verwenden der Programmiersprache Java. Alternativ werden jedoch auch immer Implementierungen in C++ und teilweise auch interaktive Demonstrationen in WebGL/JavaScript zur Verfügung gestellt. 

Organisation

Die Veranstaltung besteht aus einer Vorlesung (4 SWS) und einer Übung (2 SWS). 

Vorlesung: Mo. 14:00 - 15:30 Uhr, Fr. 10:15 - 11:45 Uhr,  MZ 6 Hörsaal III A3
Übung: Montags im Anschluss an die Vorlesung, MZ 6 Hörsaal III A3
Tutoren: Sebastian Lieb, Ibrahim Keser

Gliederung der Vorlesung

  1. Einführung 
  2. Grafische Benutzerschnittstellen
  3. Repräsentation und Darstellung von 2D Objekten 
  4. OpenGL Pipeline 
  5. Objekttransformationen 
  6. Kameras 
  7. Texturen 
  8. Buffer Objects 
  9. OpenGL Shading Language (GLSL)
  10. Licht und Materialien 
  11. Schatten und Reflexionen
  12. Spieleprogrammierung
 

Vorlesungsfolien

Die Vorlesungsfolien werden als HTML5-Webseiten zur Verfügung gestellt. Es wird empfohlen, einen aktuellen Browser zu verwenden (wie z.B. Google Chrome, Mozilla Firefox). In Google Chrome kann die Druckfunktion des Browsers verwendet werden, um eine PDF-Datei der Folien zu erzeugen.

Es gibt zwei Versionen der Folien: intern und extern. Die internen Folien sind umfangreicher und nur für die Studierenden der Philipps-Universität Marburg zugänglich. Der Login wird in der Vorlesung bekannt gegeben.
 
Teil   Kapitel  Titel Link
1. Einführung  1 Einführung extern, intern
2 Organisation extern, intern
2. GUIs 1 Grafische Benutzerschnittstellen extern, intern
2 GUIs mit Java extern, intern
3 GUIs mit Java (Android) extern, intern
4 GUIs mit C++ und Qt extern, intern
3. 2D Objekte 1 Vektor- und Rastergrafik extern, intern
2 Rasterkonvertierung extern, intern
3 Clipping pdf 
4. OpenGL Pipeline  1 OpenGL Pipeline extern, intern
5. Objekttransformationen 1 2D Transformationen extern, intern
2 3D Transformationen extern, intern
6. Kameras 1 Perspektivische Projektionen extern, intern
2 Parallelprojektion extern, intern
7. Texturen 1 Texturen extern, intern
8. Buffer Objects  1 Buffer Objects extern, intern
9. OpenGL Shading Language 1 OpenGL Shading Language (GLSL) extern, intern
10. Licht und Materialien 1 Licht und Materialien extern, intern
11. Schatten und Reflexionen 1 Schatten pdf
2 Ambient Occlusion pdf
3 Reflexionen extern, intern
12. Spieleprogrammierung 1 Grafik-Engine
2 Shader Effekte
 

Übungszettel

Die Anmeldung zur den Übungsgruppen erfolgt über die Lernplattform ILIAS. Die Abgabe des Übungszettels muss bis mittwochs 12:00 Uhr per E-Mail (PDF oder Text bzw. Quelltexte) an den jeweiligen Tutor erfolgen. Der Login wird in der Vorlesung bekannt gegeben.

Nummer Thema Link
1 GUIs mit Java pdf, Vorlage, Musterlösung
2 Rasterkonvertierung (Pineda's Algorithmus) pdf, Vorlage, Musterlösung
3 Einstieg OpenGL pdf, Vorlage, Musterlösung
4 Spiel Pong 2D mit OpenGL pdf, Vorlage, Musterlösung
5 Spiel Pong 3D mit OpenGL pdf, Vorlage, Musterlösung
6 Texture Mapping pdf, Vorlage, Musterlösung
7 VBOs pdf, Vorlage, Musterlösung
8 Shaderprogrammierung mit GLSL pdf, Vorlage, Musterlösung
9 Phong-Shading mit GLSL pdf, Vorlage, Musterlösung
10 Schatten pdf, Vorlage, Musterlösung
11 Shader Effekte pdf, Vorlage

Programmbeispiele

Die Vorlesungsfolien enthalten einige Programmbeispiele. Diese sind hier noch einmal separat aufgelistet:

Kapitel Name Java (Desktop) Java (Android) C++ (Qt) C++ (glut) WebGL GSN Composer
2.x HelloGUI Code Code Code      
2.x MyMenuBar Code Code Code      
2.x MyButton Code Code, XML-Version Code      
2.x ActionButton Code Code Code      
2.x MyActionMenu Code Code Code      
2.x MyTouchEvent Code Code Code      
2.x MyBorderLayout Code      
2.x HorizontalLayout
Code      
2.x MyGridLayout Code Code      
2.x MySpringLayout Code      
2.x NestedLayouts Code      
2.x MyProgressBar Code      
2.x PausedActivity Code      
2.x LineRectCircle Code Code Code      
2.x MyGeneralPath Code Code Code      
3.1 House2D Code      
3.1 MyBufferedImage Code      
4.1 FirstTriangle Code Code Code    
5.1 TriangleTransform Code Code Code    
5.2 GimbalLock Code Code Code    
5.2 RotationInterpolation Code Code Code    
6.1 Dolly Zoom Code Code Code    
6.1 LookAt Code Code Code    
6.1 LookAtLocalTrans Code Code Code    
6.1 Viewport Code Code Code    
6.1 ZFighting Code Code Code    
6.2 Axonometric Code Code Code    
6.2 Oblique Code Code Code    
7.1 Texture Code Code Code    
7.1 TextureParameter Code Code Code    
7.1 TextureBlend Code Code    
7.1 Texture3D Code Code Code    
7.1 Fbo Code Code Code    
7.1 FboDepth Code Code Code    
8.1 VboDrawArrays Code Code Code Code    
8.1 VboDrawElements Code Code Code Code    
8.1 VboUpdate Code Code Code Code    
8.1 VboStride Code Code Code Code    
8.1 Vao Code Code Code    
8.1 ObjToVboExample Code Code Code Code    
8.1 FirstForwardCompatible Code Code Code    
9.1 FirstShader Code Code Code Code Code Code
9.1 ShaderUniform Code Code Code Code Code Code
9.1 ShaderNormalTrans Code Code Code Code Code Code
9.1 ShaderTexture Code Code Code Code Code Code
10.1 ShaderLightMat Code Code Code Code Code Code
10.1 ShaderPhongPointLight Code
10.1 ShaderPhongSpot Code Code Code
10.1 ImageBasedLighting Code
10.2 PlanarShadow Code
10.2 PlanarShadowAmbient Code
10.2 ShadowMap Code

Für einige dieser Beispiele wird das Werkzeug ObjToVbo.cpp benötigt, das ein 3D-Modell im Wavefront OBJ Format in ein Array von Floats umwandelt und in eine Text- oder Binärdatei speichert. Ein solches Float-Array kann schnell und mit wenig Programmieraufwand gelesen und direkt an ein VBO in OpenGL übergeben werden.

Eine App mit den Android Programmbeispielen ist auf Google Play verfügbar: http://play.google.com/store/apps/details?id=de.unimarburg.gpapp

Hinweis: Diese Liste ist derzeit noch unvollständig und wird im Laufe des Semesters aktualisiert

Interaktive Demonstrationen

 
Kapitel  Titel Link
3.2 Rasterkonvertierung von Polygonen demo
10.1 Phong / Blinn Phong Shading demo
11.1 Shadow Maps demo (intern)
11.2 Screen Space Ambient Occlusion (SSAO) demo (intern)
12.1 Ear Cutting demo

Zuletzt aktualisiert: 20.06.2020 · thormaeh

 
 
 
Fb. 12 - Mathematik und Informatik

AG Grafik und Multimedia, Hans-Meerwein-Straße 6, D-35032 Marburg
Tel. +49 6421 28-21514, Fax +49 6421 28-25466, E-Mail: heinb@mathematik.uni-marburg.de

URL dieser Seite: https://www.uni-marburg.de/fb12/arbeitsgruppen/grafikmultimedia/lehre/grafik

Impressum | Datenschutz