Freigeben über


Koordinatensysteme (Direct3D 9)

In der Regel verwenden 3D-Grafikanwendungen zwei Arten von kartesischen Koordinatensystemen: linkshändig und rechtshändig. In beiden Koordinatensystemen zeigt die positive x-Achse rechts und die positiven Y-Achsenpunkte nach oben. Sie können sich merken, welche Richtung die positiven Z-Achsenpunkte zeigen, indem Sie die Finger ihrer linken oder rechten Hand in die positive x-Richtung zeigen und sie in die positive Y-Richtung locken. Die Richtung, in der sich der Daumen in Richtung oder weg von Ihnen befindet, ist die Richtung, in der die positiven Z-Achsenpunkte für dieses Koordinatensystem liegen. Die folgende Abbildung zeigt diese beiden Koordinatensysteme.

Abbildung der linkshändigen und rechtshändigen Kartenkoordinatensysteme

Direct3D verwendet ein linkshändiges Koordinatensystem. Wenn Sie eine Anwendung portieren, die auf einem rechtshändigen Koordinatensystem basiert, müssen Sie zwei Änderungen an den an Direct3D übergebenen Daten vornehmen.

  • Kippen Sie die Reihenfolge der Dreiecksvertices so, dass das System sie im Uhrzeigersinn von vorne durchläuft. Mit anderen Worten: Wenn die Scheitelpunkte v0, v1, v2 sind, übergeben Sie sie als v0, v2, v1 an Direct3D.
  • Verwenden Sie die Ansichtsmatrix, um den Weltraum um -1 in z-Richtung zu skalieren. Kippen Sie dazu das Vorzeichen der Member _31, _32, _33 und _34 der D3DMATRIX Struktur, die Sie für die Ansichtsmatrix verwenden.

Verwenden Sie die D3DXMatrixPerspectiveRH- und D3DXMatrixOrthoRH--Funktionen, um die Projektionstransformation zu definieren, um zu erhalten, was einer rechtshändigen Welt entspricht. Achten Sie jedoch darauf, die entsprechende D3DXMatrixLookAtRH--Funktion zu verwenden, die Backface-Culling-Reihenfolge umzukehren und die Würfelzuordnungen entsprechend zu gestalten.

Obwohl linkshändige und rechtshändige Koordinaten die am häufigsten verwendeten Systeme sind, gibt es eine Vielzahl anderer Koordinatensysteme, die in 3D-Software verwendet werden. Es ist z. B. nicht ungewöhnlich, dass 3D-Modellierungsanwendungen ein Koordinatensystem verwenden, in dem die Y-Achse auf den Viewer zeigt und die Z-Achse nach oben zeigt.

Formal lässt sich die Ausrichtung eines Satzes von Basisvektoren (d. h. eines Koordinatensystems) durch die Berechnung der Determinante der Matrix feststellen, die durch den jeweiligen Satz von Basisvektoren definiert wird. Wenn die Determinante positiv ist, wird die Grundlage als "positiv" ausgerichtet (oder rechtshändig) bezeichnet. Wenn die Determinante negativ ist, wird die Basis als "negativ" ausgerichtet (oder linkshändig) bezeichnet. Eine Erläuterung dazu, was eine Determinante ist, finden Sie in jeder linearen Algebraressource.

Informell können Sie die "Rechts-/Links-Regel" verwenden, um zu bestimmen, ob ein bestimmter Satz von Basisvektoren entweder ein rechts- oder linkshändiges Koordinatensystem bildet.

Die wesentlichen Vorgänge, die für objekte ausgeführt werden, die in einem 3D-Koordinatensystem definiert sind, sind Übersetzung, Drehung und Skalierung. Sie können diese grundlegenden Transformationen kombinieren, um eine Transformationsmatrix zu erstellen. Ausführliche Informationen finden Sie unter Transformationen (Direct3D 9).

Wenn Sie diese Vorgänge kombinieren, sind die Ergebnisse nicht kommutativ; Die Reihenfolge, in der Sie Matrizen multiplizieren, ist wichtig.

Koordinatensysteme und Geometrie-