Problème de Transparence Opengl

yayayvon Messages postés 3 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 5 mars 2005 - 2 mars 2005 à 12:25
yayayvon Messages postés 3 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 5 mars 2005 - 5 mars 2005 à 15:25
Bonjour,
J'arrive à afficher des objets texturés transparents (utilisation du blending et gldepthMask), mais seulement en les affichant après tous les objets opaques. J'ai lu dans le red book qu'on est obligé de la faire dans cet ordre là. Dans mon programme je souhaite afficher un objet transparent qui bouge avec le gluLookAt, et donc l'afficher avant la scène opaque. Comment puis-je faire?

Merci d'avance,
Yann

4 réponses

KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
3 mars 2005 à 21:02
Pourquoi "qui bouge avec le gluLookAt, et donc l'afficher avant la scène opaque" ?, tu fais ton gluLookAt, puis ta scene opaque, puis ton objet translucide, je vois pas ou est ton pb...
0
yayayvon Messages postés 3 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 5 mars 2005
5 mars 2005 à 14:01
En fait je fais un doomlike. Mon programme est de la forme suivante, dans l'affichage:

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

gluLookAt(60,120,-100,0,0,300,0,1,0);

viseur(); // modélisation du viseur et
modelisation_kalash // de l'arme
// juste après le glulookat pour qu'on les voit
// tout le temps à l'écran

// Transformations qui permettent que lorsque l'on se déplace, la map bouge (et non le point de vue)
//vue pilote simplifiée
glRotatef(regard_y,1,0,0);
glRotatef(pitch, 0.0,1.0,0.0);
glTranslatef(-pos_x, -pos_y, -pos_z);

modelisation_map();

Je souhaiterai afficher d'autres éléments, en transparence cette fois-ci, qui suivent le gluLookAt en plus du viseur et de l'arme. Quand je tire, je souhaite afficher de la fumée transparente au niveau du viseur. Le problème c'est que je la dessine avant la dernière modélisation opaque (la map) donc je ne la vois pas.
Ma question est donc : n'y a t'il pas un moyen de dessiner un objet transparent avant un objet opaque?

Merci d'avance
0
KeniiyK Messages postés 326 Date d'inscription vendredi 13 août 2004 Statut Membre Dernière intervention 2 novembre 2007 2
5 mars 2005 à 14:18
"Ma question est donc : n'y a t'il pas un moyen de dessiner un objet transparent avant un objet opaque?"
Reponse : non, ton objet sera bien transparent, mais vu que la scene opaque sera dessinée apres il n'y aura rien dans le Color Buffer ou du moins juste la couleur du glClearColor.

Dans ton exemple essaye de faire :

glMatrixMode(GL_MODELVIEW); // deja ca tu le mets a la fin de ton resize ou reshape apres avoir defini ta matrice de projection
glLoadIdentity();
gluLookAt(60,120,-100,0,0,300,0,1,0);

viseur(); // modélisation du viseur et
modelisation_kalash // de l'arme
// juste après le glulookat pour qu'on les voit
// tout le temps à l'écran
glPushMatrix();
glRotatef(regard_y,1,0,0);
glRotatef(pitch, 0.0,1.0,0.0);
glTranslatef(-pos_x, -pos_y, -pos_z);
modelisation_map();
glPopMatrix();

//dessine ici ton objet transparent tel quel sans push/popMatrix

//pas sur que ca marche, mais lis la suite

Mais le meilleur moyen pour modeliser ce genre de chose c'est d'avoir une camera avec un repere local a la camera et de faire un gluLookAt("camera") et de savoir tracer n'importe quel objet de la scene dans un repere "univers" ou repere camera s'il faut qu'il suive la camera.
0
yayayvon Messages postés 3 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 5 mars 2005
5 mars 2005 à 15:25
Ca marche,
c cool merci
0
Rejoignez-nous