add some stuff to readme

This commit is contained in:
Luca Conte 2024-06-24 16:52:30 +02:00
parent c744862f7b
commit c4d93df442
1 changed files with 112 additions and 5 deletions

117
README.md
View File

@ -22,15 +22,122 @@ $ make run
```
Bedienung über Keyboard :D
- WASD
- R & F für Hoch & Runter
- WASD für freie Kamerabewegung
- R & F oder Shift + Leertaste: Kamera Hoch & Runter bewegen
- 1,2,3,4,5,6 für Verschiedene Kamerapositionen
- 1: Vor den Tafeln
- 2-4: Verschiedene Sitzplätze
- 5: Vogelperspektive
- 6: Close-Up vom Normal Map Demo Cube
- X & C: Tafel Hoch & Runter schieben
- ESC: Programm schließen
## weitere Infos
- Alle Objekte werden durch eine Scene Graph Datei (.scg) mit selbst entwickelter Syntax definiert und platziert.
Erklärung der Scene Graph Syntax:
```
# Mit einem # beginnende Zeilen sind Kommentare
# Definition eines Models
# Jedem Model muss eine einzigartige ID gegeben werden
model 0
# Angabe der OBJ Datei, aus der die Modelldaten eingelesen werden
# Alle Dateipfade sollten absolut sein oder ralativ zum working directory
file myObjFile.obj
# Angabe einer Textur Datei
texture myTexture.jpg
# Angabe einer zweiten Textur Datei. Diese wird über die erste gelegt
texture2 mySecondTexture.png
# Angabe einer Normal Map
normal myNormalMap.png
# Angabe des Shininess Wertes des Models
shininess 10.0
# Objekte sind Scene Graph Nodes.
# Auch sie brauchen eine einzigartige ID
# Diese ID muss nur unter den Objekten einzigartig sein
# Ein Objekt kann also die selbe ID haben wie ein Model
obj 102
# Angabe des Modells, das das Objekt nutzt.
# Diese Angabe ist optional. Sie kann weggelassen werden, wenn es sich z.B. um ein Group Objekt handelt
# Hier wird die vorher gesetzte Model ID referenziert
use 0
# Angabe des Parent Nodes mittels Objekt ID
# Diese Angabe ist optional. Wenn kein Parent Node angegeben ist, wird automatisch der root node (ID: -1) als parent gesetzt
parent 101
# Angabe eines Namen
# Optional. Kann im Code verwendet werden um den Scene Graph nach diesem Objekt zu durchsuchen.
# Für diesen Zweck kann aber auch die Obejekt ID genutzt werden.
# Beim Printen des Scene Graph (s. Konsolenausgabe bei Programmstart) wird der Name geprintet
# Ist keine Name gesetzt, wird stattdessen die Objekt ID geprintet
name MeinObjekt
# Transformationen
# Die Transformationen werden in der Reihenfolge ausgeführt, in der sie angegeben wurden
# Transformationen propagieren auf jegliche Child Elemente weiter
translate 1.0 0.0 0.0
scale 1.0 1.5 0.5
rotateX 1.0
rotateY 3.141
rotateZ 0.1
# Beispiel
model 0
file sphere.obj
texture sun.jpg
model 1
file sphere.obj
texture earth.png
model 2
file sphere.obj
texture moon.png
normal moon-normal.png
obj 0
name Sonnensystem
obj 1
use 0
name Sonne
parent 0
scale 2.0 2.0 2.0
obj 2
use 1
name Erde
parent 0
translate 5.0 0.0 0.0
obj 3
use 2
name Mond
parent 2
scale 0.2 0.2 0.2
translate 0.0 0.0 2.0
```
- es befinden sich zwei Punkt-Lichtquellen im Raum die sich langsam im Kreis umeinander drehen
- Die Box neben dem Lehrerpult ist dort um Normal Maps zu demonstrieren. 6 Drücken für Close-Up Ansicht. Am besten ist der Effekt in der Spekularreflektion sichtbar. Einfach kurz warten bis das Lich im richtigen Winkel darüber fliegt
- Die Tafeln nutzen 2 übereinandergelegte Texturen: Eine für die Tafel selbst, und eine für den darauf geschriebenen Text
## TODO LIST
- [X] README-Datei mit Informationen zum Bauen, zum Starten und zur Bedienung des
@ -38,7 +145,7 @@ Programms
- [X] Matrixfunktionen zur Umsetzung der benötigten Transformationen (Verschiebung, Drehung,
Skalierung, Position und Orientierung der Kamera, Perspektivprojektion, Normalenmatrix)
- [X] mehrere Objekte in einer 3D-Szene
- [?] Animation der Kamera und/oder eines Objekts
- [X] Animation der Kamera und/oder eines Objekts
- [X] Beleuchtung der Szene, wie in der Vorlesung beschrieben
- [X] Texturierung von mindestens einem Objekt
@ -53,8 +160,8 @@ Dateien)
- [X] Tests für alle Matrixfunktionen
- [x] Strukturierung der Szene durch einen einfachen Szenengraph
- [X] einfache Benutzerinteraktion mit Kamera und/oder Objekten (z. B. über Tastatur)
- [?] Beleuchtung der Szene mit mehr als einer Lichtquelle
- [?] gleichzeitige Verwendung von mindestens zwei Texturen in einem Objekt
- [X] Beleuchtung der Szene mit mehr als einer Lichtquelle
- [X] gleichzeitige Verwendung von mindestens zwei Texturen in einem Objekt
- [?] gleichzeitige Verwendung von mindestens zwei verschiedenen Shader-Programmen in einer Szene
- [ ] transparente Objekte
- [?] Verwendung einer Umgebungstextur