Ein Schlüssel für die Performance eines Spiels besteht in der Durchführung von effizienten Sichtbarkeitstests mit dem Ziel, dass möglichst nur die sichtbaren Bereiche der Spielewelt gerendert werden.
Im denkbar einfachsten Test wird lediglich überprüft, ob sich ein Objekt vor der Kamera befindet:
Posts mit dem Label Mathematik der 3D-Programmierung werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Mathematik der 3D-Programmierung werden angezeigt. Alle Posts anzeigen
3D-Programmierung (Mathematik) Teil 10: Kameradrehungen im 3D-Raum
Im 2D-Raum kann die Kamera immer nur um die Blickrichtungsachse gedreht werden. Für die Simulation von Kameradrehungen im 3D-Raum definiert man darüber hinaus zwei weitere Drehachsen, die ihrerseits senkrecht zur Blickrichtungsachse sowie senkrecht zueinander orientiert sind:
- Drehung um die Blickrichtungsachse (der Kamera)
- Drehung um die horizontale Achse (der Kamera)
- Drehung um die vertikale Achse (der Kamera)
Labels:
Mathematik der 3D-Programmierung
3D-Programmierung (Mathematik) Teil 09: Viewportkoordinaten, Bildschirmkoordinaten und Object Picking
Die Sicht- und Projektionstransformationen sind letzten Endes dafür verantwortlich, dass ein Objekt, das sich irgendwo im Blickfeld der Kamera befindet, auf dem Bildschirm dargestellt werden kann. Die Bildschirmposition eines Objekts kann nun entweder in Bildschirmkoordinaten (Screen Coordinates) oder Viewportkoordinaten angegeben werden.
Labels:
Mathematik der 3D-Programmierung
3D-Programmierung (Mathematik) Teil 08: Kamera- und Projektionstransformation
In den vorangegangenen Teilen dieser Artikelserie sind wir bereits ausführlich darauf eingegangen, wie sich Spieleobjekte in der Spielewelt (world space) transformieren lassen. Bis zu ihrer Darstellung auf dem Bildschirm sind jedoch noch zwei weitere Transformationsschritte notwendig – die Kameratransformation sowie die Projektionstransformation.
Labels:
Mathematik der 3D-Programmierung
3D-Programmierung (Mathematik) Teil 07: inverse Matrix versus transponierte Matrix
Teil 7 dieser Artikelreihe ist für alle diejenigen Programmierer gedacht, die bereits an einer eigenen Mathematik-Bibliothek arbeiten bzw. sich demnächst damit befassen wollen. Im Folgenden werden beispielhafte Implementierungen zweier wichtiger Matrizenfunktionen vorgestellt. Die erste Funktion dient zur Berechnung einer transponierten Matrix, die zweite zur Berechnung einer inversen Matrix.
Labels:
Mathematik der 3D-Programmierung
3D-Programmierung (Mathematik) Teil 06: Matrizen aus Sicht des Programmierers
Bei der täglichen Arbeit mit Vektoren und Matrizen können Sie als Spieleentwickler entweder auf eine vorgefertigte Mathe-Bibliothek vertrauen, die Sie bei Bedarf schrittweise durch zusätzliche Funktionen erweitern können oder Sie fangen bei null an und programmieren alles in Eigenregie. Für Anfänger ist die hauseigene D3DXMath-Bibliothek sicher die beste Wahl, zumal Sie auf unserer Seite eine quelloffene Implementierung sämtlicher Klassen und Funktionen als Teil aller Beispielprogramme und Frameworks finden können.
Labels:
Mathematik der 3D-Programmierung
3D-Programmierung (Mathematik) Teil 05: Matrizen für Skalierung, Translation und Rotation
Angefangen bei der Skalierung und Rotation der Vertices eines 3D-Modells bis hin zu ihrer Verschiebung an die korrekte Position in der Spielewelt, haben Sie im letzten Teil dieser Artikelserie die wichtigsten Transformationsschritte kennengelernt, die für die korrekte Darstellung eines Spieleobjekts notwendig sind – jedoch mit dem großen Nachteil, dass die Transformationen einzeln und nacheinander durchgeführt werden mussten.
In diesem Teil werden wir uns nun mit Matrizen befassen, und Sie werden erfahren, wie man mit ihrer Hilfe alle Transformationsschritte zu einer einzigen Gesamttransformation zusammenfassen kann.
In diesem Teil werden wir uns nun mit Matrizen befassen, und Sie werden erfahren, wie man mit ihrer Hilfe alle Transformationsschritte zu einer einzigen Gesamttransformation zusammenfassen kann.
Labels:
Mathematik der 3D-Programmierung
3D-Programmierung (Mathematik) Teil 04: Skalierung, Translation und Rotation
Die Grundlagen der Vektorrechnung wurden bereits in den vorangegangenen Teilen dieser Artikelserie behandelt. An dieser Stelle werden wir nun anhand praktischer Überlegungen erarbeiten, wie sich die Spieleobjekte in der 3D-Welt transformieren lassen. Als Beispiel diene uns ein kleiner Raumflug.
Labels:
Mathematik der 3D-Programmierung
3D-Programmierung (Mathematik) Teil 03: Polarkoordinaten
Folgendes Problem gilt es zu lösen – bitte geben sie Lage der Stadt Berlin auf der Erdkugel an. Würde man mit kartesischen Koordinaten arbeiten, würde man den Ursprung des Koordinatensystems ins Zentrum der Erde legen und dann dem Ortsvektor von Berlin die gesuchten x-, y- und z-Koordinaten zuweisen. Nun gut, niemand ginge auf diese Weise vor, stattdessen würde man auf einem Globus oder einer Weltkarte nach dem korrekten Längen- und Breitengrad suchen. Zur Information, die Breitengrade liegen parallel zum Äquator und die Längengrade verlaufen senkrecht dazu von Pol zu Pol. Zweites Problem – man beschreibe die Bewegung der Erde um die Sonne und nehme hierfür zur Vereinfachung eine nahezu kreisförmige Bewegung an.
Labels:
Mathematik der 3D-Programmierung
3D-Programmierung (Mathematik) Teil 02: Vektoren
Zentrale Elemente bei der mathematischen Beschreibung von Spieleobjekten sind Vektoren und Matrizen. In Teil 1 dieser 3D-Mathematik-Serie wurde bereits kurz auf Orts- und Geschwindigkeitsvektoren eingegangen. In Teil 2 soll der Umgang mit Vektoren vertieft werden. Zur Wiederholung, grafisch lässt sich ein Vektor als ein Pfeil veranschaulichen. Ein Vektor besitzt zwei Eigenschaften – Länge (Betrag) und Richtung. Besonders anschaulich lässt sich das am Beispiel der Geschwindigkeit erklären. Der Betrag des Geschwindigkeitsvektors kann am Tachometer abgelesen werden. Die Richtung des Geschwindigkeitsvektors entspricht der Fahrtrichtung.
Labels:
Mathematik der 3D-Programmierung
3D-Programmierung (Mathematik) Teil 01: Koordinatensysteme
Wer sich mit der 3D-Programmierung beschäftigen will, muss die zugrunde liegenden mathematischen Konzepte verstehen lernen. Bevor man überhaupt irgendetwas berechnen und darstellen kann, muss man zunächst einen Bezugsrahmen, ein so genanntes Koordinatensystem angeben. Mathematisch gesehen lässt sich ein Koordinatensystem auf unterschiedliche Arten definieren. Hierbei gilt jedoch, dass bei einem zweidimensionalen Koordinatensystem immer zwei, bei einem dreidimensionalen Koordinatensystem immer drei bzw. bei einem n-dimensionalen Koordinatensystem immer n voneinander unabhängige Koordinaten angegeben werden müssen. Das bekannteste Koordinatensystem ist mit Sicherheit das so genannte dreidimensionale kartesische Koordinatensystem, das aus drei zueinander senkrecht liegenden Achsen (x-, y- und z-Achse) gebildet wird. Je nach Anordnung der Achsen unterscheidet man zwischen Rechts- und Linkssystem (wird bevorzugt verwendet, z. B. von DirectX).
Labels:
Mathematik der 3D-Programmierung
Abonnieren
Posts (Atom)
