IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

Transparence et éclairage


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut Transparence et éclairage
    Bonjour,
    j'ai un léger souci avec le canal alpha lorsque j'utilise l'éclairage dans une scène.
    J'arrive à modifier les couleurs de la forme mais le canal alpha n'est jamais pris en compte :
    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
    17
     
    // Initialisation de la light
    this.gl.glEnable(GL.GL_NORMALIZE);   
    this.gl.glEnable(GL.GL_AUTO_NORMAL);
    this.gl.glEnable(GL.GL_LIGHT0);
     
    this.gl.glShadeModel(GL.GL_SMOOTH);
    this.gl.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, new float[]{0.7f, 0.7f, 0.7f, 1.0f}, 0);
    ....
     
    // Tracé de la forme
    this.gl.glColorMaterial(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT);
    this.gl.glEnable(GL.GL_COLOR_MATERIAL);
    this.gl.glColor4f(1, 0, 0, 0.1f);
    ...
    this.gl.glCallList(shapeId);
    ...
    Par exemple, ce code affiche bien la forme en rouge mais il n'y a aucune transparence. Est-ce que vous auriez des infos sur le mix transparence/éclairage ?
    Merci d'avance

  2. #2
    Membre chevronné
    Inscrit en
    Février 2008
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Février 2008
    Messages : 413
    Par défaut
    Bonjour,

    le canal alpha tout seul ne t'aidera pas beaucoup...il faut aussi activer le blending et le configurer.

    Dans le cas d'une transparence "de base", essaie ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

  3. #3
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Salut,
    merci, en fait le blending est déjà activé. Le problème semble vraiment venir des lumières. Si je fais ceci la transparence fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // Tracé de la forme
    this.gl.glDisable(GL.GL_LIGHTING);
    
    this.gl.glColorMaterial(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT);
    this.gl.glEnable(GL.GL_COLOR_MATERIAL);
    this.gl.glColor4f(1, 0, 0, 0.1f);
    ...
    this.gl.glCallList(shapeId);
    ...
    mais pas le calcul de l'éclairage, la forme (sphère en fait) est bien transparente mais le rendu est "flat", en gros j'ai un cercle rouge plein au lieu de la sphère avec dégradés (normal vu qu'il n'y a plus d'éclairage).

  4. #4
    Membre chevronné
    Inscrit en
    Février 2008
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Février 2008
    Messages : 413
    Par défaut
    Re,

    je ne suis pas sûr que ton colorMaterial soit bien configuré, je dirais qu'il faut également appliquer la couleur a la composante diffuse de la lumière, pas juste l'ambiante.

    Essaie ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.gl.glColorMaterial(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE);

  5. #5
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Un grand merci ! ça marche nickel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment faire un background transparent?
    Par guigui1005 dans le forum Composants
    Réponses: 5
    Dernier message: 17/05/2012, 21h45
  2. [Composant] La transparence
    Par Nuts07 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 22/05/2003, 14h51
  3. Comment rendre transparent le tour d un icone
    Par NeoRonin dans le forum Composants VCL
    Réponses: 7
    Dernier message: 03/03/2003, 01h40
  4. Réponses: 1
    Dernier message: 23/02/2003, 06h22
  5. ouverture d'une form en fondu transparent
    Par nicholz dans le forum Composants VCL
    Réponses: 9
    Dernier message: 08/01/2003, 11h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo