Glut : éclairage et normales ???

billwatterson Messages postés 3 Date d'inscription jeudi 17 avril 2003 Statut Membre Dernière intervention 24 janvier 2005 - 24 janv. 2005 à 22:02
gtlpcl Messages postés 4 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 29 janvier 2005 - 28 janv. 2005 à 11:30
Bonjour,

J'essaye d'ajouter des effets de lumières sur des objets divers en jouant sur les différentes caractéristiques mais :
Comment faire pour définir les normales des objets illuminés?
Il faut les définir par point ou par face?
Pour un cube par exemple comment fait-on?

Merci d'avance !

1 réponse

gtlpcl Messages postés 4 Date d'inscription mardi 21 septembre 2004 Statut Membre Dernière intervention 29 janvier 2005
28 janv. 2005 à 11:30
Salut;



Avant de répondre, je suppose que tes lumières sont définies et activées.

Alors, pour répondre à tes questions :


<li>La primitive pour définir une normale en OpenGL est : glNormal3f( 0.0f, 0.0f, 1.0f);

</li>
<li>Les normales se définissent normalement par faces (heureusement;
sinon, tu n'en fini plus.) Mais je crois qu'on peu le faire par point,
mais là tu dégrades tes performances pour pas grand chose.</li>
<li>Et voici un petit exemple pour un cube :</li>



glBegin(GL_QUADS);


// Front Face
glNormal3f( 0.0f, 0.0f, 1.0f); // Normal Pointing Towards Viewer
glVertex3f(-1.0f, -1.0f, 1.0f); // Point 1 (Front)
glVertex3f( 1.0f, -1.0f, 1.0f); // Point 2 (Front)
glVertex3f( 1.0f, 1.0f, 1.0f); // Point 3 (Front)
glVertex3f(-1.0f, 1.0f, 1.0f); // Point 4 (Front)
// Back Face
glNormal3f( 0.0f, 0.0f,-1.0f); // Normal Pointing Away From Viewer
glVertex3f(-1.0f, -1.0f, -1.0f); // Point 1 (Back)
glVertex3f(-1.0f, 1.0f, -1.0f); // Point 2 (Back)
glVertex3f( 1.0f, 1.0f, -1.0f); // Point 3 (Back)
glVertex3f( 1.0f, -1.0f, -1.0f); // Point 4 (Back)
// Top Face
glNormal3f( 0.0f, 1.0f, 0.0f); // Normal Pointing Up
glVertex3f(-1.0f, 1.0f, -1.0f); // Point 1 (Top)
glVertex3f(-1.0f, 1.0f, 1.0f); // Point 2 (Top)
glVertex3f( 1.0f, 1.0f, 1.0f); // Point 3 (Top)
glVertex3f( 1.0f, 1.0f, -1.0f); // Point 4 (Top)
// Bottom Face
glNormal3f( 0.0f,-1.0f, 0.0f); // Normal Pointing Down
glVertex3f(-1.0f, -1.0f, -1.0f); // Point 1 (Bottom)
glVertex3f( 1.0f, -1.0f, -1.0f); // Point 2 (Bottom)
glVertex3f( 1.0f, -1.0f, 1.0f); // Point 3 (Bottom)
glVertex3f(-1.0f, -1.0f, 1.0f); // Point 4 (Bottom)
// Right face
glNormal3f( 1.0f, 0.0f, 0.0f); // Normal Pointing Right
glVertex3f( 1.0f, -1.0f, -1.0f); // Point 1 (Right)
glVertex3f( 1.0f, 1.0f, -1.0f); // Point 2 (Right)
glVertex3f( 1.0f, 1.0f, 1.0f); // Point 3 (Right)
glVertex3f( 1.0f, -1.0f, 1.0f); // Point 4 (Right)
// Left Face
glNormal3f(-1.0f, 0.0f, 0.0f); // Normal Pointing Left
glVertex3f(-1.0f, -1.0f, -1.0f); // Point 1 (Left)
glVertex3f(-1.0f, -1.0f, 1.0f); // Point 2 (Left)
glVertex3f(-1.0f, 1.0f, 1.0f); // Point 3 (Left)
glVertex3f(-1.0f, 1.0f, -1.0f); // Point 4 (Left)
glEnd(); // Done Drawing Quads






J'espère t'avoir aidé.

Bien à toi.



PCL


-- Il n'y a pas de problèmes, il n'y a que des solutions. C'est mathématique. --
0
Rejoignez-nous