皆さま描画モードは内部の計算を理解して使っていますか?自分はなんとなくの感覚で使ってしまっています。
ここでは勉強も兼ねてRGB(赤,緑,青)やHSV(色,彩度,明度)が描画モードでどのように影響し合うのかをまとめたいと思います。
なお一度に全部お勉強するのは大変なので、適宜追加していく形にしようかと思います。
筆者の環境
CLIP STUDIO PAINT PRO (Version 1.10.6)
用語的なもの
用語 | 説明 |
RGB | R(赤),G(緑),B(青)の値のセット。それぞれ0~255で表現され、0が黒、255が白 |
HSV | H(色),S(彩度),V(明度)の値のセット。それぞれ0~100で表現される |
基本色 | ベースとなる色。下位レイヤーの色 |
合成色 | 基本色の上から塗る色。上位レイヤーに塗る色 |
結果色 | 基本色に合成色を塗った結果となる色 |
比較(暗)
HSV(色,彩度,明度)の明度を比較して暗い方(明度が低い方)が描画されます。
明度の値が同じ場合はレイヤーの順番がより上のものが描画されます。
比較(明)
HSV(色,彩度,明度)の明度を比較して明るい方(明度が高い方)が描画されます。
単純に比較(暗)の逆なので、画像例は割愛させていただきます。
乗算
色を暗くするときに使います。
RGB(赤,緑,青)のそれぞれの値を255で割った値、つまり0.0~1.0の値を掛けた値が結果となります。
結果色 = 基本色 * (合成色 / 255)
例えばRGB=(127,127,127)の場合は、RGB(127/255,127/255,127/255)≒(0.5,0.5,0.5)なので、結果のRGB値は約半分の値になります。
以下の例ではRGB=(127,127,127)にそれぞれRGB=(230,230,230), RGB=(127,127,127), RGB=(25,25,25)の色を描画しています。
RGB=(230,230,230)のときを計算してみましょう。
RGB=(127 * (230/255), 127 * (230/255), 127 * (230/255))=(114.5490, 114.5490, 114.5490)
となり結果の(115,115,115)とは一致しませんでしたが、近い値になることはわかりました。
RGB=(127,127,127), RGB=(25,25,25)の場合も同様に計算してみます。
以下RGB値は3つとも同じなので1つだけ計算するものとします。
RGB(127 * (127/255),...)≒(63.2509) RGB(127 * ( 25/255),...)≒(12.4509)
小数点第一位を四捨五入した結果になると思ったのですが、必ずしもそうはならないようですね…。
このあたりはペイントソフトがどのような処理を行っているかに依存するので詳細にはわからないですが、数値として1の差なので、気にしないことにしましょう。(気になるけど…)
スクリーン
こちらは乗算の逆で色を明るくするときに使います。
結果色 = 基本色 + (基本色 * (1 - 合成色/255))
RGBそれぞれの値に「元のRGBの値 * (1 - (描画する色のRGB/255))」を加算します。
なんだかややこしそうに見えますので、実際に計算してみましょう。
以下RGB値は3つとも同じなので1つだけ計算するものとします。
元のRGB値(127) * (1 - (描画する色のRGB(230)/255) ) = 元のRGB値(127) * (1 - 0.901...) ≒ 12.4 元のRGB値(127) * (1 - (描画する色のRGB(127)/255) ) = 元のRGB値(127) * (1 - 0.498..) ≒ 63.7 元のRGB値(127) * (1 - (描画する色のRGB(25)/255) ) = 元のRGB値(127) * (1 - 0.098...) ≒ 114.5
上記の値を元のRGB=(127,127,127)に加算したものが結果となります。
今回は綺麗に四捨五入して加算した結果とピッタリになっていますね。
覆い焼き(リニア) or 加算
色を明るくするときに使います。計算式はシンプルで単純な加算となります。
結果色 = 基本色 + 合成色
基本色64に対して230,128,25を合成色として描画しています。
1の誤差があるケースがありますが、基本的に加算した値そのままが結果となっていることがわかります。
減算
色を暗くするときに使います。加算の逆でこちらは合成色を減算します。
結果色 = 基本色 - 合成色
単純に加算の逆なので、画像例は割愛させていただきます。
オーバーレイ
明るい箇所はより明るく、暗い箇所はより暗くするときに使います。
色の操作ではなく、コントラストを操作する描画モードとなるそうです。
RGBの閾値は128で、この閾値以上か未満かで計算式が異なります。
乗算とスクリーンの組み合わせと思ったのですが、どうやら正確には違うようですね…。
基本色<128の場合: 結果色 = 基本色 * (合成色 / 255) * 2 基本色≧128の場合: 結果色 = 2 * (基本色 + (合成色 - 基本色 * 合成色 / 255)) - 255
画像例では、基本色64に対してそれぞれ230,64,25で描画しています。上述した式に当てはめると
64 * (230 /255) * 2 ≒ 115.4 64 * (64 /255) * 2 ≒ 32.12 64 * (25 /255) * 2 ≒ 12.54
また基本色192に対してもそれぞれ230,192,25で描画しています。
2 * (192 + (230 - 192 * 230 / 255)) - 255 ≒ 242.64 2 * (192 + (192- 192 * 192/ 255)) - 255 ≒ 223.87 2 * (192 + (25 - 192 * 25 / 255)) - 255 ≒ 141.35
数値としては実験結果と一致していますが、これは理解するのが難しそうです…感覚を養うのがいいかもしれません…。