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 :

Lumiere ne fonctionne pas?


Sujet :

OpenGL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Lumiere ne fonctionne pas?
    Bonjour,
    Alors voila, mon probleme est qu'il semble que seulement la couleur du matériel semble fonctionner , et la couleur ambiante.
    Je mexplique:
    En fait, jai un shere 3d (glutSolidSphere), et japplique sur celle ci une lumiere avec un parametre AMBIANT, DIFFUSE, et SPECULAR.
    Mais la sphere est bleu, et seulement a cause que le materiel est bleu!!
    Comme un code vos mille mots:
    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
    18
    19
    void InitLight()
    {
    float ambiant[] = {1.0,1.0,1.0,1.0};
    float diffuse[] = {1.0,1.0,1.0,1.0};
    '' meme chose pr specular...float specular[]...
    GLfloat position[] = {0.0 ,0.0 ,3.0 , 1.0f };
     
    glLightfv(GL_LIGHT0,GL_AMBIANT,ambiant);
    glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuse);
    '' meme chose , pour specular (exactement les meme valeur)'
    glLightfv(GL_LIGHT0, GL_POSITION, position);
     
     
    //valeur ambiante globale
    GLfloat global_ambient[] = { 1.0, 1.0, 0.0, 1.0 };
    glLightModelfv(GL_LIGHT_MODEL_AMBIENT, global_ambient);
     
    glEnable(GL_LIGHT0);
    }
    Dans le meme ordre exctement.
    Cette routine (InitLight) est appeller juste avant le main loop de openGL.

    A savoir aussi :
    A chaque appelle de Display() , qui est mon callback de 'desisnage' que OpenGl appelle lorsqu'il est Idle, je fait un call a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    float mcolor[] = {0.0, 0.0 ,1.0 ,1.0}; //bleu
    glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mcolor);
    avant de commencer a dessiner les vertex...


    et voila, le résultat est une sphere BLEU claire, en fait,du bleu, du pur RGB(0,0,255), ou du moin, tres tres proche.
    Il en resulte un rond bleu 2d tres moche...


    qqun peut maider svp?

  2. #2
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 183
    Points
    5 183
    Par défaut
    tu satures ta lumière ambiante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float ambiant[] = {1.0,1.0,1.0,1.0};
    donc tout sera éclairé au max, peu importe tes lumières

    commence donc par mettre un lumière ambiante plus faible
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float ambiant[] = {0.1,0.1,0.1,1.0};
    ça résoudra certainement ton problème
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Re:
    Sa ne donne malheureusement pas le résultat escompté...
    Lorsque que je touche a 'float ambient[]' , la 'sphere' (en fait, le rond bleu...) ne saffiche plus du tout...
    Il y a vrmnt kkchose ki cloche, mais je ne sais vrmnt pas koi...

  4. #4
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 524
    Points : 5 183
    Points
    5 183
    Par défaut
    ta lumière n'est pas à l'intérieur de ton objet ?
    tu peux "afficher" ta lumière avec un "GL_POINT" par exemple
    tu as bien des normales déclarées avec chaque sommet (vertex) ?
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Re:
    la lumiere est en arriere de la caméra.
    et pour les normal, et bien.., le rond qui me sert de sphere est déclarer avec glutSolidSphere, lapelle a glBegin et gend, aisin que les vertex, sont tous internet dans cette fonction...les normal doivent donc aussi etre déclarer dans la fonction...du moin, c'est ce que jen retire!

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Re:
    QQun ma dit que le matériel n'étais pas bien identifier...jai par conséquen enlver lapelle au matériel...et boum...sa marche enfin mieux(la lumiere spéculaire ne marche tjrs pas parcontre...).
    Je vs remerci bcp de votre temps.

    Derniere petite question :
    Pourquoi quand on effectu une rotation de matrice, la lumiere ne 'rotationne' pas avec elle?

    Ex: Quand je fait une rotation sur MODEL_VIEW,ma sphere tourne bien, mais la lumiere reste aur un point fixe...et ce, sans aucun push/pop de matrice!

    Dison que c'est exactement comme la terre/soleil...la terre tourne, mais le soleil reste fixe.

  7. #7
    Membre habitué Avatar de razmott
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 133
    Points : 142
    Points
    142
    Par défaut
    Salut !

    Pour la lumière spéculaire, il faut que tu définisses l'exposant spéculaire de la matière (la valeur par défaut est 0)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glMaterialf(GL_FRONT, GL_SHININESS, 0.25);
    Pour ce qui est de la matrice de rotation, celle-ci s'applique à la lumière lors de ton appel à "glLightfv(GL_LIGHT0, GL_POSITION, position);". Il faut donc réitérer cet appel à chaque fois que tu veux modifier la position de la lumière, me si tu utilises des matrices.

    Bon coding !

    @+
    Mieux vaut prévoir que patcher.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/01/2004, 11h14
  2. [FP]Writeln ne fonctionne pas !
    Par néo333 dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 01/11/2003, 23h47
  3. UNION qui ne fonctionne pas
    Par r-zo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/07/2003, 10h04
  4. Un Hint sur un PopupMenu ne fonctionne pas !!??
    Par momox dans le forum C++Builder
    Réponses: 6
    Dernier message: 26/05/2003, 16h48
  5. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10

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