Bonjour à tous,
Je dispose dans mon programme de deux vecteurs, un contenant une liste de points (leurs coordonnées), et une liste de triangles, contenant les 3 coordonnées des 3 sommets dans la liste de points.
L'affichage fonctionne, mais l'image a une couleur uniforme, donc l'effet 3D est complètement raté.
Je dois donc pour arranger ce problème calculer les normales de chaque facettes, ce que je fais avec le code suivant :
Bon, les tableaux sont un peu confus, j'admets, mais la deuxième partie du code fonctionne bien, et l'affichage des normales par le code de debug donne bien des valeurs différentes pour chaque facette, donc même si le calcul est foireux, on devrait voir quelque chose, or cela ne change rien du tout.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 glBegin(GL_TRIANGLES); glColor3ub(255,0,0); //du rouge for(int i=0; i<(int)facettes.size();i++) { nx=(points[facettes[i].x-1].x-points[facettes[i].y-1].x)*(points[facettes[i].y-1].x-points[facettes[i].z-1].x); ny=(points[facettes[i].x-1].y-points[facettes[i].y-1].y)*(points[facettes[i].y-1].y-points[facettes[i].z-1].y); nz=(points[facettes[i].x-1].z-points[facettes[i].y-1].z)*(points[facettes[i].y-1].z-points[facettes[i].z-1].z); //qDebug() << "Test "<<nx<<","<<ny<<","<<nz; glNormal3f(nx,ny,nz); glVertex3d(points[facettes[i].x-1].x,points[facettes[i].x-1].y,points[facettes[i].x-1].z); glVertex3d(points[facettes[i].y-1].x,points[facettes[i].y-1].y,points[facettes[i].y-1].z); glVertex3d(points[facettes[i].z-1].x,points[facettes[i].z-1].y,points[facettes[i].z-1].z); } glEnd();
Est ce qu'il y a quelque chose à activer pour que cela fonctionne ?
Je n'ai a première vue pas mis de lampe dans mon programme, n'en ayant pas le besoin puisque jusqu'ici tout s'affichait bien, en ais-je besoin ?
Merci d'avance pour tout aide que vous pouvez m'apporter.
Partager