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 plusieurs objets


Sujet :

OpenGL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 52
    Points : 34
    Points
    34
    Par défaut Transparence plusieurs objets
    Bonjour,

    Depuis plusieurs jours je cherche un moyen d'afficher correctement la transparence sur des objets qui se chevauchent.

    J'ai regardé beaucoup d'expliquations sur le dept peeling et autre mais je suis un peu perdu...

    Peut-on faire du depth peeling sans fragments shaders?
    De plus je ne comprends pas en quoi le tri de face peut résoudre le problème de transparence, en effet deux face peuvent se couper et donc il n'y a pas de face qui est "devant l'autre"...

    Si vous avez un algorithme merci d'avance

    Merci

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Le tri de face peu aider, car tout les objet les plus près de la caméra seront affiché les derniers. Et tous les objets seront affiché dans l'ordre.

    Pour ce faire, il faut juste classer les faces, selon leurs distances avec la camera. et après y a plus qu'a affiché dans l'ordre ainsi trouvé.

    Sinon, question débile mais, as tu enlevé le GL_DEPTH lorsque tu as voulu faire la transparence ? ( j'ai toujours entendu qu'il fallait l'enlevé )
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 52
    Points : 34
    Points
    34
    Par défaut
    Merci de ta réponse mais le GL_DEPTH est bien désactivé.

    Je pense faire un tri de face dans un premier temps mais je pense que je résultat sera assez moyen. En effet si deux faces se coupent l'une va etre affichée avant l'autre mais une partie de cette derniere sera devant et l'autre derriere la seconde face.... donc problème

    Merci encore

  4. #4
    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
    Bonjour,

    Effectivement, le tri des faces n'est pas suffisant. C'est le même problème qui a amené l'utilisation d'un depth buffer pour les objets solides.

    L'équivalent serait le Depth peeling dont tu as parlé. Cependant c'est une technique gourmande. A ma connaissance, les pixels shaders sont nécessaires car il te faut deux bornes pour les tests et non pas une comme le FFP te l'autorise.
    Mieux vaut prévoir que patcher.

  5. #5
    Membre confirmé

    Inscrit en
    Août 2007
    Messages
    300
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 300
    Points : 527
    Points
    527
    Par défaut
    Citation Envoyé par romainromain Voir le message
    Peut-on faire du depth peeling sans fragments shaders?
    Pas que je sache. Cela présenterait peu d'intérêt. Pourquoi ne voudriez-vous pas utiliser les fragment shaders?
    De plus je ne comprends pas en quoi le tri de face peut résoudre le problème de transparence, en effet deux face peuvent se couper et donc il n'y a pas de face qui est "devant l'autre"...
    Effectivement, le tri de face ne fonctionne pas, bien que de nombreuses personnes le pensent. Par exemple dans cette vieille discussion certains posteurs faisaient déjà cette erreur.

    Si vous avez un algorithme merci d'avance
    Il y a une alternative en utilisant le sur-échantillonnage. Voir les liens que propose LeGreg dans la discussion citée.
    "Maybe C++0x will inspire people to write tutorials emphasizing simple use, rather than just papers showing off cleverness." - Bjarne Stroustrup
    "Modern C++11 is not your daddy’s C++" - Herb Sutter

  6. #6
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 52
    Points : 34
    Points
    34
    Par défaut
    merci beaucoup pour vos réponses.
    Finalement j'ai fait le tri de faces. Le résultat n'est pas parfait mais pour le moment cela suiffit.

Discussions similaires

  1. appeller plusieurs objets
    Par alex01pernot dans le forum Delphi
    Réponses: 2
    Dernier message: 08/10/2006, 12h42
  2. [C#] Plusieurs objets en Remoting
    Par davestar dans le forum Windows Forms
    Réponses: 2
    Dernier message: 24/07/2006, 15h04
  3. m3g : utilisation de plusieurs objets en même temps
    Par chabfive dans le forum Développement Mobile en Java
    Réponses: 1
    Dernier message: 23/06/2006, 14h00
  4. Requêtes : recherche de maxi sur plusieur Objet
    Par pertuis dans le forum Langage SQL
    Réponses: 6
    Dernier message: 08/03/2004, 15h28
  5. Comment mettre plusieurs objets ds un composant ?
    Par Fleury dans le forum Composants VCL
    Réponses: 7
    Dernier message: 24/05/2003, 17h34

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