CG
-
- 1 / 67
-
Cartes-fiches
Was ist ein Koordinatensystem
normalerweise in 2D u. beschreibt Paare u. ihre Distanzen, sowie Werte.
Vektoren und Punkte
Punkt > beschreibt eine Position
Vektor > beschreibt einen Richtung o. einen Unterschied
Translation (Übersetzung)
- Kann als ein Vektor gelten
Wenn eine Linie zwei Punkte besitzt, kann hiermit die Position geändert werden.
- bewahren die Länge einer Linie
- den Winkel
Rotation mit einer Matrix
- Verändert den Winkel, aber nicht die Länge
- jedoch bleibt der relative Winkel erhalten
Linien (Strahl) in ihrer parametrischen Form
- nützlich für eine Zeichnung einer Linie
- nutzt Delta_t von 0 bis 1
- Wie viele Iterationen durchlaufen werden, hängt von der Größe u. den Pixel des Bildschirms ab
Polylines
- sequenz von N Punkten, definieren eine Polyline
- jede p_n, p_n+1, beschreibt eine Linie
Polygone
- Sequenz on N Punkten
- N Punkt beschreibt das Linien Segment
Einfaches Polygon
Wenn die Linien Segmente nicht zusammenlaufen, redet man von einem simplen Polygon o. einfachen.
Konstruktion eines einfachen Polygones
Two Peasants algorithmus wird genutzt:
- wähle zwei extreme x-werte
- bau von zwei sets von punkten > über und unten der Linie
- Sortiere diese
Convex vs. Concave Polygones
Convex:
- Jedes Paar von Punkten im Polygon
Concave:
- Paar von Punkten verbunden, auch außerhalb des Polygons
Graham Scan
Finden der P0 und sortieren den Rest anhand des Winkels
Winkel Kalkukaltion
- mit dem niedrigsten Gegenständ starten
- diese Winkel mussen nicht berechnet werden
List Lines vs. Line Strip
- Dopplungen und "Memory Overflow" entfernt
Triangles
Flach:
- drei Punkte
Vorder und Rückseite
- Geordnet
- CCW für OpenGL
Triangle Mesh Optimized
- jedes Dreieck hat eine eigene seperate Einheit
- benötigt 3 Punkte pro Dreieck
- beinhaltet 3 floats
Triangles Ratio
Vertices - Edges - Triangles Ratio V:T:E
- 6 mal mehr Dreiecken Eckpunkte als normal
Triangle Strip
- verbindet Dreiecke zu einem langen Streifen
- wird für Oberflächen benötigt
Triangle Fan
- verwendet wenn eine Disk oder etwas bedeckt werden soll
- n+2 Punkte pro n Dreieck
General Triangle MEsh
- erstelle seperat diese Topologie von der aktuellen 3D Position
Nutzt zwei Listen:
- triangle indices
- list of vertices
Index Größen
1 byte > 256 max vertices
2 byte > 65k max vertices
4 byte > 4 billionen ....
ByteBuffer nutzen
Müssen eine bestimmte Anzahl von Buffer als einen "direct memory ByteBuffer" zuteilen. Wird umgewandelt in einen Float/IntBuffer und dann können Daten eingefügt werden, von einem Array. Danach wird die Position zurück gesetzt.
ByteBuffer nutzen
Müssen eine bestimmte Anzahl von Buffer als einen "direct memory ByteBuffer" zuteilen. Wird umgewandelt in einen Float/IntBuffer und dann können Daten eingefügt werden, von einem Array. Danach wird die Position zurück gesetzt.
Square Matrix und Identity Matrix
Eine Matrix von n x n Dimensionen ist eine Square Matrix und ist mit n Diagonalen als Elemente befüllt. Eine Matrix mit nur einer Diagonalen wird als Identity Matrix bezeichnet.
Transposed Matrix
Hat folgende Notation:
n x m zu m x n Matrix
> Wird mit einem Script T markiert
Matrix multiplication
Um zwei Matrizen zu Multiplizieren, muss eine Bedingung gegeben sein.
Matrix A > muss in der Form A = n x k Matrix
Matrix B > B = k x m Matrix
- müssen ihre jeweiligen Spalten passen
Row vs. Column Vektoren
Row Vektors:
- kann als flaot geschrieben werden
- nutzt Direkt x
- transformationen vABDC
Column Vektor:
- wird bei OpenGL genutzt
- transformationen DCBAv
Lineare Transformation
- Linien bleiben Linien
- Winkel ändern sich
- Längen ändern sich
- Inhalt und Fläche ändert sich
- vieles ändert sich vllt. jedoch wird nicht "gebogen" o. "verzerrt"
Rotation (Drehung)
- Nutzt eine Axe
- Ein Wert bleibt fest
OpenGL Versionen
OpenGL 1 / 2:
- feste Funktionen
- beschränkt auf einer Auswahl von Operationen
- diese sind benannt
OpenGL 3 / 4:
- läuft auf moderne Hardware
- programmierbarer PipeLine Shader
- abstrakte Konzepte
- nicht so komfortabel wie version 2
- jedoch mehr flexibel in der Ausführung
Drawing Polygones
glVertex3f(), kann jedoch nur im Rahmen von glBeginn und glEnd angewandt werden.
Optimieren von Polygonen
glDrawElements(primitiver Typ, indexBuffer)
- malz eine bestimmte Anhalt von Eckpunkten von einem Typ
Elektromagnetische Radation
Wellen werden als Wellenlänger und Aptimtude definiert
Representing Reflections
- man redet von Absorbstion und Remission von Photonen
- Licht kommt rein und Fraktionen gelangen wieder zurück
Diffuse Reflection
- LAbertian Reflection (BRDF)
- Oberfläche sieht danach aus, als hätte sie die Selbe Helligkeit wie der Ausgangspunkt
Specular Relfectance
Nicht alle Materialien sind "diffuse", dies ist abhänig von der Betrachtung
I = (RVektor * VVektor)hochN
Local versus Global Models
Für richtiges Rendert wird meist nicht.-lokale Informationen benötigt. Jedoch ist die möglich Realistische Renderung, in der Globalen, da dort mehr Daten verwendet werden.
Ambient Lighting
Es wird zum Licht meist ein weiterer Faktor hinzugefügt /Ambient Lightning. Kleine Portionen von Licht werden per Grundeinstellung dem Model addiert.
Full Phong Model
besitzt:
- Ambient Komponenten
- Diffuse Komponenten
Specular Komponenten
Shading
Wir müssen meist mit Polygone Meshes arbeiten, deshalb gibt es mehrere Arten von Shading:
- flat
- gourand
- phong
Flat Shading
Es wird eine normale definiert in jedem Polygone. Licht wird in das Center geschrieben, woraus der Schatten berechnet wird. Dies erzeugt jedoch ein kachelartiges Muster auf der Oberfläche eines Models.