Computergrafik - Projekt SS 2012 M.Sc. Peter Salz
Einführung Erweiterung der CG-Übungen Nicht nur akademische Beispiele Kerntechnologien der Computergrafik vertiefen C++ (Programmiersprache) OpenGL (Grafik-Framework, Middleware) Qt (GUI, Anbindung an OS, Datenstrukturen) Komplexe Software im Team entwickeln CG-Algorithmen implementieren und benutzen
Inhalt Implementierung eines Editors Constructive Solid Geometry (CSG) Freiformflächen Design einer triangulierten Szene Kreatives Modellieren mit den obigen Primitiven Implementierung eines Raytracers Realistisches Rendering triangulierter Szenen CG 0.4
Lernziele GUI-Programmierung mit Qt C++ sicher beherrschen OpenGL verstehen und benutzen Mit Dateiformaten arbeiten Performance verbessern mit Datenstrukturen Modellierung mit Dreiecksnetzen und Flächen Raytracing SW-Entwicklung im Team mit Zeitvorgaben CG 2.7
Ziel Lauffähige Programme Dokumentation der Entwicklung Bilder, Live-Demo Szenen-/Geometrie-Dateien Kurzvortrag Kennenlernen der AG Ergebnisse präsentieren Verlauf vorstellen Bilder zeigen (Un)Benoteter Praktikumsschein CG 2.8
Der Editor CG 2.9
Der Editor Freie Ansicht CG 2.10
Der Editor Parallelprojektionen CG 2.11
Der Editor Objekt hinzufügen CG 2.12
Der Editor Objekt löschen CG 2.13
Der Editor Objektauswahl CG 2.14
Der Editor Materialeditor CG 2.15
Der Editor Transformationen CG 2.16
Der Editor Ansicht ändern CG 2.17
Der Editor Speichern CG 2.18
Aufgabenstellung 2. CSG-Objekte Würfel Kegel Zylinder Kugel Torus a) Parametrisierung CG 2.19
Aufgabenstellung 2. CSG-Objekte Würfel Kegel Zylinder Kugel Torus b) Triangulierung und Normalenberechnung CG 2.20
Aufgabenstellung 2. CSG-Objekte Würfel Kegel Zylinder Kugel Torus c) Transformationen mit Normalenerhaltung CG 2.21
Aufgabenstellung 2. CSG-Objekte Würfel Kegel Zylinder Kugel Torus d) Texturierung CG 2.22
Aufgabenstellung 3. Freiformflächen Interpolierend Bikubisch Lagrange-Tensorprodukt-Fläche a) Uniforme Parametrisierung CG 2.23
Aufgabenstellung 3. Freiformflächen Interpolierend Bikubisch Lagrange-Tensorprodukt-Fläche b) Manipulation der Kontroll- punkte CG 2.24
Aufgabenstellung 4. Modellierung einer Szene Umfang und Komplexität beliebig CG 2.25
Aufgabenstellung 5. Raytracing Strahlverfolgung Triangulierte Szene Raumunterteilung a) Kamera-Setup CG 2.26
Aufgabenstellung 5. Raytracing Strahlverfolgung Triangulierte Szene Raumunterteilung b) Schnittpunkt-Berechnung Eye Pixel CG 2.27
Aufgabenstellung 5. Raytracing Strahlverfolgung Triangulierte Szene Raumunterteilung c) Phong-Beleuchtung CG 2.28
Aufgabenstellung 5. Raytracing Strahlverfolgung Triangulierte Szene Raumunterteilung d) Schatten, Reflektion, Transparenz CG 2.29
Aufgabenstellung 5. Raytracing Strahlverfolgung Triangulierte Szene Raumunterteilung e) Beschleunigung durch kd-baum http://www.enseignement.polytechnique.fr/informatique/inf562/td/td3/images/kd-tree_2d_example.jpg CG 2.30
Aufgabenstellung 5. Raytracing Strahlverfolgung Triangulierte Szene Raumunterteilung f) Texturierung mit bilinearer Filterung CG 2.31
Aufgabenstellung 5. Raytracing Zusammenfassung R 3 L 3 opaque object R 2 light R 1 surface normal L 1 light rays / shadow rays initial ray T 1 L 4 T 4 pixel R 4 eye semi-transparent object CG 2.32
Ausgangspunkt Computergrafik-Übung SS 12 Würfel, Zylinder, Kegel als Triangulierungen Material-Eigenschaften Feature Lines Transformationen, Normalenberechnung, -erhaltung Texturing GUI: 3D-Interaktion, Auswahl, Farben auswählen CG 2.33
Ausgangspunkt Computergrafik-Übung SS 12 Raycasting von Kugelszenen Schnittpunktberechnung Strahl/Kugel Phong-Beleuchtung und Schattenwurf Texturing von Kugeln CG 2.35
Hauptaufgaben Was noch zu tun bleibt Kugel und Torus Lagrange-Flächen Editor Funktionalität und GUI Datenstrukturen für Szene Datenformate Texturierung erweitern Szene modellieren Reflektion und Transparenz kd-baum CG 2.38
Ablauf Vollständiges Aufgaben-Set verfügbar Einarbeitung in die Beispielprogramme SW-Entwicklung im Kleinen Teamleiter bestimmen Koordinator Ansprechpartner Arbeitsbereiche benennen und verteilen GUI Datenformate Geometrie... Aufgaben den Arbeitsbereichen zuordnen, in Arbeitspakete aufteilen und Komplexität/Aufwand abschätzen. CG 2.42
Ablauf SW-Entwicklung im Kleinen Aufgaben den Arbeitsbereichen zuordnen, in Arbeitspakete aufteilen und Komplexität/Aufwand abschätzen. z.b.: Arbeitsaufwand A 1-3, Komplexität K 1-3 Beispiel: Arbeitsbereich Dateiformate / IO Editor-Szene Triangulierung Raytracing-Szene Lesen/Schreiben Datenstruktur CG 2.43
Ablauf SW-Entwicklung im Kleinen Aufgaben den Arbeitsbereichen zuordnen, in Arbeitspakete aufteilen und Komplexität/Aufwand abschätzen. z.b.: Arbeitsaufwand A 1-3, Komplexität K 1-3 Beispiel: Arbeitsbereich Dateiformate / IO Editor-Szene A2-K1 Triangulierung A2-K2 Raytracing-Szene A1-K1 Lesen/Schreiben A1-K2 Datenstruktur A1-K1 CG 2.44
Ablauf Wöchentliche Treffen (ca. 20-30 Minuten) Was war geplant? Was wurde realisiert? Was ist als nächstes geplant Probleme Feedback CG 2.45
Entwicklungs-Umgebung Versionsverwaltung Kollaborative Bearbeitung mit Versionskontrolle und Konfliktauflösung Einchecken von Änderungen Zurücksetzen auf frühere Versionen Verschiedene Abzweigungen zum Experimentieren IDE: Qt Creator C++ OpenGL Qt Praktikumsrechner: SuSe Linux Linux (Ubuntu, Debian, SuSe,...) empfohlen Mac OS X geht ohne Probleme Windows wird nicht empfohlen CG 2.46
Organisation Wer wird verbindlich teilnehmen? Wie setzen sich die Gruppen zusammen 3-4 Personen pro Gruppe Zweiergruppen: Nur wenn beide überdurchschnittlich qualifiziert sind. Für jede Gruppe: Zeitrahmen 6-8 Wochen maximal 4-6 Wochen möglich als Vollzeitjob Pausen müssen im Voraus abgesprochen werden CG 2.47
Das war s! Viel Erfolg! CG 2.48