Je ne comprends plus rien aux lumieres

Ensias Messages postés 31 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 15 décembre 2006 - 1 sept. 2005 à 00:27
cs_keil Messages postés 52 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 25 octobre 2005 - 5 sept. 2005 à 15:20
Salut tous le monde, je viens de debuter Opengl et je gallere avec les lumieres.
J'ai cree une petite scene qui comporte 2 cubes, l'un des deux est fixe tandis que l'autre tourne autour de lui meme, et une sphere fixe. Les trois objets se trouves sur le meme plan (le plan z = - 9) et j'ai posé la source de lumiere au pt ( 0,0,2 ).Mais je comprends rien au resultat. La sphere est toujours eclairé, le cube fixe n'est pas eclairé, et le cube qui tourne est eclairé mais comme si la source tournait autour de lui.
Voici le code du prog:
void Dessin(void)
{
float Pos[]={0,0,2,1};
glClearColor(0,0,0,0);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0,-2,-9);
glRotated(30,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();



glLoadIdentity();
glTranslatef(0,4,-9);
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();
glLoadIdentity();


glTranslatef(6,0,-9);
glutSolidSphere(2,30,30);
glLoadIdentity();

glLightfv(GL_LIGHT0,GL_POSITION,Pos);


glutSwapBuffers();
}

Merci de votre aide.

1 réponse

cs_keil Messages postés 52 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 25 octobre 2005
5 sept. 2005 à 15:20
1- tu devrais utiliser glLoadIdentity juste au début et te démerdé après avec des glPushMatrix et des glPopMatrix



2- Définir certaines normales sur les faces de ton cube te feront mieux comprendre la gestion d'une lumière



3- Avoir positionné la lumière à la fin de ton code est la bonne technique il me semble donc laisse tel quel.



4- Sur un post je ne sais plus où il parlait d'utiliser la matrice de
projection lors du positionnement de la lumière, je doute que ce soit
une bonne idée, mais sait-on jamais.



5- J'ai moi meme un peu de mal a comprendre la gestion des lumières.
Avec les quelques tests que j'ai fait, je peux seulement dire
qu'utiliser une lumière ambiante ne permet pas d comprendre aussi
clairement qu'une lumière spéculaire, la gestion de la lumière.



6- Si tu trouves qqch d'interessant, continue de m'informer sur ce post, je suis tres interessé
0
Rejoignez-nous