Lorsque vous êtes à l'apprentissage de la programmation 3D, on vous apprend que c'est plus facile de penser en termes de 3 matrices de transformation:
Le Modèle De La Matrice. Cette matrice est propre à chaque modèle et de la rotation des échelles de l'objet souhaité et enfin le déplace vers sa position finale à l'intérieur de votre monde en 3D. "Le Modèle de la Matrice transforme les coordonnées de modèle pour les coordonnées du monde".
La Matrice De Vue. Cette matrice est généralement le même pour un grand nombre d'objets (si pas pour tous) et il tourne et se déplace tous les objets selon la "position de la caméra". Si vous l'imagerie 3D de la scène est filmée par une caméra et de ce qui est affiché sur l'écran sont des images qui ont été capturées par l'appareil photo, l'emplacement de la caméra et de sa direction d'observation définir les parties de la scène sont visibles et comment les objets apparaissent sur l'image capturée. Il y a peu de raisons de modifier la matrice de vue du rendu d'une seule image, mais ceux-ci, en fait, il existe (par exemple, par le rendu de la scène à deux reprises et la modification de la matrice de vue entre les deux, vous pouvez créer un très simple, mais impressionnant miroir à l'intérieur de votre scène). Généralement, le point de vue des changements de la matrice seule fois entre deux images dessinées. "La Matrice de Vue transforme les coordonnées du monde à l'œil les coordonnées".
La Matrice De Projection. La matrice de projection décide de la façon dont ceux des coordonnées 3D sont mappés à des coordonnées 2D, par exemple si il y a un point de vue appliqué (les objets sont petits plus ils sont loin de l'observateur) ou non (projection orthogonale). La matrice de projection à peine les changements à tous. Il peut avoir à changer si vous êtes rendu dans une fenêtre et la taille de la fenêtre a changé ou si vous êtes rendu en plein écran et de la résolution a changé, mais seulement si la nouvelle taille de la fenêtre/résolution de l'écran a un autre format d'image qu'avant. Il y a quelques effets de fou pour que vous pouvez modifier cette matrice, mais dans la plupart des cas à peu près constante pour l'ensemble vivre de votre programme. "La Matrice de Projection transforme œil coordonnées en coordonnées d'écran".
Cela fait beaucoup de sens pour moi. Bien sûr on peut toujours combiner les trois matrices en une seule, depuis la multiplication d'un vecteur d'abord par la matrice A
, puis par la matrice B
est le même que la multiplication du vecteur par la matrice C
où C = B * A
.
Maintenant, si vous regardez le classique OpenGL (OpenGL 1.x/2.x), OpenGL connaît une matrice de projection. Pourtant, OpenGL n'offre pas un modèle ou une matrice de vue, il ne propose qu'un modèle combiné-matrice de vue. Pourquoi? Cette conception vous oblige en permanence d'enregistrer et de restaurer la "matrice de vue" depuis elle permettra d'obtenir des "détruit" par les transformations de modèles sont appliqués. Pourquoi ne sont pas là les trois matrices?
Si vous regardez les nouvelles versions d'OpenGL (OpenGL 3.x/4.x) et que vous n'utilisez pas le classique pipeline de rendu, mais de personnaliser le tout avec des shaders (GLSL), il n'y a pas matrices étant plus disponible, vous devez définir vos propres matrices. Encore la plupart des gens gardent l'ancien concept d'une matrice de projection et un modèle-vue de la matrice. Pourquoi voudriez-vous faire cela? Pourquoi pas à l'aide de trois matrices, ce qui signifie que vous n'avez pas de permanence d'enregistrer et de restaurer le modèle de matrice de vue, ou si vous utilisez un combiné unique modèle-vue-projection (MVP) de la matrice, qui permet d'éviter une multiplication de matrice dans votre vertex shader pour jamais seul sommet de rendu (après tout, une telle multiplication ne vient pas gratuitement non plus).
Donc, pour résumer ma question: Quel avantage a un modèle combiné-matrice de vue, ensemble, avec une part la matrice de projection sur avoir trois matrices ou un seul titre de MVP de la matrice?