web-dev-qa-db-fra.com

Objet de la matrice de projection de vue modèle

À quelles fins utilisons-nous la matrice de projection de vue modèle? Pourquoi les shaders ont-ils besoin de la matrice de projection de vue modèle?

98
Yuriy Vikulov

Les matrices modèle, vue et projection sont trois matrices distinctes. Modélisez des cartes à partir de l'espace de coordonnées local d'un objet dans l'espace mondial, visionnez l'espace mondial vers l'espace caméra, projection de la caméra vers l'écran.

Si vous composez les trois, vous pouvez utiliser le même résultat pour mapper de l'espace objet à l'espace écran, ce qui vous permet de déterminer ce que vous devez transmettre à la prochaine étape d'un pipeline programmable à partir des positions de sommet entrantes.

Dans les anciens pipelines à fonctionnalité fixe, vous appliquiez ensemble le modèle et la vue, puis utilisiez un autre résultat dérivé (avec quelques corrections, par exemple, les normales étant toujours en unités de longueur même si vous avez appliqué une mise à l'échelle à l'objet ), puis appliquez une projection. Vous pouvez voir cela reflété dans OpenGL, qui ne sépare jamais les matrices de modèle et de vue - en les conservant comme une seule pile de matrice de vue de modèle. Vous voyez donc parfois aussi cela reflété dans les shaders.

Ainsi, la matrice de projection de la vue du modèle composée est souvent utilisée par les shaders pour mapper les sommets que vous avez chargés pour chaque modèle sur l'écran. Ce n'est pas obligatoire, il y a beaucoup de façons de réaliser la même chose, c'est tout à fait habituel car cela permet toutes les transformations linéaires possibles. À cause de cela, une version moins élaborée de celui-ci était également la norme dans votre monde de pipelines fixes.

189
Tommy

Parce que les matrices sont pratiques. Les matrices aident à convertir les positions/directions par rapport à différents espaces (un espace peut être défini par 3 axes perpendiculaires et une origine).

Voici un exemple tiré d'un livre spécifié par @ legends2k dans les commentaires.

Les habitants de Cartesia utilisent une carte de leur ville avec l’Origine centré assez raisonnablement sur le centre-ville et des axes orientés le long des points cardinaux de la boussole. Les habitants de Dyslexia utilisent une carte de leur ville avec les coordonnées centrées sur un point arbitraire et les axes dans des directions arbitraires qui semblaient probablement une bonne idée à l'époque. Les citoyens des deux villes sont assez satisfaits de leurs cartes respectives, mais l’ingénieur des transports de l’État s’est vu confier la tâche d’établir un budget pour la première autoroute située entre Cartesia et Dyslexia. système qui lui est supérieur, mais pas nécessairement à quelqu'un d'autre.

Voici un autre exemple,

Supposons que vous ayez créé un objet de voiture dans un jeu avec ses positions au sommet en utilisant les coordonnées du monde. Supposons que vous deviez utiliser cette même voiture dans un autre jeu dans un monde totalement différent, vous devez définir à nouveau les positions et les calculs deviendront complexes. En effet, vous devez à nouveau calculer les positions de la fenêtre, du capot, des phares, des roues, etc. dans la voiture par rapport au nouveau monde.

Voir this video pour comprendre les concepts de modèle, de vue et de projection. (hautement recommandé)

Puis voyez this pour comprendre comment les sommets du monde sont représentés sous forme de matrices et comment ils sont transformés.

7
cegprakash