Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2936 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  [Opengl] Problème d'éclairage

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Opengl] Problème d'éclairage

n°1596523
vincent0
Posté le 07-08-2007 à 10:08:54  profilanswer
 

Bonjour,
 
Voici mon code à l'initialisation :

Code :
  1. GLfloat light_position[] = {16.0, 1.5, 6.0, 1.0};
  2. glLightfv(GL_LIGHT0, GL_POSITION, light_position);
  3. GLfloat light_diffuse[] = {1.0, 1.0, 1.0, 1.0};
  4. glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);


 
Voici mon code dans la boucle principale :

Code :
  1. glLoadIdentity();
  2. ....
  3. gluLookAt(position.X, position.Y, position.Z, view.X, view.Y, view.Z, up.X, up.Y, up.Z);
  4. glEnable(GL_LIGHTING);
  5. glEnable(GL_LIGHT0);
  6. //ici le code pour afficher mon modèle 3D (une voiture)
  7. glDisable(GL_LIGHT0);
  8. glDisable(GL_LIGHTING);


 
NB : Les codes sont simplifié par rapport à mon programme mais je ne pense pas que l'erreur pourrait venir d'autre part...
 
Suivant l'angle que je regarde la scène, elle est différemment éclairé : pourquoi ?
La lumière diffuse est censé éclairé de la même manière peut importe notre position, non ?
 
Voici des screen qui montrent bien que le côté de la voiture est différemment éclairé en fonction de la position de la caméra:
http://img359.imageshack.us/my.php?image=voitsvq3.jpg
http://img390.imageshack.us/my.php?image=voitcvx1.jpg
 
Merci d'avance...


Message édité par vincent0 le 07-08-2007 à 12:37:46
mood
Publicité
Posté le 07-08-2007 à 10:08:54  profilanswer
 

n°1596537
_darkalt3_
Proctopathe
Posté le 07-08-2007 à 10:43:38  profilanswer
 

Tes normales ne seraient pas recalculées bizarrement ?


---------------
Töp of the plöp
n°1596561
vincent0
Posté le 07-08-2007 à 11:05:46  profilanswer
 

1) Je pense que mes normales sont bien calculé
2) Les normales sont calculé qu'une seul fois à l'initialisation...donc quand je bouge la caméra, même si mes normales étaient mal calculé : l'éclairage devrait resté le même : non ?
 
On dirait plutot que la lumière suit la caméra...est-ce ça ?

n°1596584
_darkalt3_
Proctopathe
Posté le 07-08-2007 à 11:25:18  profilanswer
 

On dirait oui.
 
Tu peux avoir un souci de référentiel:
ta lumière suivrait le repère de ta caméra, au lieu de suivre le repère de ton mesh.


---------------
Töp of the plöp
n°1596627
vincent0
Posté le 07-08-2007 à 12:37:23  profilanswer
 

Mais comment corriger le problème ? Où est l'erreur dans mon code ?
 
NB : je n'utilise aucune matrice pour bouger mon modèle avant de l'afficher
NB 2 : A chaque itération de la boucle principale, je fait un glLoadIdentity(); (Je vais éditer mon premier msg)

n°1596631
_darkalt3_
Proctopathe
Posté le 07-08-2007 à 12:43:17  profilanswer
 

Bah met un glLoadIdentity avant ton gluLookAt, un autre ensuite avant ta lumière & ton mesh


---------------
Töp of the plöp
n°1596633
vincent0
Posté le 07-08-2007 à 12:55:27  profilanswer
 

J'avoue que je ne comprend pas dutout...
 
1) Le glLoadIdentity(); avant gluLookAt est déjà présent (J'ai édité mon code)
2) Si je met un glLoadIdentity(); avant mon mesh, ça annule gluLookAt et donc je ne peux plus bouger ma Camera !

n°1596664
Jux_
Posté le 07-08-2007 à 13:52:45  profilanswer
 

J'ai déja eu ce genre de problemes, si mes souvenirs ne sont pas trop perimés voila pq ta voiture est eclairée differemment selon la caméra.
 
En gros, il me semble que la grosse feinte est que quand tu change d'angle de vue, ce n'est pas la caméra que tu déplace, mais le monde que tu fais bouger. Cela veut dire que tu fais aussi bouger la lumiere que tu a placé AVANT de faire to gluLookAt. Pour palier à ça, il me semble qu'il te suffirait de placer ta lampe apres avoir fait ton gluLookAt et si je ne me gourre pas cela devrait résoudre ton probleme.
Enfin meme si ce n'est pas la solution je suis quasi certain que ton probleme vient de la, je t'invite a te referer au red book et au chapitre sur les lumieres ou ce genre de pincipes sont abordés.

n°1596881
vincent0
Posté le 07-08-2007 à 18:44:20  profilanswer
 

Merci, quand je spécifie la position de la lumière après gluLookAt, ça fonctionne

n°1596945
Jux_
Posté le 07-08-2007 à 21:34:42  profilanswer
 

Ouf, j'étais pas a coté de la plaque :)
 
Enfin manifestement tu as encore quelques incompréhension sur la façon dont fonctionnent les transformations en opengl, je te conseille vraiment de bouquiner un peu a ce sujet (pour rappelle, une vieille version du red book est disponible en ligne gratuitement, elle est loin d'etre complete car il me semble qu'elle s'arrete a opengl 1.4, mais cest largement suffisant pour ce genre de problematiques), surtout en ce qui concerne les differents types de transformations (modelling, viewing etc.) et la façon dont elles sont utilisés en opengl.

mood
Publicité
Posté le 07-08-2007 à 21:34:42  profilanswer
 

n°1597035
bjone
Insert booze to continue
Posté le 08-08-2007 à 09:48:13  profilanswer
 

et en même temps si tu passes par une modèle d'éclairage tout-shader, tu poses tes propres conventions :)


Message édité par bjone le 08-08-2007 à 09:48:27

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  [Opengl] Problème d'éclairage

 

Sujets relatifs
PROBLEME DE DATE LORS DE L'IMPORTATION SOUS EXCELProblème d'affichage d'un JCalendar
Caml , problème avec le carréProblème sur mon site internet.
Probleme pour validation XHTMLURL-Rewriting - un problème et des questions
Problème avec les jointures[Résolu] Problème avec les variables de session
problème boucle until[OpenGL] problème d'éclairage
Plus de sujets relatifs à : [Opengl] Problème d'éclairage


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR