CG系雑学その他その他

ブレンドモードの研究 <複雑系>

素材

背景                   重ね素材(真ん中はアルファなしの透明)
重ね結果
オーバーレイ ソフトライト ハードライト
リニアライト ビビットライト ピンライト
   
ハードミックス    

オーバーレイ

発色を良くしたいときなど、かなりお世話になるモード
背景のRGB値によって効果が異なる処理を行う
背景の値によるというのが重要

背景のRBGの値が0.5(128)以上なら、弱めのスクリーン
背景のRBGの値が0.5(128)より小さければ、弱めの乗算
重ね素材のRBGの値が0.5(128)なら、値は変わらない

ネットでオーバーレイを調べると、厳密には間違ってる曖昧な説明が多かった。
乗算とスクリーンの効果があるというのは間違いで、
実際は乗算やスクリーンとは少し違う処理のようだ。

<実際の式>
背景を 重ね素材をとする。

A≧0.5 → 1-2(1-A)(1-B)
A<0.5 → 2AB

B=0.5 → 変化なし

2ABは分りやすく、乗算(式=AB)で暗くなった値に2が掛けられるので、通常の乗算よりは明るくなる
1-2(1-A)(1-B)は単純にスクリーン(式=1-(1-A)(1-B))の値の2倍ではなく、1から引かれる(1-A)(1-B)という値が大きくなるので、通常のスクリーンより暗くなるはず。
なぜ2を掛けているかというと、通常の乗算とスクリーンでは2つの処理の境界のコントラストが強すぎる結果になるためだそうだ。

<処理例> 
RGB(100、128、100)   ■■■ 重ね素材
RGB( 50、200、128)   ■■■ 背景
======↓結果↓============
RGB( 39、200、101)   ■■■ 処理結果

面白いのは背景の値が128に近づくと、結果は重ね素材の値とほぼ変わらず、
スクリーン処理をしても乗算処理をしても結果はほぼ変わらないことだ。
詳しく計算はしてないけど、128を境に処理が切り替わっても、そこでコントラストが生まれない計算になっているんだと思う。凄い。

ソフトライト


効果の薄いオーバーレイのような効果がある
オーバーレイよりは発色が良くないので、次に説明するハードライトとオーバーレイの中間のような感じもする。
ここまで薄味の効果だと、本当に最後の微調整に使うくらいなのかも
重ねる素材が真っ黒や真っ白でも、白トビ、黒トビしない利点はある

実際の処理はソフトによって若干違うらしく、結構複雑
下記のハードライトと同様に重ね素材のRGB値によって処理方法が切り替わる

<実際の式>
背景を 重ね素材をとする。

B>0.5   →   2A(1-B)+√A(2Bー1)
B<0.5 → 2AB+A²(1-2B)

B=0.5 → 変化なし

<処理例> 
RGB( 50、200、128)   ■■■ 重ね素材
RGB(100、128、100)   ■■■ 背景
======↓結果↓============
RGB( 65、158、100)  ■■■ 処理結果

ハードライト


オーバーレイの逆バージョン
こちらも発色の調整などで割とよく使うモード
重ね素材のRGB値によって処理が変わる

重ね素材のRBGの値が0.5(128)以上なら、弱めのスクリーン
重ね素材のRBGの値が0.5(128)より小さければ、弱めの乗算
重ね素材のRBGの値が0.5(128)なら、値は変わらない

オーバーレイ状態の重ね素材と背景を、スワップ(重ね素材と背景を入れ替え)させ元背景をハードライトにするとスワップ前と全く同じ値になる
今回の鯉のぼりBGとグラデ素材の場合だと、処理結果が判定元のグラデ素材の影響をもろに受けていることがわかる

<実際の式>
背景を 重ね素材をとする。

B>0.5 → 1-2(1-A)(1-B)
B<0.5 → 2AB

B=0.5 → 変化なし

<処理例> 
RGB( 50、200、128)   ■■■ 重ね素材
RGB(100、128、100)   ■■■ 背景
======↓結果↓============
RGB( 39、200、100)  ■■■ 処理結果

処理例は上記のオーバーレイの式とスワップしたものだが、Bの値が1だけ違う結果になった。
完全に反対の処理ではなく128の時だけは参照値がAB違うので、スワップしても完全に同一の値にならない???

リニアライト


ハードライトの亜種みたいな処理がかかるモード
ハードライトの場合は、重ね素材のRBG値によって弱めのスクリーンと乗算がかかっていたが、
リニアライトは同様の判定で弱めの覆い焼きリニア(加算)と焼き込みリニアがかかる
スクリーンや乗算は色がトバないが、リニア系はすぐに真っ白、真っ黒になるので特に注意が必要。ハードライトやオーバーレイよりもコントラストを付けたいときに使えそう。

 

重ね素材のRBGの値が0.5(128)以上なら、弱めの覆い焼きリニア(加算)
重ね素材のRBGの値が0.5(128)より小さければ、弱めの焼き込みリニア
重ね素材のRBGの値が0.5(128)なら、値は変わらない

<実際の式>
背景を 重ね素材をとする。

B>0.5 → A+2(B-0.5)
B<0.5 → A+2B-1

B=0.5 → 変化なし

<処理例> 
RGB(100、129、128)   ■■■ 重ね素材
RGB(100、100、100)   ■■■ 背景
======↓結果↓============
RGB( 44、102、100)  ■■■ 処理結果

<処理例のGの値のみに注目する (RGB値の上限を255で計算)>

結果=A+2(B-0.5)
結果=100+2(129-128)
結果=100+2
結果=102

ビビットライト


かなりキツめのコントラストが入るモード
処理方法はハードライト、リニアライトの亜種で、毎度のように重ね素材のRGB値で処理が分岐し、今回は弱めの覆い焼きカラーと焼き込みカラーがかかる

 

重ね素材のRBGの値が0.5(128)以上なら、弱めの覆い焼きカラー
重ね素材のRBGの値が0.5(128)より小さければ、弱めの焼き込みカラー
重ね素材のRBGの値が0.5(128)なら、値は変わらない

<実際の式>
背景を 重ね素材をとする。

B>0.5 → A÷{1-2(B-0.5)}
B<0.5 → 1-{(1-A)÷(2B)}

B=0.5 → 変化なし

<処理例> 
RGB(100、140、128)   ■■■ 重ね素材
RGB(100、100、100)   ■■■ 背景
======↓結果↓============
RGB( 56、110、100)  ■■■ 処理結果

<処理例のGの値のみに注目する (RGB値の上限を1で計算)>

結果=A÷{1-2(B-0.5)}
結果=0.392÷{1-2(0.549-0.5)}
結果=0.392÷{1-0.098}
結果=0.392÷0.902
結果=0.392÷0.902
結果=0.4346 → 0.4346×255≒110

ピンライト

こちらもハードライト、リニアライト等の亜種
条件分岐方法は同じで、今回は処理が比較(明)と比較(暗)で分かれる。

重ね素材のRBGの値が0.5(128)以上なら、弱めの比較(明)
重ね素材のRBGの値が0.5(128)より小さければ、弱めの比較(暗)
重ね素材のRBGの値が0.5(128)なら、値は変わらない

<実際の式>
背景を 重ね素材をとする。

B>0.5 → AとBで数値が高い方が選ばれ、Bが選ばれた場合2(B-0.5)
B<0.5 → AとBで数値が低い方が選ばれ、Bが選ばれた場合2B

B=0.5 → 変化なし

RGB( 30、200、128)   ■■■ 重ね素材
RGB(100、100、100)   ■■■ 背景
======↓結果↓============
RGB( 60、145、100)  ■■■ 処理結果

<処理例 R>
30は128より小さいので比較(暗)の処理を行う
30と100では30の方が小さいので2Bの処理を行う
結果=2×30
結果=60

 

<処理例 G>
200は128より大きいので比較(明)の処理を行う
200と100では200の方が大きいので2(B-0.5)の処理を行う
結果=2(200-128)
結果≒145

ハードミックス


極端な値になるモード
RGBの各値の2つの値を足して、それが255より大きければ255
そうでなければ値が0になる。
つまりこのモードを使うと、赤青黄黒白シアンマゼンダイエローの8種類の色しか出ない

<処理例>
RGB(100、155、156)   ■■■ 合計210
RGB(100、100、100)   ■■■ 合計191
======↓結果↓============
RGB(  0、  0、255)  ■■■ 


gesomaをフォローする
CGすくいどる

コメント