Einführung in die Grundlagen von 3D-Engines

60

Transcript of Einführung in die Grundlagen von 3D-Engines

Page 1: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

Einführung in die Grundlagen von 3D-Engines

Teil 1: Mathematische Grundlagen

M. Kle�mann M. Muckho�

Xpiriax Software

RPC 2009

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 2: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

Gliederung

1 Ein paar Begri�e zum AnfangGame EngineGrundlagen 3D-Engine

2 Mathematische Grundlagen3D-2D-TransformationTranslation im RaumRotation im Raum

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 3: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

Game EngineGrundlagen 3D-Engine

Gliederung

1 Ein paar Begri�e zum AnfangGame EngineGrundlagen 3D-Engine

2 Mathematische Grundlagen3D-2D-TransformationTranslation im RaumRotation im Raum

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 4: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

Game EngineGrundlagen 3D-Engine

Was ist eine Game Engine?

Eine Game Engine ist das Grundgerüst eines Computerspiels

ist Programmcode bzw. eine Sammlung vonwiederverwendbaren Codebausteinen

wird oft für einen bestimmten Spieltyp entwickelt: Shooter,Echtzeit-Strategie, ...

besteht aus Komponenten: Gra�k, Audio, Physik, Input, ...

populäre Beispiele:

Doom3-Engine (id Tech 4)Gamebryo (Prince of Persia: Sands of Time-Trilogie, SidMeier's Pirates, Sid Meier's Civiliziation IV, Dark Age ofCamelot, The Elder Scrolls: Morrowind, Oblivion und Fallout 3)SCUMM (Monkey Island Reihe)3D GameStudio

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 5: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

Game EngineGrundlagen 3D-Engine

Was ist eine Game Engine?

Eine Game Engine ist das Grundgerüst eines Computerspiels

ist Programmcode bzw. eine Sammlung vonwiederverwendbaren Codebausteinen

wird oft für einen bestimmten Spieltyp entwickelt: Shooter,Echtzeit-Strategie, ...

besteht aus Komponenten: Gra�k, Audio, Physik, Input, ...

populäre Beispiele:

Doom3-Engine (id Tech 4)Gamebryo (Prince of Persia: Sands of Time-Trilogie, SidMeier's Pirates, Sid Meier's Civiliziation IV, Dark Age ofCamelot, The Elder Scrolls: Morrowind, Oblivion und Fallout 3)SCUMM (Monkey Island Reihe)3D GameStudio

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 6: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

Game EngineGrundlagen 3D-Engine

Was ist eine Game Engine?

Eine Game Engine ist das Grundgerüst eines Computerspiels

ist Programmcode bzw. eine Sammlung vonwiederverwendbaren Codebausteinen

wird oft für einen bestimmten Spieltyp entwickelt: Shooter,Echtzeit-Strategie, ...

besteht aus Komponenten: Gra�k, Audio, Physik, Input, ...

populäre Beispiele:

Doom3-Engine (id Tech 4)Gamebryo (Prince of Persia: Sands of Time-Trilogie, SidMeier's Pirates, Sid Meier's Civiliziation IV, Dark Age ofCamelot, The Elder Scrolls: Morrowind, Oblivion und Fallout 3)SCUMM (Monkey Island Reihe)3D GameStudio

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 7: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

Game EngineGrundlagen 3D-Engine

Was ist eine Game Engine?

Eine Game Engine ist das Grundgerüst eines Computerspiels

ist Programmcode bzw. eine Sammlung vonwiederverwendbaren Codebausteinen

wird oft für einen bestimmten Spieltyp entwickelt: Shooter,Echtzeit-Strategie, ...

besteht aus Komponenten: Gra�k, Audio, Physik, Input, ...

populäre Beispiele:

Doom3-Engine (id Tech 4)Gamebryo (Prince of Persia: Sands of Time-Trilogie, SidMeier's Pirates, Sid Meier's Civiliziation IV, Dark Age ofCamelot, The Elder Scrolls: Morrowind, Oblivion und Fallout 3)SCUMM (Monkey Island Reihe)3D GameStudio

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 8: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

Game EngineGrundlagen 3D-Engine

Was ist eine Game Engine?

Eine Game Engine ist das Grundgerüst eines Computerspiels

ist Programmcode bzw. eine Sammlung vonwiederverwendbaren Codebausteinen

wird oft für einen bestimmten Spieltyp entwickelt: Shooter,Echtzeit-Strategie, ...

besteht aus Komponenten: Gra�k, Audio, Physik, Input, ...

populäre Beispiele:

Doom3-Engine (id Tech 4)Gamebryo (Prince of Persia: Sands of Time-Trilogie, SidMeier's Pirates, Sid Meier's Civiliziation IV, Dark Age ofCamelot, The Elder Scrolls: Morrowind, Oblivion und Fallout 3)SCUMM (Monkey Island Reihe)3D GameStudio

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 9: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

Game EngineGrundlagen 3D-Engine

Hauptbestandteile einer Game Engine

Render Engine (3D-Engine)

Anzeige der (heutzutage meist dreidimensionalen) Spielgra�k

Sound Engine

Ausgabe von Sound und Musik

Physics Engine

Simulation von physikalischen und pseudo-physikalischenE�ekten, wie z.B. Schwerkraft, Auftrieb im Wasser undSliding, etc...

Data loading & Input Engine

Laden der (3D-)Modelle, des Levels sowie der SounddateienVerarbeiten der Nutzereingaben von Maus, Tastatur undJoystick

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 10: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

Game EngineGrundlagen 3D-Engine

Hauptbestandteile einer Game Engine

Render Engine (3D-Engine)

Anzeige der (heutzutage meist dreidimensionalen) Spielgra�k

Sound Engine

Ausgabe von Sound und Musik

Physics Engine

Simulation von physikalischen und pseudo-physikalischenE�ekten, wie z.B. Schwerkraft, Auftrieb im Wasser undSliding, etc...

Data loading & Input Engine

Laden der (3D-)Modelle, des Levels sowie der SounddateienVerarbeiten der Nutzereingaben von Maus, Tastatur undJoystick

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 11: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

Game EngineGrundlagen 3D-Engine

Hauptbestandteile einer Game Engine

Render Engine (3D-Engine)

Anzeige der (heutzutage meist dreidimensionalen) Spielgra�k

Sound Engine

Ausgabe von Sound und Musik

Physics Engine

Simulation von physikalischen und pseudo-physikalischenE�ekten, wie z.B. Schwerkraft, Auftrieb im Wasser undSliding, etc...

Data loading & Input Engine

Laden der (3D-)Modelle, des Levels sowie der SounddateienVerarbeiten der Nutzereingaben von Maus, Tastatur undJoystick

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 12: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

Game EngineGrundlagen 3D-Engine

Hauptbestandteile einer Game Engine

Render Engine (3D-Engine)

Anzeige der (heutzutage meist dreidimensionalen) Spielgra�k

Sound Engine

Ausgabe von Sound und Musik

Physics Engine

Simulation von physikalischen und pseudo-physikalischenE�ekten, wie z.B. Schwerkraft, Auftrieb im Wasser undSliding, etc...

Data loading & Input Engine

Laden der (3D-)Modelle, des Levels sowie der SounddateienVerarbeiten der Nutzereingaben von Maus, Tastatur undJoystick

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 13: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

Game EngineGrundlagen 3D-Engine

Gliederung

1 Ein paar Begri�e zum AnfangGame EngineGrundlagen 3D-Engine

2 Mathematische Grundlagen3D-2D-TransformationTranslation im RaumRotation im Raum

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 14: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

Game EngineGrundlagen 3D-Engine

Koordinatensysteme

Koordinatensystem aus der Schule Koordinatensystem für 3D-Engine

P1 := (3 | 1) P2 := (3 | 1 | 1)

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 15: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

Game EngineGrundlagen 3D-Engine

Woraus bestehen 3D-Objekte am Computer?

Repräsentation durch Eckpunkte (Vertices):

−→

Die Eckpunkte werden als Koordinaten P = (x ,y ,z) imdreidimensionalen Raum geschrieben. Beispiel:

P = (1,1,0)

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 16: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

Gliederung

1 Ein paar Begri�e zum AnfangGame EngineGrundlagen 3D-Engine

2 Mathematische Grundlagen3D-2D-TransformationTranslation im RaumRotation im Raum

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 17: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

Wie zeichnet man dreidimensionale Objekteauf einen zweidimensionalen Bildschirm?

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 18: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

Idee: Abzeichnen auf einer Scheibe

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 19: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

Vorgehensweise beim Abzeichnen

Das Abzeichnen erfolgt in zwei Schritten:

1 Umrechnung der Eckpunkte: Hier werden die Eckpunkte vom3D-Raum (x,y,z) in den 2D-Raum der Scheibe (x,y)umgewandelt

2 Ausmalen der Flächen: Nach der Umrechnung werden dieFlächen zwischen den Eckpunkten auf der Scheibe ausgemalt

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 20: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

Vorgehensweise beim Abzeichnen

Das Abzeichnen erfolgt in zwei Schritten:

1 Umrechnung der Eckpunkte: Hier werden die Eckpunkte vom3D-Raum (x,y,z) in den 2D-Raum der Scheibe (x,y)umgewandelt

2 Ausmalen der Flächen: Nach der Umrechnung werden dieFlächen zwischen den Eckpunkten auf der Scheibe ausgemalt

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 21: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

Schritt 1: Umrechnen der Eckpunkte

Berechnung für Breite (x) und Höhe (y) können umabhängigvoneinander vorgenommen werden

Problem wird daduch zum zweidimensionalen Problem

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 22: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

Schritt 1: Umrechnen der Eckpunkte

Berechnung für Breite (x) und Höhe (y) können umabhängigvoneinander vorgenommen werden

Problem wird daduch zum zweidimensionalen Problem

Beispiel: Berechnung der Höhe (y)

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 23: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

Schritt 1: Umrechnen der Eckpunkte

Berechnung für Breite (x) und Höhe (y) können umabhängigvoneinander vorgenommen werden

Problem wird daduch zum zweidimensionalen Problem

Beispiel: Berechnung der Höhe (y)

Strahlensatzy2DDist

= y3Dz3D

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 24: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

Schritt 1: Umrechnen der Eckpunkte

Berechnung für Breite (x) und Höhe (y) können umabhängigvoneinander vorgenommen werden

Problem wird daduch zum zweidimensionalen Problem

Beispiel: Berechnung der Höhe (y)

Strahlensatzy2DDist

= y3Dz3D

läÿt sich umstellen zu

y2D = y3Dz3D·Dist

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 25: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

Schritt 2: Ausmalen der Flächen

Nach dem Umrechnen der Eckpunkte werden die Flächen zwischen den Eckpunktenauf der Scheibe ausgefüllt.

Es werden nur Dreiecke als Flächen genutzt (einfacher weil nicht knickbar →Blatt Papier)

Dreieck werden zeilenweise entweder mit Farbe oder Textur gefüllt

Das Füllen übernimmt heute die Gra�kkarte

Füllverfahren für Texturen sind erst mit Linearer Algebra erklärbar

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 26: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

Schritt 2: Ausmalen der Flächen

Nach dem Umrechnen der Eckpunkte werden die Flächen zwischen den Eckpunktenauf der Scheibe ausgefüllt.

Es werden nur Dreiecke als Flächen genutzt (einfacher weil nicht knickbar →Blatt Papier)

Dreieck werden zeilenweise entweder mit Farbe oder Textur gefüllt

Das Füllen übernimmt heute die Gra�kkarte

Füllverfahren für Texturen sind erst mit Linearer Algebra erklärbar

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 27: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

Schritt 2: Ausmalen der Flächen

Nach dem Umrechnen der Eckpunkte werden die Flächen zwischen den Eckpunktenauf der Scheibe ausgefüllt.

Es werden nur Dreiecke als Flächen genutzt (einfacher weil nicht knickbar →Blatt Papier)

Dreieck werden zeilenweise entweder mit Farbe oder Textur gefüllt

Das Füllen übernimmt heute die Gra�kkarte

Füllverfahren für Texturen sind erst mit Linearer Algebra erklärbar

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 28: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

Schritt 2: Ausmalen der Flächen

Nach dem Umrechnen der Eckpunkte werden die Flächen zwischen den Eckpunktenauf der Scheibe ausgefüllt.

Es werden nur Dreiecke als Flächen genutzt (einfacher weil nicht knickbar →Blatt Papier)

Dreieck werden zeilenweise entweder mit Farbe oder Textur gefüllt

Das Füllen übernimmt heute die Gra�kkarte

Füllverfahren für Texturen sind erst mit Linearer Algebra erklärbar

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 29: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

Schritt 2: Ausmalen der Flächen

Nach dem Umrechnen der Eckpunkte werden die Flächen zwischen den Eckpunktenauf der Scheibe ausgefüllt.

Es werden nur Dreiecke als Flächen genutzt (einfacher weil nicht knickbar →Blatt Papier)

Dreieck werden zeilenweise entweder mit Farbe oder Textur gefüllt

Das Füllen übernimmt heute die Gra�kkarte

Füllverfahren für Texturen sind erst mit Linearer Algebra erklärbar

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 30: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

Gliederung

1 Ein paar Begri�e zum AnfangGame EngineGrundlagen 3D-Engine

2 Mathematische Grundlagen3D-2D-TransformationTranslation im RaumRotation im Raum

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 31: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

Wie bewegt man die Objekte im Raum?

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 32: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

Bewegung eines Würfels

Bewegung wird durch simple Addition bewerkstelligt

Addition erfolgt für jeden Punkt unabhängig

z.B. für P := (x ,y ,z) x

y

z

+

−50

0

=

x−5

y

z

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 33: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

Bewegung eines Würfels

Bewegung wird durch simple Addition bewerkstelligt

Addition erfolgt für jeden Punkt unabhängig

z.B. für P := (x ,y ,z) x

y

z

+

−50

0

=

x−5

y

z

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 34: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

Bewegung eines Würfels

Bewegung wird durch simple Addition bewerkstelligt

Addition erfolgt für jeden Punkt unabhängig

z.B. für P := (x ,y ,z) x

y

z

+

−50

0

=

x−5

y

z

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 35: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

Gliederung

1 Ein paar Begri�e zum AnfangGame EngineGrundlagen 3D-Engine

2 Mathematische Grundlagen3D-2D-TransformationTranslation im RaumRotation im Raum

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 36: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

Wie dreht man ein Objekt in einer3D-Engine?

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 37: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

Rotation von Objekten

Problemstellung:

Mittelpunkt (0,0,0) ist im Zentrum der Kiste

Kiste soll um eine Achse rotiert werden (hier Y-Achse)

Lösung:

Rotation der (Eck-)Punkte der Kiste

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 38: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

Rotation von Objekten

Problemstellung:

Mittelpunkt (0,0,0) ist im Zentrum der Kiste

Kiste soll um eine Achse rotiert werden (hier Y-Achse)

Lösung:

Rotation der (Eck-)Punkte der Kiste

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 39: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

Rotation von Eckpunkten

Bei genauer Betrachtung fällt auf

Bei der Rotation um die y-Achse verändern sich die y-Wertenicht

Rotation um y-Achse ist zweidimensional lösbar

Betrachtung der Szene "von oben"

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 40: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

Rotation von Eckpunkten

Bei genauer Betrachtung fällt auf

Bei der Rotation um die y-Achse verändern sich die y-Wertenicht

Rotation um y-Achse ist zweidimensional lösbar

Betrachtung der Szene "von oben"

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 41: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

Rotation von Eckpunkten

Bei genauer Betrachtung fällt auf

Bei der Rotation um die y-Achse verändern sich die y-Wertenicht

Rotation um y-Achse ist zweidimensional lösbar

Betrachtung der Szene "von oben"

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 42: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

2D-Rotation von Eckpunkten - Herleitung 1

Skizze und Formelsammlung

(1) sin(α) = zr

(2) cos(α) = xr

(3) sin(β ) = nzr

(4) cos(β ) = nxr

(5) β = α + τ

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 43: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

2D-Rotation von Eckpunkten - Herleitung 1

Skizze und Formelsammlung

(1) sin(α) = zr

(2) cos(α) = xr

(3) sin(β ) = nzr

(4) cos(β ) = nxr

(5) β = α + τ

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 44: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

2D-Rotation von Eckpunkten - Herleitung 1

Skizze und Formelsammlung

(1) sin(α) = zr

(2) cos(α) = xr

(3) sin(β ) = nzr

(4) cos(β ) = nxr

(5) β = α + τ

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 45: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

2D-Rotation von Eckpunkten - Herleitung 1

Skizze und Formelsammlung

(1) sin(α) = zr

(2) cos(α) = xr

(3) sin(β ) = nzr

(4) cos(β ) = nxr

(5) β = α + τ

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 46: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

2D-Rotation von Eckpunkten - Herleitung 1

Skizze und Formelsammlung

(1) sin(α) = zr

(2) cos(α) = xr

(3) sin(β ) = nzr

(4) cos(β ) = nxr

(5) β = α + τ

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 47: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

2D-Rotation von Eckpunkten - Herleitung 1

Skizze und Formelsammlung

(1) sin(α) = zr

(2) cos(α) = xr

(3) sin(β ) = nzr

(4) cos(β ) = nxr

(5) β = α + τ

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 48: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

2D-Rotation von Eckpunkten - Herleitung 2

(1) sin(α) = z

r

(2) cos(α) = x

r

(3) sin(β) = nz

r

(4) cos(β) = nx

r

(5) β = α + τ

(6) Additionstheorem:sin(α + τ) = sin(α) ·cos(τ)+cos(α) · sin(τ)

Anweisung Berechnung

(3) nach nz umstellen nz = sin(β ) · r(5) anwenden nz = sin(α + τ) · r

(6) anwenden nz = [sin(α) · cos(τ)+ cos(α) · sin(τ)] · r

versuchen α loszuwerden nz = [ zr· cos(τ)+ x

r· sin(τ)] · r

r rauskürzen nz = z · cos(τ)+ x · sin(τ)

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 49: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

2D-Rotation von Eckpunkten - Herleitung 2

(1) sin(α) = z

r

(2) cos(α) = x

r

(3) sin(β) = nz

r

(4) cos(β) = nx

r

(5) β = α + τ

(6) Additionstheorem:sin(α + τ) = sin(α) ·cos(τ)+cos(α) · sin(τ)

Anweisung Berechnung

(3) nach nz umstellen nz = sin(β ) · r

(5) anwenden nz = sin(α + τ) · r

(6) anwenden nz = [sin(α) · cos(τ)+ cos(α) · sin(τ)] · r

versuchen α loszuwerden nz = [ zr· cos(τ)+ x

r· sin(τ)] · r

r rauskürzen nz = z · cos(τ)+ x · sin(τ)

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 50: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

2D-Rotation von Eckpunkten - Herleitung 2

(1) sin(α) = z

r

(2) cos(α) = x

r

(3) sin(β) = nz

r

(4) cos(β) = nx

r

(5) β = α + τ

(6) Additionstheorem:sin(α + τ) = sin(α) ·cos(τ)+cos(α) · sin(τ)

Anweisung Berechnung

(3) nach nz umstellen nz = sin(β ) · r(5) anwenden nz = sin(α + τ) · r

(6) anwenden nz = [sin(α) · cos(τ)+ cos(α) · sin(τ)] · r

versuchen α loszuwerden nz = [ zr· cos(τ)+ x

r· sin(τ)] · r

r rauskürzen nz = z · cos(τ)+ x · sin(τ)

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 51: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

2D-Rotation von Eckpunkten - Herleitung 2

(1) sin(α) = z

r

(2) cos(α) = x

r

(3) sin(β) = nz

r

(4) cos(β) = nx

r

(5) β = α + τ

(6) Additionstheorem:sin(α + τ) = sin(α) ·cos(τ)+cos(α) · sin(τ)

Anweisung Berechnung

(3) nach nz umstellen nz = sin(β ) · r(5) anwenden nz = sin(α + τ) · r

(6) anwenden nz = [sin(α) · cos(τ)+ cos(α) · sin(τ)] · r

versuchen α loszuwerden nz = [ zr· cos(τ)+ x

r· sin(τ)] · r

r rauskürzen nz = z · cos(τ)+ x · sin(τ)

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 52: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

2D-Rotation von Eckpunkten - Herleitung 2

(1) sin(α) = z

r

(2) cos(α) = x

r

(3) sin(β) = nz

r

(4) cos(β) = nx

r

(5) β = α + τ

(6) Additionstheorem:sin(α + τ) = sin(α) ·cos(τ)+cos(α) · sin(τ)

Anweisung Berechnung

(3) nach nz umstellen nz = sin(β ) · r(5) anwenden nz = sin(α + τ) · r

(6) anwenden nz = [sin(α) · cos(τ)+ cos(α) · sin(τ)] · r

versuchen α loszuwerden nz = [ zr· cos(τ)+ x

r· sin(τ)] · r

r rauskürzen nz = z · cos(τ)+ x · sin(τ)

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 53: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

2D-Rotation von Eckpunkten - Herleitung 2

(1) sin(α) = z

r

(2) cos(α) = x

r

(3) sin(β) = nz

r

(4) cos(β) = nx

r

(5) β = α + τ

(6) Additionstheorem:sin(α + τ) = sin(α) ·cos(τ)+cos(α) · sin(τ)

Anweisung Berechnung

(3) nach nz umstellen nz = sin(β ) · r(5) anwenden nz = sin(α + τ) · r

(6) anwenden nz = [sin(α) · cos(τ)+ cos(α) · sin(τ)] · r

versuchen α loszuwerden nz = [ zr· cos(τ)+ x

r· sin(τ)] · r

r rauskürzen nz = z · cos(τ)+ x · sin(τ)

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 54: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

Rotation um Y-Achse

Die Formel für den neuen x-Wert ergibt sich analog:nx = x · cos(τ)− z · sin(τ).

Insgesamt ergibt sich für die Rotation um den Winkel τ (umdie y-Achse):

P =

x

y

z

Rotation−→ NP =

x · cos(τ)− z · sin(τ)y

z · cos(τ)+ x · sin(τ)

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 55: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

3D-2D-TransformationTranslation im RaumRotation im Raum

Rotation um Y-Achse

Die Formel für den neuen x-Wert ergibt sich analog:nx = x · cos(τ)− z · sin(τ).

Insgesamt ergibt sich für die Rotation um den Winkel τ (umdie y-Achse):

P =

x

y

z

Rotation−→ NP =

x · cos(τ)− z · sin(τ)y

z · cos(τ)+ x · sin(τ)

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 56: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

Fazit

Ein 3D-Objekt besteht aus einer Sammlung von Eckpunkten

Für Darstellung, Bewegung und Drehung von 3D-Objektenreicht Schulmathematik

Wichtig

Wer eine eigene 3D-Engine schreiben möchte, sollte zumindest einwenig Mathematik beherrschen!

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 57: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

Fazit

Ein 3D-Objekt besteht aus einer Sammlung von Eckpunkten

Für Darstellung, Bewegung und Drehung von 3D-Objektenreicht Schulmathematik

Wichtig

Wer eine eigene 3D-Engine schreiben möchte, sollte zumindest einwenig Mathematik beherrschen!

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 58: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

Fazit

Ein 3D-Objekt besteht aus einer Sammlung von Eckpunkten

Für Darstellung, Bewegung und Drehung von 3D-Objektenreicht Schulmathematik

Wichtig

Wer eine eigene 3D-Engine schreiben möchte, sollte zumindest einwenig Mathematik beherrschen!

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 59: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

Weiterführende Literatur

Computer Graphics: Principles and PracticeFoley et al., Addison-Wesley Professional, ISBN: 9780201848403

3D Game Engine DesignDavid H. Eberly, Morgan Kaufmann, ISBN: 9780122290633

Tricks of the 3D Game Programming GurusAndre LaMothe, Sams, ISBN: 9780672318351

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines

Page 60: Einführung in die Grundlagen von 3D-Engines

Ein paar Begri�e zum AnfangMathematische Grundlagen

Zusammenfassung

Ende Teil 1

M. Kle�mann, M. Muckho� Einführung in die Grundlagen von 3D-Engines