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 :

Influence de la couleur de tracé sur la gestion de la lumièr


Sujet :

OpenGL

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Influence de la couleur de tracé sur la gestion de la lumièr
    Bonjour,

    Petite question : je dessine une forme (un cube) que j'éclaire. Si le cube est blanc (en fait couleur par défaut non précisée) ou si une texture lui est appliquée, la lumière fonctionne parfaitement. Par contre si le cube est dessiné en couleur en précisant cette couleur par glColor3f(.....) avant de le tracer, la lumière n'a plus aucune influence sur lui !

    Quelqu'un peut il m'expliquer pourquoi ...et donc comment éviter cela.

    D'avance merci.

  2. #2
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    Salut,

    par defaut openGL desactive les couleurs quand tu mets des lights openGL ,

    pour eviter cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    glEnable(GL_COLOR_MATERIAL);

    A+

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    Cette ligne est déjà dans mon code.

    Le pb n'est pas que les couleurs soient désactivées quand je mets de la lumière, mais que la lumière soit désactivée quand je dessine en couleur ...

    Une autre idée ?

  4. #4
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    euh non la je vois pas désolé

    si tu mettais un screenshot peut etre qu on capterai mieux le probleme ...

    sinon une solution consiste a me pas utliser les lights openGL


    dis toi que openGL calcule pour toi une couleur qui te donne la lumiere pour chaque vertex ( une sorte de glColor caché) , les calculs sont un peu complexes MAIS tu peux utliser des calculs simplifiés qui donnent bien aussi

    en gros :

    l ambient est la meme partout

    la diffuse est plus importante si la source de lumiere est face a l objet ( ou a la normale d une face) (dot product normale / angle de light)

    la specular est plus importante le long du vecteur de reflexion de la source de lumiere ( reflexion lightsource/normale) mais attention il faut prendre le max entre 0 et la valeur trouvé ( pas de valeur negative)

    au final tu additionne le tout et t arrive a une couleur .

    Apres a toi de voir si tu veux des lumieres de position pour moduler suivant la distance etc...

    bon c est vrai que c pas evident a mettre en place au debut mais l avantage quand tu essaie de le faire c est que tu comprends mieux les lights qu avant

    a+

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Si tout ça c'est pas fait avec un shader, ça risque d'être plutôt lent, surtout avec une carte qui peut gérer le T&L en hardware. Donc à réserver à l'apprentissage quand même

  6. #6
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 38
    Points : 27
    Points
    27
    Par défaut
    En utilisant des lumières, il faut que tu utilises des matériaux. Pour dire en gros à openGL comment un objet se comporte en recevant la lumière (quelle couleur il renvoie à l'oeil).
    Donc tu déclares tes matériaux (ici par exemple pour une planète bleue... )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	GLfloat mat_ambient_ter[] = {0.0, 0.1, 0.8, 1.0}; //ca c'est la composante ambient du matériau de la terre
     
    	GLfloat mat_diffuse_ter[] = {0.0, 0.1, 0.8, 1.0}; //ca c'est la diffuse (voir redbook)
    et ensuite tu l'applique a ton objet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient_ter);
     
    glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse_ter);
     
    [...]
     
    glutSolidSphere (10, 50, 15); //la planete
    et voila, apres regardes le redbook si c po tro compris, c'est bien expliqué chapitre 5 Lighting

    Sur ce amusez vous bien !!!

  7. #7
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    Citation Envoyé par Loulou24
    Si tout ça c'est pas fait avec un shader, ça risque d'être plutôt lent, surtout avec une carte qui peut gérer le T&L en hardware. Donc à réserver à l'apprentissage quand même
    oui et non ,

    oui c est effectivement plus lent qu avec un shader

    non car :

    * toutes les cartes 3d ne supportent les shaders.Tout depend a qui tu adresse.utilisez les dernieres technologie en matiere de hardware c bien mais si seulement 30% des gens peuvent jouer c est mal.

    * tout depend de ce qu'il y a d autre dans ton jeu/appli , ca ramerait effectivement si tu avais 300000 tri a l ecran mais bon qui sur ce forum developpe des trucs de cette envergure ?

  8. #8
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Je n'ai pas dit qu'il fallait utiliser un shader, seulement que ce serait la seule solution performante en faisant l'éclairage à la main, sinon il vaut mieux laisser faire le hardware (n'importe quelle carte fait du T&L hardware maintenant).

    Je suis d'accord sur le fait que ça ne se verra que sur des grosses scènes, c'était juste une indication que j'apportais

Discussions similaires

  1. changement des couleurs par appuis sur case à cocher
    Par Wormus dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/10/2005, 23h05
  2. Couleur cellule stringgrid sur condition...
    Par kobe dans le forum Composants VCL
    Réponses: 1
    Dernier message: 11/08/2005, 13h49
  3. Changement de couleur de police sur une partie d'un caption
    Par kobe dans le forum Composants VCL
    Réponses: 3
    Dernier message: 11/07/2005, 10h18
  4. [Reporting] couleur 1 ligne sur 2
    Par meufeu dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 10/05/2005, 10h51
  5. wxWidgets : couleur de texte sur une seule ligne
    Par Oatly dans le forum wxWidgets
    Réponses: 8
    Dernier message: 05/12/2004, 19h24

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