【Blender】ドット調の処理に関する覚書 (Pixiv Fanbox)
Content
こんにちは、ほしです。
今回はBlenderを使っている人、もしくは絵を描いている人でこれからBlenderを使ってみたいという方向けの内容になります。
私が最近よく使っている、絵をドット調っぽくする処理について、勉強したことをまとめてみたいと思います。
使っているのは、
・Blender(Ver.2.9以降)
・処理をかけたい画像
の2点だけで、3Dに関する操作は行いません。
Blenderは以下のリンク先からDLできます。
https://www.blender.org/
また、こちらで完成したもの+αを支援者様向けに配布していますので、もしよければご利用ください。
fanbox post: creator/3748123/post/2549521
同じようなことはフォトショ等でも可能だと思うのですが、あくまでBlenderでもこういうことができるという一例として参考になれば幸いです…!
【前準備とノードについて】
Blenderを起動すると四角い箱がぽつんと置いてある画面が表示されると思いますが、まずは上部の欄にあるコンポジット(Compositing)を選択します。
すると平面なグリッドの画面に切り替わるので、上部にあるノードを使う(Use Nodes)にチェックを入れます。
この画面で作業を進めていきます。
次にノードに関してです。
ノードという単語、おそらく聞きなれない人のほうが多いかと思います。私もBlenderに触れてから初めて知りました。
簡単に言うとノードとは、画像の処理を行うブロックのようなものです。
様々な種類があり、Shift + Aで画面内に追加することができます。
上の例では2つのノードを作ってみました。
1.画像を読み込むノード (Input > Image)
2.画像を表示するノード (Output > Viewer)
この2つを線でつなげると、
「画像を読み込む」→「それを表示する」
というシンプルな結果になります。
ここで、間に一つ別のノードを加えてみます。
「明るさ・コントラストを調整する」ノードです。(Color > Bright/Contrast)
クリスタ等で色調整に同じような機能を使っている方も多いと思います。
数値を調整すると、
「画像を読み込む」→「明るさを上げ、コントラストを下げる」→「画像を表示する」
という流れになり、結果かなり白っぽくなった画像が出来上がります。
このように、ノードは左から右へ、つないだ順に画像処理が行われていきます。
これから行うことも、少し複雑に見えますが基本的にこの流れで画像を編集していきます。
今回やりたいことをまとめて、
・画像にドット調の処理をかけたい
・背景、キャラ別々に処理をかけたい
・処理の強さを細かく調整できるようにしたい
この3点を目標にノードの組み方を考えていきます。
【ノードを組んでいく】
ではこの透過情報つきのイラストでさっそくやっていきましょう。
このイラストを…
この状態にしてみます。
先に結果をお見せすると、このようにノードを組んでいます。
一言で説明しますと、
「画像を縮小し、モザイクをかけ、拡大して元のサイズに戻したあと、透明部分を抜く」
という流れです。
画像を拡大していただいてこの通りに組んでいただければ同じ結果が得られます。
※ノードをつなぐ線の上でShift + 右ドラッグをすると分岐点がつくれます(Ctrl + x で分岐点の削除)
では、個別にどのようなノードを使っているか、何をしているのか通し番号ごとに説明していきます。
①Imageノード(input > image)
最初の説明でも使用した、画像を読み込むためのノードです。
フォルダマークをクリックして、使用したい画像を選択します。
②Valueノード(input > Value)
数値を入力するためのノードです。
ここに入力した数値が1に近づくほどフィルターが強くかかる、というふうに作っていきたいと思います。
ちなみにこの例では0.9を入力してあります。
③Mathノード(Converter > Math)で引き算
計算を行うためのノードです。
ここでは減算(Subtract)を選択しています。
すると、1段目のValueから2段目のValueが引き算されます。
②では0.9を入力していたので、ここでは
1-0.9=0.1
という計算が行われます。
何故こんな工程を挟んでいるのかこの時点ではよくわからないと思いますが、後々必要になっていきます。
④Transformノード(Distort > Transform)で画像縮小
画像を上下左右にずらしたり回転させたり拡大縮小したりできるノードです。
Imageのところに①で読み込んだ画像を繋ぎ、Scaleのところに③で計算した0.1の数字をつないでいます。
すると、画像が0.1倍されます。めちゃくちゃ小さくなります。
何故こんなことを???という感じですが、これも後々必要になっていきます。
⑤Despeckleノード(Filter > Despeckle)
画像にモザイク処理のようなものをかけるノードです。今回の処理で絶対に必要なノードがこれになります。
ここに④で縮小した画像をつなぎます。
⑥Mathノード(Converter > Math)で割り算
③でも使ったMathノードをここでも使います。今度は除算(Divide)です。
③の計算結果を2段目につなぐことで、
1÷0.1=10
という計算が行われます。
⑦Transformノード(Distort > Transform)で画像を元のサイズに拡大
再びTransformノードを使いますが、今度は縮小ではなく拡大します。
⑥で行った計算結果をScaleに繋ぐことで、⑤でモザイク処理をかけた画像が10倍の大きさに拡大されます。
つまり最初のイラストは、
④で0.1倍に縮小され→⑤でモザイク処理をかけられ→⑦で10倍に拡大される
ということになり、元の大きさになりました。
②で何の数値を入れても画像が⑦で元の大きさに戻るということです。
ここで、拡大縮小を何故行っているかも説明します。
下の例を見てください。
上の画像は拡大縮小を全く行わずに⑤のDespeckleノードを通したもの。
下の画像は、0.1倍に縮小し、Despeckleノードを通し、10倍に拡大したものです。
同じ設定のモザイク処理でも、小さい画像にかけたほうが強く効果が出ています。
大きい石と小さい石、同じハンマーでたたけば小さい石のほうがより広い面積に圧力がかかる、というイメージでしょうか。
②で入力した値が1に近いほど縮小率も大きくなるため、モザイクの効果が強く出る、という感じです。
これが単なる1枚絵であれば作業はここで完了なのですが、今回は背景やキャラに別々に処理をかけることが目的なので、もうひと手間必要です。
実は⑦の時点では、もとの画像にあった透過情報がありません。
なので、背景と組み合わせられるように透明部分を加えます。
⑧Set Alphaノード(Converter > Set Alpha)で透明部分を加える
このノードは、Imageにつないだ色情報に、Alphaにつないだ透過情報を加えることができます。
では①のAlphaから直接つなげばいいかというと、それでは綺麗にできません。
①の透過部分にも、これまでと同じモザイク処理をかける必要があります。
④~⑦のノードをドラッグで選択し、コピー&ペーストで下にもってきます。
そこに、①のAlphaと③の値を同じようにつなぎます。
これで透明部分にもザクザクしたモザイク処理がかかったので、
これをSet AlphaノードのAlphaピンにつなぐと、きれいに透明部分を抜くことができます。
⑨Compositeノード(Output > Composite)で画像を出力
最後に、Compositeノードにつなぎ、Use Alphaにチェックをいれます。
ここで上部のRenderタブからRender Image(もしくはF12キー)を押下すると…
このようにドット処理のかかった画像が生成されました!
Imageタブから画像を保存して完了です。
②の値をいじるだけでこのようにすぐに結果を変えることができますし、別の画像を読み込めば自動的に同じ処理がされるので便利です。
【まとめ】
今回はわかりにくい内容になってしまったかもしれません…
ただ、3D抜きでもノードの組み合わせで色々な遊び方ができるというのが少しでも伝われば幸いです。
それでは、ここまで読んでいただきありがとうございました…!