Vektoren, Scheitelpunkte und Quaternionen (Direct3D 9)
In Direct3D beschreiben Scheitelpunkte Position und Ausrichtung. Jeder Scheitelpunkt in einem Grundtyp wird durch einen Vektor beschrieben, der seine Position, Farbe, Texturkoordinaten und einen normalen Vektor angibt, der seine Ausrichtung gibt.
Quaternionen fügen ein viertes Element zu den [x, y, z]-Werten hinzu, die einen Drei-Komponenten-Vektor definieren. Quaternionen sind eine Alternative zu den Matrixmethoden, die normalerweise für 3D-Drehungen verwendet werden. Eine Quaternion stellt eine Achse in einem 3D-Raum und eine Rotation um diese Achse dar. Beispielsweise kann eine Quaternion eine Achse (1,1,2) und eine Drehung von 1 Radian darstellen. Quaternionen enthalten wertvolle Informationen, aber ihre wahre Kraft ergibt sich aus den beiden Operationen, die Sie für sie ausführen können: Komposition und Interpolation.
Das Ausführen von Kompositionen auf Quaternionen ähnelt der Kombination von quaternionen. Die Zusammensetzung von zwei Quaternionen wird wie in der folgenden Abbildung notiert.
Die Zusammensetzung von zwei Quaternionen, die auf eine Geometrie angewendet werden, bedeutet "drehen Sie die Geometrie um Achse durch Drehung, dann drehen Sie sie um Achse₁ durch Drehung₁.". In diesem Fall stellt Q eine Drehung um eine einzelne Achse dar, die das Ergebnis der Anwendung von q sowie q₁ auf die Geometrie ist.
Mithilfe der Quaternionsinterpolation kann eine Anwendung einen reibungslosen und vernünftigen Pfad von einer Achse und Ausrichtung zu einer anderen berechnen. Daher bietet die Interpolation zwischen q₁ und q² eine einfache Möglichkeit, von einer Ausrichtung zur anderen zu animieren.
Wenn Sie Komposition und Interpolation zusammen verwenden, bieten sie Ihnen eine einfache Möglichkeit, eine Geometrie auf eine komplexe Weise zu bearbeiten. Angenommen, Sie verfügen über eine Geometrie, die Sie zu einer bestimmten Ausrichtung drehen möchten. Du weißt, dass du es r² Grad um die Achse drehen möchtest, dann r₁ Grad um achse₁ drehen möchtest, aber du kennst die endgültige Quaternion nicht. Mithilfe der Komposition können Sie die beiden Drehungen für die Geometrie kombinieren, um eine einzelne Quaternion zu erhalten, die das Ergebnis ist. Dann könnten Sie vom Original zur zusammengesetzten Quaternion interpolieren, um einen reibungslosen Übergang von einer zur anderen zu erreichen.
Die D3DX-Hilfsprogrammbibliothek enthält Funktionen, mit denen Sie mit Quaternionen arbeiten können. Beispielsweise fügt die D3DXQuaternionRotationAxis-Funktion einem Vektor, der eine Drehungsachse definiert, einen Drehungswert hinzu und gibt das Ergebnis in einer Quaternion zurück, die durch eine D3DXQUATERNION-Struktur definiert wird. Darüber hinaus erstellt die D3DXQuaternionMultiply-Funktion Quaternionen, und D3DXQuaternionSlerp führt eine sphärische lineare Interpolation zwischen zwei Quaternionen durch.
Direct3D-Anwendungen können die folgenden Funktionen verwenden, um die Arbeit mit Quaternionen zu vereinfachen.
- D3DXQuaternionBaryCentric
- D3DXQuaternionConjugate
- D3DXQuaternionDot
- D3DXQuaternionExp
- D3DXQuaternionIdentity
- D3DXQuaternionInverse
- D3DXQuaternionIsIdentity
- D3DXQuaternionLength
- D3DXQuaternionLengthSq
- D3DXQuaternionLn
- D3DXQuaternionMultiply
- D3DXQuaternionNormalize
- D3DXQuaternionRotationAxis
- D3DXQuaternionRotationMatrix
- D3DXQuaternionRotationYawPitchRoll
- D3DXQuaternionSlerp
- D3DXQuaternionSquad
- D3DXQuaternionToAxisAngle
Direct3D-Anwendungen können die folgenden Funktionen verwenden, um die Arbeit mit Drei-Komponenten-Vektoren zu vereinfachen.
- D3DXVec3Add
- D3DXVec3BaryCentric
- D3DXVec3CatmullRom
- D3DXVec3Cross
- D3DXVec3Dot
- D3DXVec3Hermite
- D3DXVec3Length
- D3DXVec3LengthSq
- D3DXVec3Lerp
- D3DXVec3Maximize
- D3DXVec3Minimize
- D3DXVec3Normalize
- D3DXVec3Project
- D3DXVec3Scale
- D3DXVec3Subtract
- D3DXVec3Transform
- D3DXVec3TransformCoord
- D3DXVec3TransformNormal
- D3DXVec3Unproject
Viele zusätzliche Funktionen, die Aufgaben mithilfe von Zwei- und Vier-Komponenten-Vektoren vereinfachen, sind in den mathematischen Funktionen enthalten, die von der D3DX-Hilfsbibliothek bereitgestellt werden.
Zugehörige Themen