de la position locale/modèle à la position de l'espace de clip final
Trois transformations Maxtrix :
Projection : Matrice de transformation de projection
transformer le système de coordonnées de vue en système de coordonnées de l'espace de découpe
Afficher : Afficher la matrice de transformation
transformer le système de coordonnées du modèle en afficher le système de coordonnées(déplacer la position de la caméra)
Modèle : Matrice de transformation du modèle
transformer coordonnées locales en système de coordonnées du modèle/système de coordonnées du monde du jeu (coordonnées absolues)
Position : Les coordonnées locales des sommets
système de coordonnées local (système de coordonnées relatives)
l'origine du système de coordonnées de la position et du modèle est définie par le développeur en fonction des exigences.
le système de coordonnées du monde et du modèle correspondant respectivement aux données du modèle et de la matrice de position :
Absolute(World) Y+ axis Y (0, 1, 0) | | Local(Model) Y+ axis | | / | | / | | | ---------- o (1, 0, 1) ← Local(Model) Origin ---- Local X+ axis | / | | / | | / | | / | | / | |______________________/______|__________ X (1, 0, 0) Absolute(World) X+ axis / Local(Model) Z+ axis / / / Z (0, 0, 1) Absolute(World) Z+ axis
Dans WebGL, les matrices sont stockées dans ordre majeur des colonnes, ce qui affecte la disposition des matrices et l'ordre de calcul. Cette méthode de stockage influence la façon dont les matrices sont définies et utilisées dans WebGL. Voici quelques pratiques courantes lorsque vous travaillez avec des matrices de colonnes principales dans WebGL :
M = | m11 m21 m31 m41 | | m12 m22 m32 m42 | | m13 m23 m33 m43 | | m14 m24 m34 m44 |
En WebGL, cette matrice est représentée sous la forme d'un tableau unidimensionnel dans l'ordre des colonnes :
const matrix = [ m11, m21, m31, m41, // First column m12, m22, m32, m42, // Second column m13, m23, m33, m43, // Third column m14, m24, m34, m44 // Fourth column ];
gl.uniformMatrix4fv(location, false, matrix);
Ici, false indique que la matrice ne doit pas être transposée. Étant donné que WebGL utilise l'ordre des colonnes par défaut, assurez-vous que le format des données correspond à cette exigence, car la bibliothèque Math standard de JavaScript peut utiliser l'ordre des lignes par défaut.
La matrice résultante M peut être exprimée comme le produit des matrices de transformation T, R et S :
M = T ⋅ R ⋅ S
Dans cette équation :
Dans l'ordre des colonnes principales, cette séquence applique d'abord la mise à l'échelle, puis la rotation et enfin la translation.
laissez modelMatrix = mat4.create();// créer une matrice d'identité
Absolute(World) Y+ axis Y (0, 1, 0) | | Local(Model) Y+ axis | | / | | / | | | ---------- o (1, 0, 1) ← Local(Model) Origin ---- Local X+ axis | / | | / | | / | | / | | / | |______________________/______|__________ X (1, 0, 0) Absolute(World) X+ axis / Local(Model) Z+ axis / / / Z (0, 0, 1) Absolute(World) Z+ axis
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!