Maison > développement back-end > C++ > Comment définir une matrice de modèle sans utiliser glm::lookAt() ?

Comment définir une matrice de modèle sans utiliser glm::lookAt() ?

Barbara Streisand
Libérer: 2024-11-09 19:52:02
original
448 Les gens l'ont consulté

How to Define a Model Matrix Without Using glm::lookAt()?

Transformation de la matrice du modèle

Pour définir la position et l'orientation d'un objet dans une scène 3D, on utilise généralement la matrice du modèle. Bien que glm::lookAt() soit une fonction pratique pour configurer une matrice de vue, elle peut ne pas être directement applicable à la matrice de modèle.

Transformation du modèle

Le la matrice de modèle transforme les positions des sommets de l'espace modèle (le système de coordonnées local de l'objet) vers l'espace mondial (le système de coordonnées de la scène entière). Il comprend trois éléments principaux :

  • Position : Translate l'objet le long des axes x, y et z.
  • Rotation : Fait pivoter l'objet autour des axes x, y et z. axes.
  • Échelle : Ajuste la taille de l'objet.

Création d'une matrice de modèle

Au lieu de en utilisant glm::lookAt(), vous pouvez définir manuellement une matrice de modèle en utilisant ce qui suit structure :

[ X-axis.x, X-axis.y, X-axis.z, 0 ]
[ Y-axis.x, Y-axis.y, Y-axis.z, 0 ]
[ Z-axis.x, Z-axis.y, Z-axis.z, 0 ]
[ trans.x,  trans.y,  trans.z,  1 ]
Copier après la connexion

Par exemple, si vous souhaitez positionner un objet à (0,4, 0,0, 0,0) et le faire pivoter de 45 degrés autour de l'axe des x, vous définirez la matrice du modèle comme :

[ 1.0,  0.0,  0.0,  0.0 ]
[ 0.0,  0.707, 0.707, 0.0 ]
[ 0.0, -0.707, 0.707, 0.0 ]
[ 0.4,  0.0,  0.0,  1.0 ]
Copier après la connexion

Implémentation du Shader

Dans votre vertex shader, vous pouvez ensuite transformer le position du sommet en utilisant la matrice du modèle comme suit :

gl_Position = CameraMatrix * ModelMatrix * Pos;
Copier après la connexion

Où :

  • CameraMatrix est la matrice de vue-projection.
  • ModelMatrix est la matrice du modèle définie ci-dessus.
  • Pos est la position du sommet dans le modèle espace.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal