Vecteurs, sommets et quaternions (Direct3D 9)
Tout au long de Direct3D, les sommets décrivent la position et l’orientation. Chaque sommet d’une primitive est décrit par un vecteur qui donne sa position, sa couleur, ses coordonnées de texture et un vecteur normal qui donne son orientation.
Les quaternions ajoutent un quatrième élément aux valeurs [x, y, z] qui définissent un vecteur à trois composants. Les quaternions sont une alternative aux méthodes de matrice qui sont généralement utilisées pour les rotations 3D. Un quaternion représente un axe dans l’espace 3D et une rotation autour de cet axe. Par exemple, un quaternion peut représenter un axe (1,1,2) et une rotation de 1 radian. Les quaternions contiennent des informations précieuses, mais leur véritable puissance vient des deux opérations que vous pouvez effectuer sur eux : la composition et l’interpolation.
L’exécution de la composition sur les quaternions revient à les combiner. La composition de deux quaternions est notée comme l’illustration suivante.
La composition de deux quaternions appliqués à une géométrie signifie « faire pivoter la géométrie autour de l’axe par rotation puis la faire pivoter autour de l’axe₁ par rotation₁. » Dans ce cas, Q représente une rotation autour d’un seul axe qui est le résultat de l’application de q, puis q₁ à la géométrie.
À l’aide de l’interpolation quaternion, une application peut calculer un chemin d’accès lisse et raisonnable d’un axe et d’une orientation à un autre. Par conséquent, l’interpolation entre q₁ et q₁ fournit un moyen simple d’animer d’une orientation à une autre.
Lorsque vous utilisez la composition et l’interpolation ensemble, elles vous offrent un moyen simple de manipuler une géométrie d’une manière qui semble complexe. Par exemple, imaginez que vous avez une géométrie que vous souhaitez faire pivoter vers une orientation donnée. Vous savez que vous voulez le faire pivoter r₁ degrés autour de l’axe₁, mais vous ne connaissez pas le quaternion final. En utilisant la composition, vous pouvez combiner les deux rotations sur la géométrie pour obtenir un quaternion unique qui est le résultat. Ensuite, vous pouvez interpoler du quaternion d’origine vers le quaternion composé pour obtenir une transition fluide de l’un à l’autre.
La bibliothèque utilitaire D3DX inclut des fonctions qui vous aident à utiliser des quaternions. Par exemple, la fonction D3DXQuaternionRotationAxis ajoute une valeur de rotation à un vecteur qui définit un axe de rotation et retourne le résultat dans un quaternion défini par une structure D3DXQUATERNION . En outre, la fonction D3DXQuaternionMultiply compose des quaternions et D3DXQuaternionSlerp effectue une interpolation linéaire sphérique entre deux quaternions.
Les applications Direct3D peuvent utiliser les fonctions suivantes pour simplifier l’utilisation des quaternions.
- D3DXQuaternionBaryCentric
- D3DXQuaternionConjugate
- D3DXQuaternionDot
- D3DXQuaternionExp
- D3DXQuaternionIdentity
- D3DXQuaternionInverse
- D3DXQuaternionIsIdentity
- D3DXQuaternionLength
- D3DXQuaternionLengthSq
- D3DXQuaternionLn
- D3DXQuaternionMultiply
- D3DXQuaternionNormalize
- D3DXQuaternionRotationAxis
- D3DXQuaternionRotationMatrix
- D3DXQuaternionRotationYawPitchRoll
- D3DXQuaternionSlerp
- D3DXQuaternionSquad
- D3DXQuaternionToAxisAngle
Les applications Direct3D peuvent utiliser les fonctions suivantes pour simplifier l’utilisation de vecteurs à trois composants.
- D3DXVec3Add
- D3DXVec3BaryCentric
- D3DXVec3CatmullRom
- D3DXVec3Cross
- D3DXVec3Dot
- D3DXVec3Hermite
- D3DXVec3Length
- D3DXVec3LengthSq
- D3DXVec3Lerp
- D3DXVec3Maximize
- D3DXVec3Minimize
- D3DXVec3Normalize
- D3DXVec3Project
- D3DXVec3Scale
- D3DXVec3Subtract
- D3DXVec3Transform
- D3DXVec3TransformCoord
- D3DXVec3TransformNormal
- D3DXVec3Unproject
De nombreuses fonctions supplémentaires qui simplifient les tâches à l’aide de vecteurs à deux et quatre composants sont incluses dans les fonctions mathématiques fournies par la bibliothèque utilitaire D3DX.
Rubriques connexes