cs_windsurfer
Messages postés20Date d'inscriptionvendredi 30 janvier 2004StatutMembreDernière intervention26 juin 2008
-
9 janv. 2008 à 14:14
cs_windsurfer
Messages postés20Date d'inscriptionvendredi 30 janvier 2004StatutMembreDernière intervention26 juin 2008
-
12 janv. 2008 à 19:12
Bonjour,
Je cherche à réaliser un prog pour étudier les fonctions de deux variables z=f(x,y). Je travaille sous opengl.
Le logiciel doit tracer la surface en rendu 3d avec éclairage (ça c'est fait ça marche nickel) ou les lignes de niveaux de la courbe, en gros les fils de fer qui supportent la courbe (ça c'est fait, ça marche aussi). Quand on affiche l'un sans l'autre c'est parfait.
Mais, lorsque je veux afficher la surface avec les lignes de niveaux dessus on ne voit plus les lignes de niveaux, elles se mélangent à la surface. En clair comment peut-on faire pour effectuer un tracé clair sur la surface sans que ce tracé ne se mélange à la surface et en deviennent illisible ??
Merci à tous les gros bras qui me donneraient une solution.
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 20123 9 janv. 2008 à 16:48
Bonjour
Le plus simple, tu augmentes la taille d'affichage des lignes par un glLineWidth. (Par défaut la valeur est de 1.0; tu peux la mettre à 3.0, 5.0, etc... selon tes besoins.)
Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
cs_windsurfer
Messages postés20Date d'inscriptionvendredi 30 janvier 2004StatutMembreDernière intervention26 juin 20081 9 janv. 2008 à 17:23
Merci
mais j'y avais pensé. Quelque soit l'épaisseur des lignes; il y a un mélange de couleur entre la surface 3d et le "tramage" tel que le tramage est super moche , en pointillé, à moitié visible....
Je crois qu'il y a une histoire de décalage de pixel pour dessiner sans mélanger la surface et le tramage mais je ne sais pas comment ça marche. .
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 20123 9 janv. 2008 à 18:26
Tu devrais avoir quelquechose du genre :
glPushAttrib( GL_ALL_ATTRIB_BITS );
// Dessin de ta surface "solide"
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glLineWidth( 1.0 );
DessinSurface ; // Procedure qui dessine ta surface
// Dessin de ta surface "maillage"
glColor3f(0.0,0.0,0.0);
glDisable(GL_LIGHTING);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glLineWidth( 3.0 );
DessinSurface ; // Même procedure que précédemment
glPopAttrib();
P.S. Non testé ! De mémoire, alors sans garanties aucune
Cordialement. <hr />"L'imagination est plus importante que le savoir." Albert Einstein
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_windsurfer
Messages postés20Date d'inscriptionvendredi 30 janvier 2004StatutMembreDernière intervention26 juin 20081 10 janv. 2008 à 20:27
Je suis long à répondre, désolé, beaucoup de boulot en milieu de semaine...
Donc : ça ne change pas le rendu. Il y a un toujours un "mélange" entre la surface et les lignes dessus.
J'ai viens de trouver un site (http://helios.univ-reims.fr/Labos/LERI/membre/bittar/03OpenGL/td08.html) où il est question de décalage de pixels pour différencier polygones et lignes .... et ça ne marche pas. La commange glPolygonOffset est donnée comme inconnue.
Je pense ne pas avoir une version complète de la librairie opengl. J'en cherche une meilleure comptatible avec celle que j'utilise.
Si qqun à des infos concerant cette commande pour l'humble débutant que je suis....