11

アルファ 1 は完全に不透明を意味し、0 は完全に透明を意味すると仮定しましょう。透明度が 50% (アルファ = 0.5) の 2 つの黒い画像があるとします。

それらを重ねると、結果の透明度は 0.75 になりますよね?

アルファが 0.25 の場合、結果は約 0.5 になりますよね?

アルファが 0.9 の場合、結果は約 0.97 になりますよね?

どうすればこれらの数字にたどり着くことができますか?

言い換えれば、他の 2 つのアルファ値から結果のアルファ値を取得する関数を探しています。

float alpha = f(float alphaBelow, float alphaAbove)
{
     //TODO implement
}
4

3 に答える 3

8

この答えは数学的にはジェイソンの答えと同じですが、参考資料にあるように、これは実際の式です。

float blend(float alphaBelow, float alphaAbove) 
{ 
    return alphaBelow + (1.0 - alphaBelow) * alphaAbove; 
} 
于 2010-09-07T18:20:58.690 に答える
7
float blend(float alphaBelow, float alphaAbove)
{
    return alphaBelow + alphaAbove - alphaBelow * alphaAbove;
}

この関数は、両方のパラメーターが 0..1 であることを前提としています。ここで、0 は完全に透明で、1 は完全に不透明です。

于 2010-09-07T12:53:36.237 に答える
4

Photoshopは次の計算を行います。

float blend(float alphaBelow, float alphaAbove)
{
    return min(1,alphaBelow+(1-alphaBelow)*alphaAbove);
}
于 2010-09-07T18:12:45.170 に答える