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 :

Gestion de la lumière avec opengl


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 465
    Par défaut Gestion de la lumière avec opengl
    Bonjour,
    J'ai des bâtiments en 3D. Si j'active le lighting avec l'instruction gl.glEnable(GL.GL_LIGHTING) tout devient noir.
    Voila le code que j'utilise pour gérer la lumière:
    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
     
    float[] lightAmbient = {724136.247f, 146561.526f,51};
    		float[] lightDiffuse = {724136.247f-1, 146561.526f-20,0};
    		float[] lightSpecular = {724136.247f-1, 146561.526f-20,0};
    		float[] lightPosition = {724136.247f, 146561.526f,51}; 
     
     
     
    		gl.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, lightAmbient,0);
    		gl.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, lightDiffuse,0);
    		gl.glLightfv(GL.GL_LIGHT0, GL.GL_SPECULAR, lightSpecular,0);
    		gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, lightPosition,0);
    		gl.glEnable(GL.GL_LIGHT0);
    		gl.glEnable(GL.GL_COLOR_MATERIAL); 
    		gl.glEnable(GL.GL_LIGHTING);
    De plus les intrsection entre les différentes surfaces des objets 3D deviennent invisibles.

  2. #2
    Nouveau membre du Club
    Profil pro
    DEV
    Inscrit en
    Septembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : DEV

    Informations forums :
    Inscription : Septembre 2007
    Messages : 9
    Par défaut
    Bonjour,
    Vérifies que tu as des normales (au moins pour les surfaces) et quelles pointent dans la bonne direction (ext si ext du batiment ...)

    Cordialement

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 465
    Par défaut
    J'ai calculer la normale de chaque surface, la j'obtient quelque surfaces bien affichées , mais la plupart des autres surface sont blanches, je sais pas quoi le problème.

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

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 580
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    float[] lightAmbient = {724136.247f, 146561.526f,51};
    		float[] lightDiffuse = {724136.247f-1, 146561.526f-20,0};
    		float[] lightSpecular = {724136.247f-1, 146561.526f-20,0};
    		float[] lightPosition = {724136.247f, 146561.526f,51};
    que tu ais des valeurs de folie pour la position de la lumière passe encore
    mais la lumière ambiante paramétrée à (724136.247f, 146561.526f, 51) va être plafonnée à (1, 1, 1)
    il en va de même pour les valeurs diffuses et spéculaire, plafonnées à blanc (1, 1, 1)

    de plus, tes tableaux devraient faire 4 flottants et non 3

    je t'invite à consulter la doc de glLight
    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
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 465
    Par défaut
    Oui, t'as raison, c'est meiux maintenant. Mais je suis entrain de faire des tests pour être sur.

  6. #6
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 59
    Par défaut
    c'est quoi la difference entre lightDiffuse ,lightAmbient et lightSpecular ?

    j'arriver pas a donner les valeurs j'ai mis :

    float Light0Dif[4] = {1.0f, 0.2f, 0.2f, 1.0f};
    float Light0Spec[4] = {1.0f, 0.2f, 0.2f, 1.0f};
    float Light0Amb[4] = {0.5f, 0.5f, 0.5f, 1.0f};

    mais ca donne pas ce que je veux moi

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 465

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 465
    Par défaut
    Enfin j'ai pu localiser le problème, j'ai oublié d'activer le GL_DEPTH_TEST :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gl.glEnable(GL.GL_DEPTH_TEST);
    Mais j'ai une question: Les surfaces qui sont contre la lumière sont trés noires, est-il possible d'avoir des surfaces grises au lieu des surfaces noires (c'est à dire l'intensité de la lumière est faible)?

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

Discussions similaires

  1. [OpenGL ES 2.x] Gestion des fenetres avec OpenGL ES 2
    Par Aladin.LAM dans le forum OpenGL
    Réponses: 5
    Dernier message: 06/03/2013, 21h44
  2. Problème avec la lumière (jogl:opengl)
    Par Alays dans le forum OpenGL
    Réponses: 4
    Dernier message: 31/10/2012, 13h12
  3. Problème avec la lumière (jogl:opengl)
    Par Alays dans le forum Général Java
    Réponses: 2
    Dernier message: 29/10/2012, 17h48
  4. [CVS]Gestion de 2 versions avec une partie commune
    Par Gromitou dans le forum EDI et Outils pour Java
    Réponses: 4
    Dernier message: 19/02/2004, 14h32
  5. interface utilisateur avec OpenGL
    Par demis20 dans le forum OpenGL
    Réponses: 6
    Dernier message: 03/10/2002, 12h27

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