Herzlich Willkommen zum zweiten Master-Modul der Computergrafik an der Technischen Hochschule Mittelhessen. In diesem Semester erweitern wir unsere 3D Engine aus dem vorherigen Semester um eine Reihe von optimierten Verfahren und Algorithmen um das Projekt praxistauglich zu machen.
Ziel dieses Moduls: Ihr eigenes Projekt
Dieses Modul verbindet drei verschiedene Themenbereiche miteinander. Es werden grundlegende Konzepte der Informatik wiederholt, Grundlagen der physikalischen Simulation implementiert und spezielle Algorithmen der Computergrafik eingeführt.
In jedem Kapitel gibt es einen Teil der Inhalte bereits als fertige Lösung für Sie zum Erkunden und Ausprobieren. Einen weiteren Teil der Inhalte erarbeiten Sie selbst in Form von Aufgaben die Sie am Ende jedes Kapitels finden. Zusammen haben Sie damit alle Tools in der Hand um eine komplexe 3D Simulation zu entwickeln.
Für einen optimalen Lernerfolg empfehle ich Ihnen ein eigenes Projekt anzulegen und Ihre Ergebnisse der einzelnen Kapitel in Ihr persönliches Projekt zu übernehmen. Auf diese Weise können Sie im Laufe des Kurses ein eigenes Computerspiel ganz nach Ihren Wünschen erstellen und gestalten.
Bei dieser Vorgehensweise haben Sie (hoffentlich) den meisten Spaß am Thema und sind hinterher fit in der Materie.
Einleitung
Die Grafikengine mit der wir in diesem Kurs arbeiten, ist ein Fork der Engine aus dem vorherigen Modul. Wenn Sie das vorherige Modul besucht haben, werden Ihnen Aufbau und Struktur bekannt vorkommen. Dennoch hat sich einiges geändert.
In diesem Kapitel wollen wir uns mit diesen Änderungen kritisch auseinander setzen. Versuchen Sie sich einen guten Überblick über Aufbau und Struktur des Projektes zu verschaffen und betrachten Sie kritisch was Sie für sinnvoll erachten und was Sie anpassen würden.
Hinweis zur Prüfung: Im Gegensatz zu allen nachfolgenden Kapiteln, wird dieses Kapitel nicht eigenständig in der Prüfung behandelt. Kapitel 1 dient als Einführung in die 3D Engine. In den folgenden Kapiteln werden wir die hier vorgestellte 3D Engine schrittweise erweitern und optimieren. Ein tiefes Verständnis dieses Kapitels ist daher notwendig um die folgenden Kapitel sinnvoll bearbeiten zu können.
Projekt klonen
Checken Sie zunächst das Repository der aktuellen Veranstaltung aus.
$ git clone https://github.com/tr-thm/effiziente-algorithmen-in-der-computergrafik.git
Alternativ per Browser unter github.com/tr-thm/effiziente-algorithmen-in-der-computergrafik.
Genau wie im vorherigen Modul finden Sie auch in diesem Repo, für jedes Kapitel einen eigenen Unterordner. Aktuell nur für Kapitel 1. Jedes weitere Kapitel wird jeweils einige Tage vor der jeweiligen Veranstaltung veröffentlicht.
Diesen Text hier finden Sie ebenfalls im Repository, unter /cgx_01/cgx_01.trj. Wenn Sie die Datei offline lesen möchten, laden Sie sich die kostenlose App Redvery Journal aus dem App Store Ihrer Wahl oder von redvery.com/journal.
Erstellen Sie einen Branch für Ihre Änderungen
Die einzelnen Kapitel werden nach und nach freigeschaltet. An bestehenden Kapiteln wird es Änderungen geben. Sie sollten daher in der Lage sein durch regelmäßiges git pull ihr Repository zu aktualisieren. Das funktioniert am besten, wenn Sie keine Änderungen am main branch vornehmen.
Erstellen Sie sich stattdessen einen eigenen Branch, den Sie an Ihre Bedürfnisse anpassen.
$ cd effiziente-algorithmen-in-der-computergrafik
$ git branch <branch_name>
$ git checkout <branch_name>
Programm starten
Bringen Sie Kapitel 1 der Effizienten Algorithmen (cgx_01) zum Laufen. Die benötigten Bibliotheken sind bereits enthalten. Im Idealfall reicht folgendes:
$ cd cgx_01
$ make run
Falls nicht, lesen Sie nochmal im Kapitel Compiler und Entwicklungsumgebung installieren aus dem vorherigen Modul nach welche zusätzliche Software auf Ihrem Rechner installiert sein muss.
Unter Linux muss GLFW systemweit installiert werden, damit es gefunden wird. Das geht unter Ubuntu z.B. so:
$ sudo apt install libglfw3 libglfw3-dev
Aufgaben
1. Neue Engine ausprobieren
Starten Sie die neue Software und prüfen Sie ob Sie Unterschiede zur vorherigen Version entdecken. Notieren Sie sich Antworten zu den folgenden Fragen bevor Sie in den Code schauen.
- Welche Tastenbefehle gibt es?
- Was verhält sich anders?
- Welche Eigenart fällt Ihnen bei der Kamerasteuerung auf?
- Was glauben Sie was für eine Art von Shader implementiert ist?
2. Erstellen Sie ein Diff
Checken Sie eine "saubere" Version des Git Repositories des vorherigen Moduls Computergrafik aus. Diese Version muss nicht lauffähig sein und Sie benötigen keine Modelle oder Texturen.
$ git clone https://github.com/tr-thm/computergrafik.git
Alternativ per Browser unter github.com/tr-thm/computergrafik.
Nutzen Sie anschließend ein Diff-Tool Ihrer Wahl (z.B. die VSCode Erweiterung "Compare Folders") und vergleichen Sie CGM_10 mit CGX_01.
Sortieren Sie Ihre Funde nach einem System welches Sie für sinnvoll halten und notieren Sie diese in übersichtlicher Form, so dass Sie darüber diskutieren können.
3. Vorstellung der Ergebnisse und Diskussion
Überlegen Sie sich ob die gefundenen Änderungen Sinn machen.
Welches Ziel mag der Autor mit diesen Anpassungen gehabt haben?
Halten Sie die Neuerungen für gut oder schlecht?
In der Plenumsveranstaltung darf jeder seine Ergebnisse vorstellen und wir diskutieren darüber.