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

Algorithmes et structures de données Discussion :

[Gfx] Alpha blending


Sujet :

Algorithmes et structures de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2004
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 20
    Points : 17
    Points
    17
    Par défaut [Résolu] [Gfx] Alpha blending
    Je souhaiterai savoir quelle est la "formule" ou tout du moins l'algo qui permet de calculer la couleur de rendu d'un pixel de transparent. Enfin comment marche l'alpha blending. J'ai trouvé la méthode qu'utilise directx: couleur finale = couleur source 1*( facteur de transparence couleur
    1) + couleur source 2 * (facteur de transparence couleur 2)
    mais je ne comprend pas bien comment l'exploiter. Doit on calculer le code rgb ? Pourquoi y a t'il un facteur de transparence pour la deuxieme couleur ? Que représente le facteur ? 1 = opaque 0 = totalement transparent ?
    J'ai déjà fait quelques essai mais sans résultats.
    Pouvez vous m'aider ? merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 417
    Points : 372
    Points
    372
    Par défaut
    J'ai fait ce genre de chose dans mon système Anubis. Ca a donné un bon résultat. Voici un extrait des commentaires de mes sources:

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
     
       Mixing two  pixels (r1,g1,b1,a1) and (r2,g2,b2,a2)  depends on the  transparency of the
       second pixel (which is  painted over the first one). The new  red value is a barycenter
       of the original red values, using a2:
     
                (255-a2)*r1 + a2*r2
           r = ---------------------
                       255
     
       Notice that if  a2 = 255, the  formula reduces to: r =  r2.  Similarly, if a2  = 0, the
       formula reduces  to: r  = r1.   The same  method is used  for green  and blue.  The new
       opacity is given by:
     
                    (255-a1)*(255-a2)                        (255-a1)*(255-a2)
           255-a = -------------------,     hence a = 255 - -------------------
                           255                                      255
     
       because (255-a1)/255 is the factor of transparency for the first pixel. For example, if
       a1 = 0, 100  percent of the light passes through the pixel. On  the contrary, when a1 =
       255, 0 percent of the light passes through the pixel. The above is equivalent to:
     
                          a1*a2
           a = a1 + a2 - -------
                           255
     
       For example, if one pixel is opaque (say  a1 = 255), the result is opaque. If one pixel
       is completely transparent (a1 = 0), the result has the opacity of the other one.
    Ici l'echelle de valeurs n'est pas l'intervalle [0,1] mais les valeurs discrètes de 0 à 255. L'adaptation doit être facile.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2004
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Merci bcp! Effectivement ce n'est pas bien compliquer de ramener l'échelle de transparence à 0,1 ou en %.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 417
    Points : 372
    Points
    372
    Par défaut
    D'autres propositions du même genre avaient déjà été faites dans ce forum, je viens d'en trouver une:

    http://www.developpez.net/forums/vie...5889&view=next

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2004
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    dsl j'avais pas trouvé. En fait je cherchais plutot à "alpha blending" "transparence". Du coup j'avais pas vu
    Merci

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

Discussions similaires

  1. [alpha-blending] Rendre transparente une couleur
    Par Ekinoks dans le forum OpenGL
    Réponses: 10
    Dernier message: 20/12/2005, 13h51
  2. [C#] custom control à partir d'une image / alpha blending
    Par Cyberwan dans le forum Windows Forms
    Réponses: 5
    Dernier message: 13/11/2005, 21h59
  3. Alpha blending
    Par Francky033 dans le forum DirectX
    Réponses: 4
    Dernier message: 31/05/2005, 00h23
  4. Alpha blending
    Par Freakazoid dans le forum DirectX
    Réponses: 2
    Dernier message: 23/05/2002, 19h37
  5. Alpha blending et Z-buffer directx 8
    Par Cesar4 dans le forum DirectX
    Réponses: 1
    Dernier message: 23/05/2002, 12h58

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