見出し画像

イラストにおける乗算とは

 イラストにおいて一度はつまづく「乗算」というレイヤーのブレンドモード,今回はこれが何なのか解説とかなんかいろいろしたいです。

乗算ってそもそも何

 さわりなので知らなくてもいいことが書いてあります。せっかちさんは読み飛ばせよ〜。

 まず「乗算」という四則演算の用語がイラストに出てくる意味がわかんないですよね。
 我々が幼き頃から親しんでいる絵の具などは,混ぜるか薄めるかしかないので,乗算を選択して色が変わる現象を受け入れるのには時間がかかると思います。リアルの絵の具には乗算という概念はありません。

 じゃあ乗算とは何か,つまるところ実際に乗算です。何言ってるか分かりませんよね。
 コンピュータでは色に関するデータをRGB形式で使用します。1ピクセルごとにRGBを0~255の値で割り振り,その範囲の組み合わせで表現します。そのRGBの上に乗算レイヤーのRGBの数値を掛け合わせるのが「乗算」です。
 掛け算は一部を除き元の2つの数字より答えが大きくなります。これをRGBに適用すると色が濃く暗くなるんです。つまり影を塗るのに使えそうですよね。

 あとなんとなく統一感が出るのは,たとえばどんな数にも偶数を掛けると答えも偶数になるようなもので,掛けた値の性質や雰囲気が乗っかるんです。

なんかいろいろのやつ

乗算に使う色

 乗算の特性は何となくわかったけど影を塗るときはどんな色を使えばいいの? と思ったそこのお方,ぶっちゃけ答えはありません。色んな人のイラストを見て,「こういう影の色いいな〜」と思ったものから乗算に使っている色を抽出しましょう。あと現実の写真から抽出するのもいいですね。

 まぁ問題はその色が何なのか調べにくいってことなんですけど……。ということで今回はその色を割り出すコードを書きました。
 Python3で動作します。コピペして使って下さい。

base_color = []
print("固有色を入力")
R = int(input("R: "))
base_color.append(R)
G = int(input("G: "))
base_color.append(G)
B = int(input("B: "))
base_color.append(B)

shadow = []
print("\n影の色を入力")
Rs = int(input("R: "))
shadow.append(Rs)
Gs = int(input("G: "))
shadow.append(Gs)
Bs = int(input("B: "))
shadow.append(Bs)

#乗算レイヤーの色:mult
mult = []
for i in range(len(base_color)):
    mult_c = round((shadow[i]*255)/base_color[i],0)
    mult.append(mult_c)

print("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~")
print("\n影色は",mult)
print("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~")

sort_mult = sorted(mult)

#濃度を調べる
mult_min = sort_mult[0]
conce = (mult_min/255) * 100
conce_t = round(100 - conce,0)
#print(conce_t,"%")

#最高濃度データで置換
def replace_value(lst, old_value, new_value):
    for i, value in enumerate(lst):
        if value == old_value:
            lst[i] = new_value

#1st
tit = (255-mult_min)/(100-conce)
replace_value(mult,mult_min,0)

#2nd
mult_2 = sort_mult[1]
tit2 = (255-mult_2)/(100-conce)
color2 = mult_2 - tit2*conce
color_2 = round(color2,0)
replace_value(mult,sort_mult[1],color_2)

#3rd
mult_3 = sort_mult[2]
tit3 = (255-mult_3)/(100-conce)
color3 = mult_3 - tit3*conce
color_3 = round(color3,0)
replace_value(mult,sort_mult[2],color_3)

#print(mult)
print("\nもしくは\n",conce_t,"%\nの\n",mult,"\nです.")
print("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~")

 使い方に関して,コードを走らせると

固有色を入力
R:

のように出るので,まず固有色,乗算レイヤーの下の色を,RGBの順に各数字を書いてエンターしてください。
 その次に影の色,つまり乗算された結果の色を書いてください。
 例で上記の画像で示します。固有色は赤っぽい[237,84,84]で影の色は[75,35,27]ですな。

入力した様子

ここまで入力して確定すると結果が表示されます。

結果!

 影色は[81,106,82]だそうです。
 ここに関して注意! 使っているイラストソフトによって若干の数値ズレがあります。パッと見じゃ分からんので許してね。

 次に下の%とかについて,乗算を使う場合,大抵はある程度濃い色を使ってから,濃度を調節していることがほとんどです。
 ですので影色が一番濃い色の何%の薄さと近似するか示しています。

 便利でしょ!!!! 最近はPython3がスマホで使えたりするので活用してね。

 固有色とはイメージでいうと白い光が当たったときの色,蛍光灯とか白色LEDなんかが近いから見てみてね。
 現実の写真から得るもよし! 好きなイラストレーターさんの技を盗むもよし! 良いイラストライフを!


 ※どこかの値が"255"を超えると入力された数値に誤りがある場合があります。確認してください。

 ※個人での利用のみ許諾します。商用目的,改変,第三者への流布は禁止します。エラー,問題点,その他利用に関してTwitterのDMまで
 Twitter: @Akizome_K

町田の近くにあったビル,かっこよくない?

なにか追記あれば思いつき次第書き足すます。

この記事が気に入ったらサポートをしてみませんか?