Game Engine Architechture 3D Maths for Games

Slides:



Advertisements
Ähnliche Präsentationen
Computer Graphics Shader
Advertisements

Asymptotische Notation
3. 3D-Betrachtungstransformationen
Schnelle Matrizenoperationen von Christian Büttner
13. Transformationen mit Matrizen
Flächen und Umfang Quadrat Einheitsquadrat Umfang Fläche Dreieck
Komplexe Zahlen und Fourier-Transformation
Seminar Stochastik im WS 02/03
der Universität Oldenburg
Kollisionen erkennen Kollisions- und Schnittpunkttests auf Dreieckbasis Kollisions- und Schnittpunkttests auf Viereckbasis Einsatz von achsenausgerichteten.
Dreidimensionale Spielewelten
Grundlagen der Geometrie
3.2 und 3.2.1: Räumliches Sehen und Koordinaten und Vektoren
Sequentielle Liste - Array
Multivariate Analysemethoden Johannes Gutenberg Universität Mainz
Dynamische Programmierung (2) Matrixkettenprodukt
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Die Geometrie der Ebene
Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof.
Kapitel 4 Geometrische Abbildungen
Geometrie. Geometrie 6. Ebene Geometrie Ein Punkt ist, was keinen Teil hat. Euklid ( ) Gerade analytisch: y = mx + c y(0) = c y(1)
Diskrete Mathematik I Vorlesung Arrays-
Klausur „Diskrete Mathematik II“
Globaler Ansatz Hough-Transformation
Transformationen 09-Transformationen.
Quaternionen Eugenia Schwamberger.
Special Effects Realistischeres Rendern einer Scene.
Starrkörpereigenschaften
Java programmieren mit JavaKara
Duo- und Quad Prozessor-Architektur
FHP - Fachbereich Bauingenieurwesen
Computergraphik mit OpenGL Einführung. Bilder Objekt existiert im Raum unabhängig vom Betrachter Objekte sind beschrieben durch die Position verschiedener.
§24 Affine Koordinatensysteme
Beispiel: Arbeit, Skalarprodukt zwischen Kraft- und Weg-Vektor
Computergrafik - Inhalt
Vektoren Grundbegriffe für das Information Retrieval
Skalare, Vektoren.
Lineare Algebra Komplizierte technologische Abläufe können übersichtlich mit Matrizen dargestellt werden. Prof. Dr. E. Larek
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Quantum Computing Hartmut Klauck Universität Frankfurt WS 04/
Folie 1 Kapitel IV. Matrizen Inhalt: Matrizen als eigenständige mathematische Objekte Zusammenhang zwischen Matrizen und linearen Abbildungen Produkt von.
§3 Allgemeine lineare Gleichungssysteme
Polynome und schnelle Fourier-Transformation
Skalare, Vektoren.
Bewegung auf der Kreisbahn
Inhalt Weg-Zeitgesetz nach der cos- oder sin- Funktion
Einführung in die Programmiersprache C 4
Verhalten von Objekten in der Szene
Lineare Algebra, Teil 2 Abbildungen
Inhalt Vorbemerkung Vorstellung einer Unterrichtssequenz Kritik
Objekte und ihre Beschreibung
Multivariate Statistische Verfahren
Multivariate Statistische Verfahren
PART V CONTACT PHYSICS Chapter Aufbaumodul 3: Visuelle Programmierung II Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung Prof.
Übersicht Täuschung des Tages kurze Wiederholung
Scaffold 29S: Komplexe Zahlen
Übung 2 - MdMT Methoden der Medizintechnik Übung zur Vorlesung Folge 2 – Basics Vom ersten Befehl zum Plot.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung
Lisa Blum - Kathrin Kunze - Michael Kreil
Die Welt der Shader Universität zu Köln WS 14/15 Softwaretechnologie II (Teil 1) Prof. Dr. Manfred Thaller Referent: Lukas Kley Fortgeschrittene Techniken.
THE MATHEMATICS OF PARTICLES & THE LAWS OF MOTION.
Diskrete Mathematik I Vorlesung 2 Arrays.
(Syntax, Strings/Zahlen, Variablen, Arrays)
Grundlagen der Geometrie
Graphische Datenverarbeitung
Beugung an Streuzentren
PCA Principal Component Analysis. Gliederung PCA – Warum eigentlich? PCA – Was ist zu tun? Was passiert eigentlich? Anwendungen Zusammenfassung.
Raster Operationen.
Lineare Algebra II (MAVT)
 Präsentation transkript:

Game Engine Architechture 3D Maths for Games Softwaretechnologoe II Dozent: Prof. Dr. Manfred Thaller Referentin: N. Steinert

Punkte und Vektoren Matrizen Quaternion Vergleich von Rotationalen Repräsentationen Andere nützliche mathematische Objekte Hardware- Accelerated SIMD Mathe Zufallszahl Generator

Punkte und Vektoren Ein Punkt ist eine Lokation in n-Dimensionalen Raum Arten von koordinaten Systemen Cartesisches : P (Px, Py, Pz) Left-Handed Right-Handed Zylindrisches : P (Ph , Pr , Pѳ) Sphärisches : P (Pr, Pϕ, Pѳ )

Vektoren haben Größe und Richtung Positionsvektor – Anfang immer im Ursprung des Koordinaten Systems Vektoren und Punkte können durch drei Skalarwerte vorgestellt werden Cartesische Basisvektoren( rechtwinklig zu einander und mit Länge eins – entsprächen die drei Axen): i,j,k Punkte und Vektoren als Summe von Skalaren, multipliziert mit den Basisvektoren: (5,3,-2) = 5i+3j-2k

Operationen mit Vektoren Multiplikation mit Skalar: sa = (sax, say, saz) ;ändert die Größe des Vektors, negatives s ändert die Richtung Hadamard Produkt/ Nonuniformes Skalieren – Multiplikation von zwei Vektoren: sa = (sx ax ,sy ay ,szaz) Addition: a + b = [ (ax + bx), ( ay + by ),( az + bz ) ] Subtraktion: a + (-b) = [ (ax - bx), (ay - by), (az - bz )] Distanz zwischen Sphären finden, berechnen von Positionen in der nächsten Frame Unitvektor – mit der Länge eins Normalisation: u = v/ |v| = 1/v . v -> umwandeln von einem Vektor in Unitvektor

Normal Vektor – rechtwinklig zu einer Fläche, meistens mit Unitlänge ( Definition von Ebenen, Lichtberechnungen) Punktprodukt: a.b = axbx + ayby + azbz = d (Skalar) oder a.b = |a| |b| cos(ѳ) Vektorreihenfolge irrelevant Punktprodukttests: prüfen, ob Vektoren kollinear (a.b=|a||b|=ab ; a.b =-ab) o. perpendikular (a.b = 0) sind Testen, ob ein Punkt sich unter o. über eine Ebene befindet; ein Feind hinter o. vor einem Player Lineare Interpolation: findet Zwischenpunkte zwischen zwei Punkte

Länge des Kreuzprodukts: |a x b| = |a||b| sin(ѳ) Kreuzprodukt: Vektor, perpendikular zu den multiplizierten Vektoren a x b = [(aybz –azby), (azbx-axbz), (axby-aybx)] Länge des Kreuzprodukts: |a x b| = |a||b| sin(ѳ) Richtung : abhängig von Koordinaten System(LH o. RH) Eigenschaften: a x b ≠ b x a aber a x b = -b x a a x (b + c) = (a x b)+ (a x c) (sa) x b = a x (sb) = s (a x b) Einsatz: Finden von Unitvektor, normal zu einer Oberfläche Physiksimulationen

Matrizen Matrizen werden für Transformationen benutzt, können multipliziert werden, nicht kommutativ (AB ≠BA) Punkte und Vektoren können als Matrizen dargestellt werden Identitätsmatrix : multipliziert mit andere Matrix, ergibt immer dieselbe Matrix Inversion: die inverse Matrix von A tut das Gegenteil v. A AAˉ¹ = Identitätsmatrix Transposition MT : Reihen werden Spalten und umgekehrt

Translation: Punkt durch Vektor t verschieben: r + t = [r 1] I 0 = [(r+t) 1] t 1 Rotation: [r 1] R 0 = [rR 1] 0 1 Skalieren: [ r 1] S3x3 0 = [ rS3x3 1]; uniformes Skalieren sx= 0 1 sy = sz , Objekte behalten Form 4x4 Matrizen haben immer ein [0 0 0 1] Vektor; er wird weggelassen, wegen Speicherplatz

Konvertierungsmatrix: MC->P jC 0 Vektoren entspr. auf Coordinate Space: die Koordinate eines Punktes werden anhand verschiedener Axen-Sets angegeben Model Space: Cartesisches Koordinaten System meistens in der Mitte des Models [F (ront), U (p), L (eft)] World Space: Zentrum ist willkürlich ausgewählt View( Camera) Space: im zentralen Punkt der Kamera Change of Basis: konvertieren von Objekten ín ein anderes KS iC 0 i, j, k – unit basis Konvertierungsmatrix: MC->P jC 0 Vektoren entspr. auf kC 0 der Child x,y,z-Achsen tC 0 in Parent-Koor t – Translation der Child-KS rel. zu Parent-KS Die unit Basis Vektoren können von einer beliebigen Transformationsmatrix extrahiert werden

Punkte und Vektoren werden durch Matrix MA->B transformiert Transformieren von Normale Vektoren durch die inverse Transpositionsmatrix (Mˉ¹A->B)T - Perpendikularität bleibt erhalten Matrizen im Speicher : in C/C++ als zweidimensionale Arrays: float M [4][4] Vektoren können in Zeilen oder Spalten gespeichert werden ( bei den meisten Engines in Zeilen)

Quaternions q = [ qx qy qz qw ] Ein Quaternion von unit Länge (qx² + qy ² + qz ² + qw ² = 1) repräsentiert dteidimensionale Rotation; kann betrachtet werden als 3D Vektor und Skalar ( qv qs ) Operationen mit Quaternions: Mltiplikation: representiert zusammengesetzte Rotationen nach einander Inverse qˉ¹; zur errechnung conjugate q* = [-qv qs ] gebraucht: qˉ¹ = q*/|q|²; Rotieren von Vektoren: in Quaternionform bringen: v = [v 0] ; v’ = rotate(q,v) = qvqˉ¹ o. qvq* (quaternion immer unit Länge) q verknüpfen : Rotationen q1, q2, q3 nacheinander ausf.; qnet = q3q2q1

Matrizen können in Quaternions konvertiert werden und umgekehrt (q = [ qv qs] = [x y z w] ) Rotational Linear Interpolation: findet Rotationen ,die sich zwischen zwei bekannte Rotationspunkte befinden : qLERP = LERP(qA, qB, β); resultierendes q normalisieren Spherical Linear Interpolation: berücksichtig,dass q Punkte auf eine 4D Hypersphere sind; benutzt als Gewichte die sin von den Winkel zwischen den q

Vergleich von Rotationalen Repräsntationen Eulersche Winkel: Roll-Nick-Gier-Winkel –intuitiv, einfach, kleine Größe, leicht zu interpolieren bei Rotation um eine Achse; Interpolation schwer um eine willkürliche Achse, bei 90° Drehung um z.B. x-Achse, y-Achse verschwindet in z-Achse 3x3 Matrizen: beliebige Rotation, auch von Punkten und Vektoren, Reversion durch inverse Matrize ; nicht intuitiv, keine leichte Interpolation, viel Speicherplatz Quaternions: Rotationen werden leicht verkettet und auf Vektoren und Punkte angewendet, leichte Interpolation, wenig Speicherplatz

SQT ( Skalar, Quaternion, Translationvektor) Transformation – alternativ zu 4x4 Matrize: sehr wenig Speicherplatz Doppelte Quaternoins: vier doppelte Komponente, benutzt für Transformationen; jedes doppelte Komponent kann durch zwei reale Zahlen repräsentiert werden

Andere nützliche Mathematische Objekte Linie: kann durch Punkt und Unitvektor dargestellt werden Strahl: Linie, die geht unendlich in nur eine Richtung Sphären : definiert durch Zentrum C und Radius r; passt gut in 4-Element-Vektor [ Cx Cy Cz r] Ebenen: definiert durch einen Punkt und ein Normalvektor; können als Vektor gespeichert werden- L = [ n d] = [a b c d] d- Distanz zum Ursprung und werden mit inverse transposite Matrize (Mˉ¹A->B) transformiert

Achsenausgerichtet bounding Boxes: dargestellt als 6-Element-Vektor mit den min und max Punkt auf jeder Achse; benutzt um Kollisionen auszuschließen Gerichtete bounding Boxes: ausgerichtet auf die Achsen des dazugehörigen Objekts;Punkt wird in Objekt-Koordinate umgewandelt und geprüft , ob er drinliegt Stümpfe: benutz für die Kamere-Sicht, bestehen aus 6 Ebenen; prüfen, ob Punkt in alle 6 Ebenen drin liegt Convexe polyhedrale Regione: definiert durch beliebige Anzahl Ebenen; Punktprüfung wie bei Stümpfe

Hardware-Accelerated SIMD Math SIMD- single instruction multiple data: parallele Anwendung eines Befehls auf mehrere Daten SSE Registers:128-bit SSE haben vier 32-bit floats [x y z w]; Daten so lange wie möglich in SSE lassen, um die Kosten für Datentrasfer zwischen Speicher und Register zu minimieren _m128 Datentyp in C/C++ mit MVS für Deklaration von globale Variablen, class , struct; werden vom compiler im SSE Register gespeichert; Programmierer muss die _m128-Typelemente an 16-Byte Adressgrenze anpassen

Kodieren mit SSE ‚intrinsics‘ : Funktionen die direkt in Assembler übersetzt werden; #include <xmmintrin.h> um sie zu benutzen Vektor-Matrix- Multipikation mit SSE: r = vM ,Vektor und Matrixreihen in SSE Register speichern, Vektorkomponente mit _mm_shuffle_ps in separate Register speichern, und mit den Matrixreihen multiplizieren, so wird das gesuchte Vektor in ein SSE Register gespeichert

Zufallszahlen Generator deterministische predefinierte Sequenzen von Zahlen Linear Congruential(übereinstimmend) Generator: benutzt in C Library rand(); Zufallsreihen schlecht; entsprechen nicht der Kriterien von Zufallstests Mersene Twister Hat Periode von 219937-1 Besteht viele Zufallstests auch Diehard Ist schnell Mother-of-All und Xorshift von George Marsaglia ( Diehard Test) Mother-of-All: 32-Bit Zufallszahlen mit Nichtwiederholungsperiode von 2250 Xorshift: schneller als Mother, Qualität zwischen Mersene & Mother