Lumiere

Ensias Messages postés 31 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 15 décembre 2006 - 29 août 2005 à 17:26
neodelphi Messages postés 442 Date d'inscription jeudi 4 avril 2002 Statut Membre Dernière intervention 11 août 2008 - 31 août 2005 à 19:04
Salut tous le monde, je viens de commencer Opengl et j'ai ecris un petit programme qui dessine un cube qui est en rotation autour de lui meme et qui est eclairé par une source lumineuse.Voila le code:
void Dessin1(void)
{
float Pos[]={1,1,2,1};
glClearColor(0,0,0,0);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glLightfv(GL_LIGHT0,GL_POSITION,Pos);
glTranslatef(0,0,-8);
glRotated(angle,0,1,0);
glBegin(GL_QUADS);

glVertex3i(2,2,2);
glVertex3i(2,-2,2);
glVertex3i(-2,-2,2);
glVertex3i(-2,2,2);



glVertex3i(2,2,-2);
glVertex3i(2,-2,-2);
glVertex3i(-2,-2,-2);
glVertex3i(-2,2,-2);


glVertex3i(2,2,2);
glVertex3i(2,-2,2);
glVertex3i(2,-2,-2);
glVertex3i(2,2,-2);



glVertex3i(-2,2,2);
glVertex3i(-2,-2,2);
glVertex3i(-2,-2,-2);
glVertex3i(-2,2,-2);



glVertex3i(-2,2,-2);
glVertex3i(-2,2,2);
glVertex3i(2,2,2);
glVertex3i(2,2,-2);

glVertex3i(-2,-2,-2);
glVertex3i(-2,-2,2);
glVertex3i(2,-2,2);
glVertex3i(2,-2,-2);
glEnd();
glutSwapBuffers();
}
Mais je ne comprends pas pourquoi la source lumineuse tourne elle aussi .
Est ce que qlq'1 à une idée.
Merci

3 réponses

neodelphi Messages postés 442 Date d'inscription jeudi 4 avril 2002 Statut Membre Dernière intervention 11 août 2008
29 août 2005 à 23:27
Je pense que tu n'utilise pas la bonne matrice: lorsque tu utilise GL_MODELVIEW je pense que tu fait bouger la vue, la camera, et donc le cube est fixe mais tu as l'impression qu'il tourne, alors qu'en fait c'est toi qui tourne autour du cube (tout est relatif mais bon).
Regarde si ya pas une matrice GL_WORLD ou kekchose avec WORLD...

neodelphi
0
cs_keil Messages postés 52 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 25 octobre 2005
31 août 2005 à 12:07
Ahhh ce fameux probleme !! je l'ai rencontré aussi par contre je me souviens plus vraiment comment je l'ai résolu.

En regardant un de mes progs je peux dire que faut une certaine
distance entre la source et l'objet, qu'il vaut mieux ne pas trop
utilisé la lumiere ambiante si on veut se rendre compte des effets. En
regardant ton code, je pense qu'il serait bien de définir les normales
de tes quads (juste avant chaque groupe de glVertex, tu place un
glNormal avec les arguments qu'il faut)



Si ca marche toujours pas je verrai plus approfondément. Mais c'est
vrai que quand j'ai tenté de me documenté sur le net j'ai vu pas mal de
solution bricolage et j'ai trouvé ca pas programmatiquement correct!
0
neodelphi Messages postés 442 Date d'inscription jeudi 4 avril 2002 Statut Membre Dernière intervention 11 août 2008
31 août 2005 à 19:04
Franchement, si tu code sous windows, préfère directX, c'est bien mieu et le sdk est très bien foutu.

neodelphi
0
Rejoignez-nous