【Blender5.0】油絵風シェーダーを作ろう:3Dで作る絵画

blender
記事内に広告が含まれています。

Blenderで3Dオブジェクトを作って、見た目は絵画のようになる油絵風の描画シェーダーを作ってみます。

完璧に2D平面の絵画として見える描画シェーダーを作ろうと思うと、もっと複雑になってしまうので、今回は、油彩や絵具が乗った表現と、物体の影などの明度をプロシージャルに表現する、簡易版描画シェーダーです。

今回作る描画シェーダーの特徴は以下のものです。

  • ライトの方向でできるオブジェクトの明暗を画材に反映できる
  • 油彩の筆致の光沢を表現できる
  • パターンの種類、色相、明度、彩度、など自分でコントロールできる

自分で色やパターンをある程度コントロールできるので、最後に2D画像として見たときにいい感じに調整するのも簡単です。

ここで使っているボロノイテクスチャなどのノードを変えることでオリジナルな表現も簡単に作れます!

自分で描画シェーダーを作ってみたい場合や、イラストや画材マテリアル表現がやってみたい方の学習の入り口にいいのではないかと思いますので、よければ参考にしてみてください。

この記事は、Blenderで簡易な描画シェーダーの作り方を解説している中級者向けの記事です。

難易度 3.0

スポンサーリンク

Blenderにおける“描画シェーダー”とは?

描画シェーダーとは何かの説明になりますので、このセクションは飛ばしていただいても大丈夫です。

― 油絵風シェーディングへの導入として

描画シェーダー(Painting Shader / Painterly Shader)とは、3Dオブジェクトの表面を、まるで絵筆で描いたように見せるためのシェーダー表現の総称です。
一般的な物理ベース(PBR)のシェーダーとは異なり、
「現実の材質を正しく再現すること」よりも、「絵画の質感・タッチ・雰囲気を再現すること」を目的としているのが特徴です。

描画シェーダーは大きく次のような特徴を持ちます。

  • 筆致(ブラシストローク)を再現する
    • 油彩・水彩・パステルなど、アナログの絵画では筆や刷毛、スポンジなどによって独特のストローク模様が生まれます。描画シェーダーでは、これをノーマルやディスプレイスメントなどの手法で人工的に生成します。
  • 光影(ライト方向)による“塗料の凹凸”表現
    • 油絵やアクリル画では、絵具の厚みや盛り上がりによって光が反射し、独特の陰影や光沢が生まれます。シェーダーではこれをLight Vector(光方向)を利用したハイライト操作やノーマル、明暗をベースカラーに混ぜるなどの手法で表現します。
  • “均一でない色面”をつくる
    • アナログ絵画の色は均一ではなく、筆や画材によってムラがあります。描画シェーダーでは色の揺らぎを意図的に作ります。

今回のシェーダー

今回作ろうとしているシェーダーは、描画シェーダーの中でも以下の2つを組み合わせるタイプ:

  1. 油絵風のブラシテクスチャを生成する “質感ベース” の描画シェーダー
  2. ライト方向を筆致に反映して、陰影で色面を作る “ライト連動型” の描画シェーダー

これはオブジェクト自体のシェーダーで油彩らしさを出すタイプです。デメリットとしては、落ちた影を制御するのは重すぎたので無視しているところですね。一応自分で影を追加することもできますが、落ちた影はデフォルトでは表現できません。

他にもコンポジットなどで完全に平面画像にエフェクトをかける表現もあります。ほぼテクスチャやノーマルに自分で筆致や色を描いて表現する方法もあります。自分はめんどくさがりなので完全にプロシージャルにやれる方法を選びました。

描画シェーダーと言ってもかなり多様で、いろんな方法があります。

スポンサーリンク

今回の油絵風シェーダーの全体構造

シーン設定

レンダーエンジン…EEVEE

ライトはHDRI画像の環境光でもなんでもいいですが、とりあえず光源が必要なのでなにか照らすものを用意してください。

構造

このシェーダーは大きく次の3つのパートでできています。

  • ランダムカラー(筆致の色ムラ)
  • ベースカラー(ランダム彩度の追加+段階的な明暗で“筆致の影”を作る
  • コーティング光で油絵の絵具の光沢を付与

それぞれ単純な仕組みですが、 組み合わせると油絵特有の“盛り上がり・色ムラ・光の乗り方” を再現できます。

基本のノード

まずは以下のようにノードを組んでみてください。

この描画シェーダーの基本となるノードです。ここから様々な効果をつけるためにノードを拡張していきます。

上のベースカラー+ランダムカラー出力が、下の陰影がついたRGB出力が陰影の情報に使う出力になります。

ベースのVoronoi Textureノードについて

ベースのVoronoi TextureノードのVector元はTexture CoodinateノードのUVを座標としていますが、UVがないオブジェクトはobject座標などからも使えます。このボロノイテクスチャは筆致の形ランダムカラーのベースになります。

ポイント:DetailやRoughnessを少しあげて形を少し崩して複雑さを増した方が筆致ぽくなります。Smoothnessを上げるとBumpノードで凹凸をつけたときになだらかに凹凸がつき、絵具っぽくなります。

Mixノードについて

基本色(今回は青)とランダムカラーをミックスしています。ランダムカラーをColor Rampノードで白黒に分けてマスクを作りFactorに接続し、一部だけをランダムカラーにします。

Shader to RGBノードについて

下についてるPrincipled BSDFノードはライトからの陰影や光沢・凹凸の光などを取得するためにつけています。Shader to RGBノードを接続して、最終的に出力をRGBカラーとして出力します。

BSDFとRGB出力の違い

完成したノードの比較です。右画像の左側がPrincipled BSDFからの出力で、右側がShader to RGBからの出力です。BSDFからの出力はテクスチャが乗ったオブジェクトの陰影がそのまま出ています。対して、RGBの出力は加工できるので、陰影を段階的にして平面的な、色面として出力することができます。影部分が「影」ではなく、濃い色を塗ったような色として出力できるというわけです。

現段階ではBSDFからの出力をそのまま出しているのでベース色と凹凸の陰影が出ているだけですが、後から加工していきます。

では以下からパートごとに説明していきます。

スポンサーリンク

❶ランダムカラー(筆致の色ムラ)

全体構造の赤色の枠で囲ってある部分です。
油絵っぽく下地の色が見えてたり、印象派絵画みたいに多数の色を追加していて、そのランダムな色の調整をできるようにしてあります。

色を分離する

基本ノードで配置したVoronoi Textureノードの Color出力 を利用して、ランダムな色のパターンを作っています。それをSeparate ColorCombine Colorノードで色を分離し、モードをHSLに変えることで色相・彩度・明度をそれぞれ調整できるようにします。

色相・彩度・明度の調整

Separate Color(HSLモード)で色を分解し、

  • Hue(色相)Multiplyで色相の変化の範囲を調整できるようにする。(Moduloノードをつなげて色相が何週でもできるようにしてます。)
  • Saturation(彩度)Multiply などで加算/減算(Addで全体を上げるようにしてもいいと思う。)
  • Lightness(明度)
    • 「ランダムカラーの暗部」というフレーム内のノード…Shader to RGBからのライト・凹凸の陰影をカラーランプで形を調整して暗部のマスクをつくります。強さを調整するMultiplyノードを挟んで、元のLightnessからSubtractで引くことで影の部分のランダムカラーを暗くしています。
    • 後半のMultiply で全体の明度調整をします

という加工をしています。

結果

オブジェクト全体が均一な色ではなく、明暗に沿ったランダムカラーを追加することができます。出力結果を見ると、ランダムカラー部分だけ、オブジェクトにできた明暗に沿って明度が変わってることがわかると思います。

調整できる数値はあとからグループノードを作って調整パラメータとして外部に出すと使いやすくなります。

スポンサーリンク

❷ベースカラー(ランダム彩度の追加+段階的な明暗で“筆致の影”を作る)

緑色の枠の部分です。

ここでは自分が選んだ「基本色」(ベースカラー)に対して、明暗を影響させたり、色を調整するノードを組んでいます。

彩度

Voronoi Textureからのランダムカラーの彩度の値を使って、ベースカラーにも彩度のランダムさを追加しています。Multiply Addノードを使うと、Multiplyでランダム値の範囲を広げ、Addで数値全体の強度を調整できて便利です。

色相

色相はなるべく揃えておきたかったのでベースカラーそのままの彩度を使っています。(ランダムカラーやめてここで彩度を少しずらしながら入れても統一感があるシェーダーができるかもしれませんね。)

明度

Shader to RGBから出た陰影の形を筆致の形っぽくするために、Color Rampノードをはさんで加工します。このカラーランプの段階は各自好きなように調整してください。

影の形を加工することで二次元っぽくなります。

❶ランダムカラーと❷ベースカラーの出力は、基本のノードで配置しておいたMixノードで合成してください。

スポンサーリンク

❸コーティング光(油絵具のツヤ)

右下の黄色い部分です。

ここでは 油絵特有のツヤ・筆致の厚みの反射 を足しています。

光沢の明るさを追加する

まずShader to RGBノードにColor Rampをつなげて光沢の光の範囲をマスクします。

最後の部分にMixノードを追加し、Addモードで光沢を加算します。

絵具の盛り上がりを作る

光沢の形を良くするため、筆致の形や設定を調整していきます。

絵具の被膜表現

principled BSDFの数値を調整していきます。ラフネスは上げておき、スペキュラーのIORLevelを下げ、物質自体の光沢をなくします。そしてCoatのWeightを上げ、ラフネスを下げてつるつるにコーティングします。

こうすることで、油絵のような被膜っぽい表現になります。

ノーマルについて

凹凸の陰影をつけるためのノーマルですが、BSDFの基本のNormal入力と、コーティングのCoatパラメータ内のNormalどちらにも入力してください。

筆致境界の盛り上がり

今まではVoronoi TextureBumpノードにつないでいましたが、そこにNoise Textureをはさみます。

ボロノイテクスチャのカラーをVectorとして入力することで、カラーの境界部分を盛り上げることができ、絵具の筆致っぽさが増します。

筆致境界の盛り上がり比較

ノイズテクスチャをはさんだものとはさまなかった場合の比較。

ノイズテクスチャじゃないとダメってことはないかと思いますが、テクスチャノードをはさむことで筆致の境界付近が盛り上がって、絵具が乗ってるような見た目に近くなります。

スポンサーリンク

完成

完成したノードを、テクスチャノード以外をノードグループでまとめました。

これでオブジェクトごとに色やパターンの大きさ、色の色相、彩度、明度を変えて使いやすくなります。

  1. 油絵具の色ムラ(ランダム色や彩度)
  2. 筆跡の段階影(トーンの分離)
  3. 絵具の厚み光沢(コーティング)

これらが合わさることで、
3Dの素体に手描きの油絵を塗ったような二次元の外観を作ることができます。

今回の構成は PBR を完全に捨てず、

  • 「ベースはPBR」
  • 「見た目だけ絵画風にする」

というハイブリッド型なので、扱いやすさと表現の強さのバランスが良い点も強みです。

筆致を作るポイント:最初のUV座標を使うときに、そこにノイズテクスチャなどをMixノードで少し追加すると、よりリアルだったり細かい筆致を作ることも可能です。

自分は今回、ちょっとルドンみたいな?筆致が細かくていろんな色が紛れ込んでる油彩風をめざしてみました。ちょっと、ルドンガチ勢に怒られそうですが、並べてみました。左がルドンの絵画ですね(そこまで光沢なかったし、そこまで別の色が紛れてるわけでもなかったですね…。)全く関係ないけど、ルドンの描く花の絵って絶対どれかの花がうなだれてるイメージあります。

画像はWikimedia Commonsより

ここから無限にパターンのバリエーションを作ることができますので、みなさんの好きな画家や画風を表現してみてください。

スポンサーリンク

関連記事

筆致とかに使えそうなテクスチャの記事

ボロノイテクスチャ

ノイズテクスチャ

シェーダー関連の記事まとめ

コメント