En général, l'équation de mode de mélange "normal" ressemble à ceci: où d est la couleur de destination, SA est source alpha et S est une couleur source. P> Maintenant, cela fonctionne bien avec une destination entièrement opaque, mais j'aimerais savoir comment vous allez gérer cela avec une destination semi-transparente. P> Lorsque vous mélangez la source sur une destination entièrement transparente, le pixel source ( Un pixel étant couleur et alpha) sera inchangé et non mélangé comme dans l'équation avant, et si l'arrière-plan de destination est totalement opaque, l'équation ci-dessus doit être appliquée, mais je ne trouve pas de bonne façon de gérer les situations de la destination. alpha est entre 0 et 1. P> Par exemple, si vous mélangez un pixel blanc avec 50% alpha sur un fond transparent, la couleur ne doit pas avoir tendance à cette valeur de couleur transparente (qui est plus ou moins dans un état non défini), la couleur de destination doit être entièrement blanche et non 50% (après la multiplication alpha), ce que vous obtenez après l'application de ce qui précède équation (si D est de la même couleur que S, qui était quelque chose que j'ai pensé). p> p>
3 Réponses :
Cette équation est une simplification de l'équation de mélange général. Il suppose que la couleur de destination est opaque et goutte donc le terme alpha de la couleur de la destination.
Da = C1a + C2a * (1 - C1a)
Cela ne fonctionne pas. Par exemple, si la couleur de destination est noire et que la couleur source est blanche. La destination alpha est 0 et alpha source est de 0,5, puis vous vous retrouvez avec d = 1,0 * 0,5 + 0,0 * 0,0 * (1,0 - 0,5) qui est de 1,0 * 0,5 avec se multipliant la couleur source avec son alpha. Ce n'est pas ce que je veux, je voudrais que la couleur source soit intacte si l'alpha de destination est 0.
C'est ainsi que ce mode de mélange fonctionne. Vous voudrez un mode de mélange différent si vous voulez un comportement différent. Il y a des oodules d'autres modes de mélange. Il y a une bonne liste chez Illusions.hu/effectwiki/doku.php?id=List_of_blendings a>
De plus, la couleur résultante est prématuré par l'alpha. Vous pouvez revenir aux couleurs non éclairées en divisant les couleurs résultantes par l'alpha résultant. Ce qui, comme je pense plus loin à ce sujet, c'est ce que je pense que vous voulez.
Ho oui, moi stupides, vous avez raison, la solution est simplement de diviser par l'alpha résultant à la fin. Merci.
La plupart des formules de mélange sont utilisées sur des images statiques où la destination couleurs alpha n'est pas stockée. Si l'alpha est disponible, le dernier alpha va simplement être le Moyenne arithmétique de la source alpha et la destination alpha. p>
Vous pouvez calculer l'alpha moyen, puis simplement utiliser cela à la place de "SA" dans votre formule. P>
esprit nous disant ce que c'est? P>
Le calcul de l'alpha de destination n'est pas un problème, c'est la couleur qui pose un problème. Il doit mélanger une image semi-transparente sur une deuxième image semi-transparente et enregistrer le résultat dans un fichier PNG avec transparence. Dans Photoshop, je peux le faire en chargeant les deux images, fusionnant les deux couches et enregistrer sur un PNG.
Je ne vois toujours pas pourquoi la moyenne des canaux alpha ne produirait pas la bonne couleur?
Imaginez 0 alpha avec une superposition de 0,5, la valeur résultante serait de 0,25, quand elle devrait être 0,5
J'ai trouvé ce Réponse pour être utile, et Il semble fonctionner comme prévu lors de l'application de la même formule sur le canal alpha.
modifié ici pour montrer la version étendue: p> Ceci fonctionne bien pour le code rapide et sale , mais il y a aussi des approches plus rapides, comme indiqué dans la réponse ci-dessus, mais également adressé ici et ici . p> p>
Bien oui, mais réellement mélanger # 00000000 avec # FFFF0000 donne le résultat de # 41800000 au lieu du # FFFF0000 attendu.