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 1 Übung Gruppe 2
1 Donnerstag 08:00 Uhr 10:00 Uhr 12:15 Uhr
2 Montag 14:15 Uhr
2 Dienstag 08:00 Uhr 10:00 Uhr

Für einige durch Feiertage ausfallende Veranstaltungen werden folgende Ausweichtermine angeboten:

Zug Entfällt Ausweichtermin Raum
2 Montag 17.04. Donnerstag 13.04. 16:00 Uhr B 321
2 Montag 01.05. Donnerstag 27.04. 16:00 Uhr B 321
2 Montag 05.06. Donnerstag 01.06. 16:00 Uhr B 321

Seminaristischer Unterricht

Nr. Zug 1 Zug 2 Thema
1 06.04. 10.04. Einführung und Rasterbilder
2 13.04. 13.04. Gammakorrektur, Antialiasing, Lineare Interpolation
3 20.04. 24.04. Raytracing
4 27.04. 27.04. Strahlschnitte
5 04.05. 08.05. Reflexion
6 11.05. 15.05. Transformationen 1
18.05. 22.05. Test, Besprechung Musterlösung 1-6
7 01.06. 29.05. Transformationen 2
8 08.06. 05.06. Beschleunigung
9 15.06. 12.06. Spiegel und Glas
10 22.06. 19.06. Texturen
11 29.06. 26.06. Lokale Lichtquellen
12 06.07. 03.07. Animation
13 13.07. 10.07. Klausurvorbereitung
20.07. 20.07. Klausur
27.07. 27.07. Rendering Competition Finale, Klausurrückgabe

Ü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 13.04. 23:59 Uhr 18.04. 23:59 Uhr
2 a02 20.04. 23:59 Uhr 25.04. 23:59 Uhr
3 a03 27.04. 23:59 Uhr 02.05. 23:59 Uhr
4 a04 04.05. 23:59 Uhr 09.05. 23:59 Uhr
5 a05 11.05. 23:59 Uhr 16.05. 23:59 Uhr
6 a06 01.06. 23:59 Uhr 30.05. 23:59 Uhr
7 a07 08.06. 23:59 Uhr 06.06. 23:59 Uhr
8 a08 22.06. 23:59 Uhr 20.06. 23:59 Uhr
9 a09 29.06. 23:59 Uhr 27.06. 23:59 Uhr
10 a10 06.07. 23:59 Uhr 04.07. 23:59 Uhr
11 a11 13.07. 23:59 Uhr 11.07. 23:59 Uhr
12 a12 20.07. 23:59 Uhr 18.07. 23:59 Uhr
Bonusaufgaben b0[1-5] 20.07. 23:59 Uhr 18.07. 23:59 Uhr
Rendering Competition c01 25.07. 23:59 Uhr 25.07. 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 Tags ist entscheidend für die rechtzeitige Abgabe einer Aufgabe. Der Abgabestatus kann 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. In der Mitte des Semesters wird ein Test, am Ende des Semesters wird eine Klausur geschrieben. Diese werden ebenfalls mit Punkten bewertet. In der Summe sind mit Übungsaufgaben, Test und Klausur 100 Punkte erreichbar.

Leistung Pflicht Punkte
Aufgabe 1 5
Aufgabe 2 5
Aufgabe 3 5
Aufgabe 4 5
Aufgabe 5 5
Aufgabe 6 5
Aufgabe 7 5
Aufgabe 8 5
Aufgabe 9 5
Aufgabe 10 5
Aufgabe 11 5
Aufgabe 12 5
Test 10
Klausur 30
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.

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.

Klausur

Die Teilnahme an Test und Klausur ist nicht verpflichtend. Die Klausur gilt als bestanden, wenn mindestens 1 Punkt erreicht wird.

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. Weitere mögliche Zusatzleistungen werden semesterbegleitend bekannt gegeben.

Zusätzliche Leistung Punkte
Vorrechnen an der Tafel 1
Lösung der Bonusaufgaben jeweils 5
Teilnahme am Finale der Rendering Competition 2
1. Platz Rendering Competition 10
2. Platz Rendering Competition 5

Rendering Competition

Semesterbegleitend wird eine Rendering Competition ausgetragen. Jeder Teilnehmer reicht ein Bild oder eine Animation ein. Am Ende 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.

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

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