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 nach rechts und die positive y-Achse nach oben. Sie können sich merken, in welche Richtung die positive Z-Achse zeigt, indem Sie die Finger der linken oder rechten Hand in die positive x-Richtung zeigen und sie in die positive y-Richtung schieben. Die Richtung, in die Ihr Daumen zeigt, entweder auf oder von Ihnen weg, ist die Richtung, in die die positive Z-Achse für dieses Koordinatensystem zeigt. Die folgende Abbildung zeigt diese beiden Koordinatensysteme.

Abbildung der kartesischen Koordinatensysteme links- und rechtshändig

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.

  • Drehen Sie die Reihenfolge der Dreiecksvertices so, dass das System sie im Uhrzeigersinn von vorne durchläuft. Anders ausgedrückt: 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. Drehen Sie dazu das Vorzeichen des _31-, _32-, _33- und _34-Elements der D3DMATRIX-Struktur , das Sie für Ihre Ansichtsmatrix verwenden.

Verwenden Sie die Funktionen D3DXMatrixPerspectiveRH und D3DXMatrixOrthoRH , um die Projektionstransformation zu definieren, um eine rechtshändige Welt zu erhalten. Achten Sie jedoch darauf, die entsprechende D3DXMatrixLookAtRH-Funktion zu verwenden, die Rückflächen-Culling-Reihenfolge umzukehren und die Würfelzuordnungen entsprechend zu gestalten.

Obwohl linkshändige und rechtshändige Koordinaten die gängigsten Systeme sind, gibt es eine Vielzahl anderer Koordinatensysteme, die in 3D-Software verwendet werden. Beispielsweise ist es nicht ungewöhnlich, dass 3D-Modellierungsanwendungen ein Koordinatensystem verwenden, in dem die y-Achse auf den Viewer zeigt oder davon entfernt und die Z-Achse nach oben zeigt.

Formal kann die Ausrichtung eines Satzes von Basisvektoren (d. h. eines Koordinatensystems) durch die Berechnung der Determinanten der Matrix ermittelt werden, die durch den bestimmten Satz von Basisvektoren definiert wird. Wenn die Determinante positiv ist, wird die Basis als "positiv" ausgerichtet (oder rechtshändig) bezeichnet. Wenn die Determinante negativ ist, wird die Basis als "negativ" orientiert (oder linkshändig) bezeichnet. Eine Erklärung, was eine Determinante ist, finden Sie unter jede lineare Algebraressource.

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

Die wichtigsten 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. Weitere 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