|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre à l'essai
![]() Inscription : septembre 2009 Messages : 61 ![]() |
Salut à tous,
Je cherche à savoir s'il y a un ordre strict dans lequel créer les matrices pour effectuer un rendu avec OpenGL 3. J'ai besoin dans mon cas de générer les matrices modelViewMatrix, modelViewProjectionMatrix et normalMatrix. Suivant les termes d'OpenGL. Savoir comment les générer individuellement ne me pose aucun problème. J'ai juste l'impression que je ne fais pas les choses dans le bon ordre, pour le moment je fais : 1. Génération de la matrice de projection, je la stocke dans un coin et je n'y touche plus. "Pour chaque image" { 2. Je positionne ma camera et donc génère une matrice de base que j'appel (peut-être à tord) la base de ma modelViewMatrix. 3. Je génére ma normalMatrix depuis la modelViewMatrix. 4. Je génére une nouvelle matrice en multipliant ma modelViewMatrix avec matrice de projection (1), j'obtient la modelViewProjectionMatrix. "Pour chaque objet" { 5. Je reprend mes trois matrices modelViewMatrix, modelViewProjectionMatrix et normalMatrix, et j'applique les coordonnées de l'objet en cours. 6. J'envois le tout au program GLSL pour le rendu. } } Voila, c'était donc pour savoir si l'ordre était correct ? Pour infos, mes images sont droites |
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Inscription : mars 2011 Messages : 433 ![]() |
Salut,
Le problème vient peut être de l'ordre dans lequel tu multiplies tes matrices modelView et projection. En notant les vecteurs en colonne (<troll> La seul réel convention qui devrait exister </troll>): modelViewProj = Projection * modelView. Et p(ecran) = modelViewProj * p(local).
__________________
La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer. - Antoine de Saint-Exupéry |
|
|
00
|
|
|
#3 | ||||
|
Membre à l'essai
![]() Inscription : septembre 2009 Messages : 61 ![]() |
Voici les lignes responsables des multiplications :
Code :
Code :
|
||||
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Alexandre LaurentÉtudiant Inscription : mai 2008 Messages : 6 560 ![]() |
Bonjour,
Je ne serai pas contre le code du shader qui fait le Phong et d'une image pour accompagner la description du bug. Sinon, utilisez une bibliothèque telle que GLM ? (pour les matrices)
__________________
Vous souhaitez participer à la section Jeux ? Contactez-moi ![]() La rubrique a aussi un blog ! Ma page sur DVP Mon Portfolio Qui connaît l'erreur, connaît la solution. |
|
|
00
|
|
|
#5 | ||||
|
Membre à l'essai
![]() Inscription : septembre 2009 Messages : 61 ![]() |
J'ai compris mon erreur !
J'ai en fait mixé deux tutoriels dont un (celui du livre OpenGL Superbible 5) qui s'appliquait sur une espèce de visionneuse d'objet, et l'autre dans une scène avec camera libre. Je n'avais pas tenu compte d'une petite subtilité avec le vecteur de la camera pendant le calcule de la réflexion. Voici quand même les shaders avec un commentaire aux endroits qui manquaient. Les lumières sont générées dans le shader pour le moment, et il manque plusieurs paramètres comme les couleurs etc. Code :
Code :
|
||||
|
|
00
|
|
|
#6 |
|
Expert Confirmé
![]() Inscription : septembre 2010 Messages : 1 350 ![]() |
|
|
|
10
|
Copyright © 2000-2012 - www.developpez.com