2017-09-01 3 views
0

Il est facile de régler la ViewMatrix avec GLM:Transformer le modelMatrix

glm::lookAt(Position, Direction, UpVector); 

mais si je tente d'utiliser le Funktion avec le modelMatrix, je vais les valeurs comfusing (le modèle n'est pas dans la bonne position et aussi la rotation semble mauvaise). Je veux juste définir un objet de la même manière que de régler l'appareil photo. Puis-je utiliser la fonction lookAt funktion et apporter des modifications par la suite? Ou dois-je programmer une propre fonction pour cela? Et si oui, comment?

Je fixe la position avec ceci:

m_Orientation = glm::lookAtLH(Position, Direction, UpVector); 
m_Orientation[3][0] = -m_Orientation[3][0]; 
m_Orientation[3][1] = -m_Orientation[3][1]; 
m_Orientation[3][2] = -m_Orientation[3][2]; 

aussi à l'intérieur du vertexshader J'utilise ceci:

gl_Position = CameraMatrix * ModelMatrix * Pos; 

où CameraMatrix est un viewProjectionMatrix, ModelMatrix (mon problème) et Pos est la position de mon sommet dans l'espace objet

+1

Montrez du code sur la façon dont vous manipulez le modèle. – Robinson

+0

lire à propos de [glm - fonctions de transformation matricielle] (https://glm.g-truc.net/0.9.2/api/a00245.html) – Rabbid76

+0

@Robinson Je ne sais pas ce que je devrais poster ... Il doit être facile de régler la matrice de modèle ... – Thomas

Répondre

1

Dans un rendu, chaque maillage de la scène est généralement transformé par la matrice du modèle, la matrice de vue et la matrice de projection.

  • matrice de projection:
    La matrice de projection décrit le mappage de points 3D d'une scène, à des points 2D de la fenêtre. La matrice de projection se transforme de l'espace de vue en espace de clip, et les coordonnées dans l'espace de clip sont transformées en coordonnées de périphérique normalisées (NDC) dans la plage (-1, -1, -1) à (1, 1, 1) en divisant avec la composante w des coordonnées du clip.

projection

  • Voir la matrice:
    La matrice de vue décrit la direction et la position à partir de laquelle la scène est regardé. La matrice de vue se transforme de l'espace wolrd à l'espace de vue (oeil). Dans le système de coordonnées sur la fenêtre, l'axe X pointe vers la gauche, l'axe Y vers le haut et l'axe Z hors de la vue (Remarquez dans un système de droite l'axe Z est le produit croisé du X- Axe et l'axe Y).

view

  • matrice du modèle:
    La matrice de modèle définit l'emplacement, oriantation et la taille relative d'une maille dans la scène. La matrice du modèle transforme les positions des sommets du maillage dans l'espace du monde.

model

La matrice du modèle ressemble à ceci:

(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) 

Voir aussi les réponses aux questions suivantes: