江上宿六です。
まぁ、だいたい大詰めな所ですかね。
12.ノード作成
普段は過去に作ったものをアペンドして繋げるだけだが一から振り返る。
ノードを使う事によってマテリアルに様々な効果を乗せる事が出来るので
それによって表現力が高まるので覚えておくのも良いし、それに頼らず
自分でテクスチャを頑張っても良い。
- 初期状態
まずは適当にマテリアルを設定し、画面左上にあるエディタータイプを
選択する所からノードを扱えるシェーダーエディターを開く。
初期状態だとプリンシプルBSDFとやらのBSDFがマテリアル出力の
サーフェスに繋がっている状態だが、これはBlenderの環境を元にした
効果をつけているものだと思っておき深くは考えないことにする。
初期状態で立方体とかに陰影がついてるのはこれの影響。
- 色を選択して出力する
シェーダーエディターの追加メニューから入力->RGBを選択。
出てきたカラーサークルの右側のカラーから線を伸ばしてマテリアル出力の
サーフェスに繋げるとこのマテリアルが割り当てられたものは
その色に変化する。 この時Blenderの環境の影響は受けない。
- メッシュの状態をベースに色を変える
追加->入力->ジオメトリでジオメトリ、コンバーター->RGB分離でRGB分離、
更にカラー->RGBカーブと追加してそれぞれを繋げて状態を確認する。
左からR,G,Bと繋げた状態だが、これはそれぞれX,Y,Zと軸と関係している
というのがなんとなく分かるかもしれない。 これのBを利用して
上から光が当たっているという感じの表現を実現したいというわけだ。
一見既に実現しているようにも見えるが、出来てはいない。
必要となるのはベースの色と影の色。 上記のRGBカーブとそれらの色を
合わせるものを追加->カラー->RGBミックスで追加します。 そして
RGBカーブのカラーをミックスの係数に繋げ、ミックスのカラーを
マテリアル出力に繋げるとメッシュのZ軸をベースにした二色の
グラデーションのあるマテリアルが作られました。
このマテリアルを髪に設定してみました。 案外これで十分な気もする。
- グループ化
これを使いやすくするためにグループ化をします。 これらのノードの
マテリアル出力以外を全部選択し追加->グループ->グループ作成を選択。
するとなんか画面が変わってグループ入力とグループ出力というのが
表示されています。 後者はミックスのカラーと繋がっています。
ここでグループ入力とミックスの色1、色2と繋ぐことが出来ます。
そうしておくと外部からこのグループにデータを送る事が出来たりして
便利です。 エディター右上にある親ノードツリーを選択すると
グループの編集画面から抜けられて、グループの出力であるカラーが
マテリアル出力に繋がっているのが確認出来、状態は先ほどと同じです。
- ハイライトを入れる
服とかならともかく髪だと物足りないと思う理由の一つはハイライト。
これをなんとかする為に追加->コンバーター->カラーランプで
カラーランプを追加。 これをRGBカーブとミックスの間に入れて
使いたいといった所ですけど、現状のグラデーションも保持する為に
もう一つRGBカーブを作ってジオメトリのBを繋げてそこに
カラーランプを繋げます。
カラーランプの初期状態は左のような感じですが、+ボタンで右のように
カラーストップを増やす事が出来ます。 この辺の配置を変えることで
どの辺にハイライトが当てられるか調整出来ます。 位置の確認は
ここから出るカラーを出力に繋げばなんとなくわかります。
良い感じになったら先ほどのグラデーションのやつと合わせます。
RGBミックスを追加し、最初のグラデーションのやつを色1、色2は
ハイライトカラーを指定し、カラーランプは係数に繋げます。
だいぶごちゃごちゃになったがこんな感じ。 この辺は色んなやり方が
あると思うので手探りで好みの感じになるのを探すのも良いだろうと。
あと一つここで面白いものがあるが、この出力を最初にあった
プリンシプルBSDFに繋げて出力をすると、この状態で環境効果が
付与されて雰囲気が出たりするので、それも試す時は試そう。
- Emptyでチークを塗る
これ基本自分以外に需要がないやつだが、ノードを使って指定座標に
ペイントを施してやるというやつ。
まずチークをつけたい所にだいたいの位置で良いのでEmptyを配置する。
シェーダーエディターで追加->入力->テクスチャ座標でテクスチャ座標を
追加し、オブジェクトにそのEmptyを指定する。
次に追加->テクスチャ->グラデーションテクスチャとし、スタイルを
二重球状にしたらテクスチャ座標のオブジェクトをベクトルに繋げる。
ここにミックスを追加したらグラデーションテクスチャーのカラーを
これの係数に繋げると色1が肌の色、色2がチークの色になる。
これを出力すればEmptyの位置にチークが塗られたような感じになる。
もちろん両頬やる必要があるのでもう一つEmptyを反対側の頬に作る。
同様にテクスチャ座標、グラデーションテクスチャーを設定したら
追加->コンバーター->数式として追加のノードを作り、それぞれ
グラデーションテクスチャーのカラーを値に繋げ、追加の値を
ミックスの係数に繋ぎ出力すれば両方の頬にチークが表示されます。
そんな感じでノードを使って色々と表現力を高められたと思います。
本来ならここに肌をグラデーションさせたものと混ぜたりしてます。
まぁ、自分も良い感じで再確認できたので満足です。
続く。