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 :

problème avec les shadows volumes


Sujet :

OpenGL

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 70
    Par défaut problème avec les shadows volumes
    Salut à tous,

    J'ai implémenté l'algo de shadow volume que j'ai récupéré sur le site de nehe.

    Les ombres s'affiche où il faut, mais par contre, elles s'aditionnent à cause du blending mais il me faut le blending puisque je veux voir la texture de l'objet qui est sous l'ombre.

    Quelqu'un sait-il comment faire pour qu'il n'y est pas de blending entre les ombres.

    merci.

  2. #2
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    quand tu affiche les ombre, tu desactive l'ecriture dans le color buffer avec un petit

    glColorMask(GL_FALSE,GL_FALSE,GL_FALSE,GL_FALSE);
    et une fois l'affichage des ombres terminée tu reactive le tout avec un petit

    glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_TRUE);
    et voila normalement ca devrais marcher (ou alors j'ai pas compris le probleme )
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  3. #3
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Je pense que tu t'y prends mal, car il existe deux façons d'afficher le résultat des shadow volumes, et aucune n'a ce problème :

    1) Méthode facile mais pas réaliste : on affiche un quad couvrant l'écran, qui vient "foncer" les parties de la scène se trouvant dans une ombre (ie. là où le stencil ne vaut pas 0). Facile car il n'y a qu'un quad à afficher ; pas réaliste car tu affiches les ombres en ajoutant du noir, et toutes les zones d'ombre auront la même intensité.

    2) Méthode compliquée et qui bouffe un max de ressources : en multi-pass à la Doom3. Au lieu de noircir les zones d'ombre, tu vas partir d'une scène noire et éclaircir les zones éclairées par chaque lumière. Donc, une passe par lumière + quelques bidouilles pour finaliser le rendu.

    Donc, comment tu t'y prends pour afficher tes ombres ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 70
    Par défaut
    Pour afficher mais ombres, je dessin le volume d'ombre d'un objet et après, je dessin un quad qui recouvre tout l'écran.

    Je pense que mon problème vient du faite que je dessin un quad pour chaque objet, alors que je pense que ce serai mieux de faire un unique quad mais je n'y arrive pas.

  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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Effectivement un quad suffit, qu'est-ce qui te bloque exactement ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 70
    Par défaut
    Et bien, je ne sais pas quand dessiner le quad.

    Pour le moment je le dessine juste après avoir fait mes deux passes(incrémentation, décrémentation), pour un seul objet.

    J'arrive pas a faire les passes pour tout les objets en même temps à cause de la matrice d'inverssement utilisé pour modifier la position de la lumière en fonction de chaque objet.

    D'ailleur je ne comprend pas à quoi ça sert de ramener la position de la lumière dans le repère de l'objet.

    je ne sais pas si j'ai été clair.

  7. #7
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Ca fait bien longtemps que je n'ai plus fait ça, mais je pense que tu peux plutôt ramener chaque objet dans le repère de la lumière plutôt que l'inverse. Ainsi tu pourras rendre les volumes de ta scène en une seule fois.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 70
    Par défaut
    merci,
    je vais essayer

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 70
    Par défaut
    Salut,

    OK, j'arrive à afficher mes ombres en mode Zpass.

    J'aimerai le faire avec la méthode Zfail, mais je ne comprend pas bien la technique.

    merci de votre aide.

  10. #10
    Membre chevronné
    Avatar de bigquick
    Profil pro
    Inscrit en
    Août 2002
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 356
    Par défaut
    Tiens voilà un lien sur les shadow volumes, qui présente le Carmack's reverse. Il décrit plein d'optimisations et d'astuces (extrusion à l'infini, etc ...), et puis c'est bien illustré !
    http://www.gamedev.net/columns/hardc...lume/page2.asp

    C'est sur plusieurs pages, et la 4ème compare les avantages et inconvénients du Z-pass et du Z-fail :
    http://www.gamedev.net/columns/hardc...lume/page5.asp

    J'espère que ça va t'aider

  11. #11
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 125
    Par défaut
    Pour revenir au tot Nehe sur les ombres que j'avais parcouru une fois, j'avais justement pas bien compris ces deux passes de décrémentation/incrémentation...
    Si je me souviens il cache des faces en utilisant d'abord GL_CW puis GL_CCW mais je vois pas du tout comment ça récupère c qu'on veut...

    Il me manque surement une petite explication claire en français ..:s

  12. #12
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Citation Envoyé par Omfraax
    Il me manque surement une petite explication claire en français ..:s
    Faius toi un petit schéma du stencil buffer et des incrémentations / décrémentations, tu comprendra tout de suite pourquoi il ne reste des 1 que dans les zones d'ombres

  13. #13
    Membre éprouvé
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 125
    Par défaut
    Bon, faudra surtout que je reprenne ce que je sais sur GL_CW et GL_CCW à savoir pas grand chose....

    EDIT:
    Je crois que je comprends. 'Tout' réside dans le glDepthMask(GL_FALSE) qu'il écrit au début afin que la face 'arrière' soit dessinée quand même en mode CCW et qui va décrémenter le depth buffer pour ne laisser que la trace sur le mur.
    C'est ça ?

Discussions similaires

  1. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 12h06
  2. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04
  3. Problème avec les apostrophes
    Par misterbillyboy dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/07/2003, 16h39
  4. Problème avec les fichiers .JPG
    Par cprogil dans le forum Langage
    Réponses: 5
    Dernier message: 10/06/2003, 15h44
  5. []Problème avec les formulaires Outlook
    Par Invité dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59

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