0

J'ai une scène comme suit:Caméra dans OpenGL ES

Une boîte 3D avec sa base centrée à l'origine et quatre rectangles entourant la base de la boîte. Nous pouvons le penser comme un bâtiment avec des rues sur ses quatre côtés. Je veux obtenir la matrice du modèle de vue de projection. J'ai préparé les matrices de projection et de vue en fonction des réglages de la caméra, mais je ne suis pas sûr des matrices de modèles. Est-ce que chaque objet de la scène aura une matrice de modèle différente ou seulement une matrice de modèle pour la scène dans son ensemble?

Quelle sera la matrice du modèle pour le cube et les rectangles?

Je souhaite déplacer la caméra dans les rues sur les quatre côtés du bâtiment.

Répondre

0

Cela peut être fait de toute façon, mais je recommande d'avoir une matrice de modèle séparée pour chaque bâtiment (cube) qui consiste probablement en de simples traductions. Chacun aura une traduction différente de l'origine. Ensuite, passez chacune de ces matrices de modèle dans le vertex shader avant que chacune ne soit dessinée avec glDrawArrays(). La position de votre caméra doit aller dans la matrice de vue-projection qui est également passée au shader Vertex, mais seulement mise à jour lorsque la caméra se déplace réellement. Votre shader Vertex doit ensuite multiplier les matrices modèle et projection-projection. Cela met le devoir du travail dans le shader, où il devrait être.

+0

D'où devraient provenir les traductions, le centre de la boîte et les rectangles à l'origine? – Hellboy

+0

Oui, exactement. Cela facilite la mise à l'échelle ou la rotation de toute votre scène, par exemple en multipliant toutes les matrices de votre modèle par une seule échelle ou une matrice de rotation, ou les deux. – ClayMontgomery

+0

Donc, je vais faire quelque chose comme ça. PVRTMat4 ViewMatrix = PVRTMat4 :: LookAtRH (vFrom, vTo, vUp); PVRTMat4 ProjectionMatrix = PVRTMat4 :: PerspectiveFovRH (DEG2RAD (fFOV), AspectRatio, CameraNear, CaméraFar, PVRTMat4 :: OGL, rotation); pour (i = 0; i Hellboy