CG1 banner

Lernziele

Die Studierenden lernen die Grundlagen der digitalen Bildsynthese kennen. Sie lernen einfache Verfahren zur Bilderzeugung zusammenhängend zu implementieren und anzuwenden.

Inhalte

Das Modul führt in die Grundlagen der digitalen Bildsynthese ein, und behandelt im seminaristischen Unterricht folgende Themen:

  • Trigonometrie, Vektoren, Punkte, Normalen, Oberflächen
  • Koordinatensysteme und Transformationen
  • Licht, Farbe und Rasterbilder
  • Sampling und Aliasing
  • Modellierung und Geometrie
  • Rendering und Ray-Tracing
  • Kameramodelle
  • Beleuchtung, Schattierung und Reflexion
  • Material und Textur

In den Übungen werden die vermittelten Techniken zur Bilderzeugung aufbauend auf den bisher gesammelten Programmiererfahrung von Grund auf implementiert.

Voraussetzungen

Neben den Modulen Mathematik 1 + 2 wird aufgrund des hohen praktischen Programmieranteils in den Übungen und den Hausarbeiten der erfolgreiche Abschluss der Module Programmierung 1 + 2 dringend empfohlen.

Termine

Das Modul wird in diesem Semester 2-zügig angeboten.

Zug Tag SU Übung Gruppe a Übung Gruppe b
1 Dienstag 08:00 Uhr 10:00 Uhr 12:15 Uhr
2 Mittwoch 12:15 Uhr 14:15 Uhr 16:00 Uhr

Seminaristischer Unterricht

Nr. Zug 1 Zug 2 Thema
1 10.10. 11.10. Einführung und Rasterbilder
2 17.10. 18.10. Gammakorrektur, Antialiasing, Lineare Interpolation
3 24.10. 25.10. Raytracing
4 07.11. 01.11. Klassendesign und Strahlschnitte
5 21.11. 08.11. Reflexion
6 28.11. 22.11. Glass und Metall
7 05.12. 29.11. Transformationen
8 12.12. 06.12. Szenengraph
9 19.12. 13.12. Beschleunigung
10 02.01. 20.12. Texturen
11 09.01. 03.01. Lichtquellen
12 16.01. 10.01. Klausurvorbereitung
13 17.01. 17.01. Klausur (14:00 Uhr, Raum B 101)
14 24.01. 24.01. Rendering Competition, Klausurrückgabe (12:15, Raum B 301)

HTML Folien

Die Foliensätze werden als interaktive HTML-Dokumente (mit reveal.js) bereit gestellt. Wichtige Tastenkürzel:

  • ⇦, ⇨ — Vorherige, nächste Folie
  • ⎋ — Übersicht

Folien als PDF

Die automatische Generierung von PDFs is leider kaputt. PDF-Versionen der Foliensätze können mit Google Chrome selbst erzeugt werden:

  1. Foliensatz in Google Chrome öffnen
  2. ?print-pdf an den URL-Pfad anhängen
  3. Datei > Drucken …
  4. Ziel auswählen > Als PDF speichern …

Übungsaufgaben

Zu jedem Seminaristischen Unterricht gibt es eine Übungsaufgabe. Die Abgabe der Aufgabe erfolgt jeweils eine Woche später am Tag der Übung bis 23:59 Uhr.

Nr. Pflicht Id Abgabe (Zug 1) Abgabe (Zug 2)
1 a01 17.10. 23:59 Uhr 18.10. 23:59 Uhr
2 a02 24.10. 23:59 Uhr 25.10. 23:59 Uhr
3 a03 07.11. 23:59 Uhr 01.11. 23:59 Uhr
4 a04 21.11. 23:59 Uhr 08.11. 23:59 Uhr
5 a05 28.11. 23:59 Uhr 22.11. 23:59 Uhr
6 a06 05.12. 23:59 Uhr 29.11. 23:59 Uhr
7 a07 12.12. 23:59 Uhr 06.12. 23:59 Uhr
8 a08 19.12. 23:59 Uhr 13.12. 23:59 Uhr
9 a09 02.01. 23:59 Uhr 20.12. 23:59 Uhr
10 a10 09.01. 23:59 Uhr 03.01. 23:59 Uhr
11 a11 16.01. 23:59 Uhr 10.01. 23:59 Uhr
12 a12 22.01. 23:59 Uhr 22.01. 23:59 Uhr
Bonus b01-b04 16.01. 23:59 Uhr 16.01. 23:59 Uhr

Die mit markierten Aufgaben sind Pflichtaufgaben (Siehe auch Bewertung und Notenbildung).

Abgabe von Übungsaufgaben

Die Abgabe der Übungsaufgaben erfolgt ausschließlich über ein Repository auf dem Gitlab Server des CGM Labors. Eine Abgabe ist ein mit einem Tag versehener Commit. Der Name des Tags ist folgendermaßen aufgebaut:

  • abgabe-Id (Id ist die Id der Aufgabe)

Zum Umgang mit GIT gibt es auch einige GIT Tipps .

Der Zeitstempel des mit dem Tag versehenen Commits ist entscheidend für die rechtzeitige Abgabe einer Aufgabe.

Der aktuelle Abgabestatus und der aktuelle Punktestand können jederzeit online eingesehen werden:

Projektstruktur

Die Projektstruktur für die Bearbeitung der Übungsaufgaben ist fest vorgegeben. Das Musterprojekt cgg-abgaben wird als Grundlage für die Bearbeitung der Aufgaben bereitgestellt.

Paket cgtools

Das Musterprojekt enthält auch das Java-Paket cgtools mit dem Source Code für einige nützliche Klassen, die bei der Bearbeitung der Aufgaben verwendet werden können.

Das Paket enthält folgende Klassen:

  • cgtools.Random - Ein schneller Xorshift-Zufallszahlengenerator
  • cgtools.ImageWriter - Speichert RGB-Rasterbilder im PNG-Format mit 16-bit pro Komponente
  • cgtools.ImageTexture - Laden von RGB-Rasterbildern und Verwendung als Texturen
  • cgtools.Mat4 - Operationen auf 4x4 Matrizen
  • cgtools.Vec3 - Operationen auf 3D-Vektoren

Bewertung und Notenbildung

Für die erfolgreiche Bearbeitung der Übungsaufgaben werden Punkte vergeben. Am Ende des Semesters wird eine Klausur geschrieben. Diese wird ebenfalls mit Punkten bewertet. In der Summe sind mit Übungsaufgaben und Klausur 100 Punkte erreichbar.

Leistung Pflicht Punkte
Aufgabe 1 - 6 je 5
Aufgabe 6 - 12 je 5
Klausur 40
Summe 100

Übungsaufgaben

Jede Aufgabe ist mit einem festen Abgabetermin versehen. Eine erfolgreiche Abgabe erfolgt spätestens bis zum angegeben Abgabetermin und wird mit 5 Punkten vergütet. Die um eine Woche verspätete Abgabe ist möglich, wird aber nur mit 3 Punkten vergütet. Danach gilt die Aufgabe als nicht erfolgreich abgegeben.

Pflichtaufgaben

Die ersten sechs der 12 Aufgaben (1, 2, 3, 4, 5 und 6) sind Pflichtaufgaben, und müssen erfolgreich abgegeben werden. Wird eine dieser Pflichtaufgaben nicht erfolgreich abgegeben, gilt das gesamte Modul als nicht bestanden.

Überprüfung

Jede Woche werden zwei Abgaben pro Übungsgruppe in einem Gespräch überprüft. Die Überprüfung wird den ausgewählten Teilnehmern am Tag vor dem Übungstermin angekündigt.

Ziel des Gesprächs ist die Bestätigung der Autorenschaft. Dazu werden einige individuell vorbereitete Fragen zur Implementierung gestellt. Werden die Fragen überzeugend beantwortet, gilt die Aufgabe als erfolgreich bearbeitet. Anderenfalls gilt die Aufgabe als nicht gelöst. Dem dadurch eventuell entstehenden Verdacht eines Betrugsversuchs wird dann nachgegangen.

Klausur

Die Teilnahme an Test und Klausur ist nicht verpflichtend. Die Anwesenheit beim Klausurtermin gilt als Teilnahme.

Rendering Competition

Im Rahmen der letzten Übungsaufgabe wird eine Rendering Competition ausgetragen. Jeder Teilnehmer reicht ein Bild oder eine Animation als Wettbewerbsbeitrag ein. In der letzten Veranstaltung des Semesters werden die Beiträge bewertet, und der Sieger bestimmt.

Die Rendering Competition wird über alle Züge ausgetragen. In einer Vorausscheidung werden durch eine Jury 9 Finalteilnehmer ermittelt. In der Endausscheidung werden die Einträge jeweils von den Autoren kurz (1 Minute) vorgestellt. Dann erfolgt die geheime Wahl des Siegers durch alle Anwesenden.

Zusätzliche Bonuspunkte

Durch die Erbringung zusätzlicher Leistungen können Bonuspunkte erlangt werden. Die zusätzlichen Leistungen werden auf Anfrage in den Übungen abgenommen. Mögliche Zusatzleistungen werden semesterbegleitend bekannt gegeben.

Zusätzliche Leistung Punkte
Lösung der Bonusaufgaben jeweils 5
1. Platz Rendering Competition 10
2. Platz Rendering Competition 5

Notenspiegel

Die Gesamtnote wird nach folgendem Schema aus der Summe der erlangten Punkte berechnet.

Punkte >= 95 90 85 80 75 70 65 60 55 50 0
Note 1.0 1.3 1.7 2.0 2.3 2.7 3.0 3.3 3.7 4.0 5.0

Betrugsversuche

Betrugsversuche werden bei erstmaliger Entdeckung für alle Beteiligten mit 10 Strafpunkten geahndet. Beim zweiten Mal erfolgt der Ausschluss vom Modul mit der Modulnote 5.0 und die offizielle Meldung des Betrugsversuchs an die relevanten Gremien der Hochschule.

Accounts im CGM Labor

Für die Rechner im CGM Labor benötigen Sie einen persönlichen Account. Dieser wird zu Beginn des Semesters aus den Beleglisten erzeugt. Der Benutzername ist dabei Ihre Matrikelnummer. Das Passwort muss bei der ersten Anmeldung gesetzt werden.

Literatur

  • Shirley, Peter and Marschner, Steve. Fundamentals of computer graphics. A. K. Peters, Ltd. Website.
  • Suffern, Kevin. Ray Tracing from the Ground Up. A. K. Peters, Ltd. Website

Links

GIT Version Control

GIT Clients