MRが楽しい

MRやVRについて学習したことを書き残す

Blender標準テクニック[ローポリキャラクター制作で学ぶ3DCG]を試す その64(髪色マテリアルの調整)

本日は書籍「Blender標準テクニック[ローポリキャラクター制作で学ぶ3DCG]」の実施枠です。

今回は「高度なマテリアル作成」の続きです。
f:id:bluebirdofoz:20180314014232j:plain
次は髪色の調整を行います。

髪の毛のマテリアルもノードベースで作成します。
髪用マテリアルを選択し、ノードエディターウィンドウの「ノードを使用」にチェックを入れます。
f:id:bluebirdofoz:20180314014240j:plain

メニューの追加から 入力 -> ジオメトリ ノードを追加します。
f:id:bluebirdofoz:20180314014305j:plain

「マテリアル」ノードを削除して、追加した「ジオメトリ」ノードの「ノーマル」端子を「出力」ノードに接続します。
この「ノーマル」端子からはオブジェクトの法線情報が色として出力されています。
赤、緑、青がそれぞれ法線の横、縦、奥行方向に対応しています。
f:id:bluebirdofoz:20180314014315j:plain

今回は髪の毛のキューティクルを再現するため、この法線情報を利用します。
緑色が縦方向の法線を示しているので、このカラー情報から緑色の情報のみを取り出します。
メニューの追加から コンバーター -> RGB分離 ノードを追加します。
f:id:bluebirdofoz:20180314014325j:plain

追加した「RGB分離」ノードを「ジオメトリ」ノードの「ノーマル」端子に接続します。
そして「RGB分離」ノードの「G」端子を「出力」ノードに接続すると、法線の上下方向のみのグラデーションになります。
f:id:bluebirdofoz:20180314014335j:plain

しかし、このままだとグラデーションは中央までに見えるので、これを全体的なグラデーションへと広げます。
メニューの追加から カラー -> RGBカーブ ノードを追加します。
f:id:bluebirdofoz:20180314014344j:plain

「RGBカーブ」ノードを「RGB分離」ノードと「出力」ノードの間に接続します。
f:id:bluebirdofoz:20180314014354j:plain
「RGBカーブ」ノードは初期値では一定の傾きを持った直線で定義されており、入力値に対して出力値は等しくなります。
例えば、曲線の左下のポイントを最上部までドラッグして曲線を水平にすると、その色が少量でも入力されると最大値で出力されることを意味します。
これにより、全体的なコントラストを軽減しながら、わずかな細部を効果的に補強することができます。
RGB毎にも設定できるため、赤の曲線だけを設定し、少ない赤の入力ではまったく出力されないようにし、多くの赤の入力では出力を行うように曲線を設定することもできます。

今回は「RGBカーブ」ノードの左端の頂点位置を X=0, Y=0.5 の位置に変更します。
これでグラデーションが全体的にかかるようになります。
f:id:bluebirdofoz:20180314014447j:plain

このグラデーションを用いてキューティクルの位置が白く反射するようカラーの調整を行います。
メニューの追加から コンバーター -> カラーランプ ノードを追加します。
f:id:bluebirdofoz:20180314014500j:plain

「カラーランプ」ノードを「RGBカーブ」ノードと「出力」ノードの間に接続します。
f:id:bluebirdofoz:20180314014547j:plain

キューティクルの位置が白くなるようにカラーランプのカラーバーを調節します。
今回は書籍のサンプルデータに基づき、以下の5つの設定を行いました。
・位置:0.0
  R:0.0
  G:0.0
  B:0.0
・位置:0.302
  R:0.5
  G:0.5
  B:0.5
・位置:0.391
  R:1.0
  G:1.0
  B:1.0
・位置:0.466
  R:0.5
  G:0.5
  B:0.5
・位置:0.741
  R:0.0
  G:0.0
  B:0.0
頂点の追加は「+」ボタンで行えます。
f:id:bluebirdofoz:20180314014605j:plain
レンダーモードで髪を確認して、キューティクルの位置に白いラインができていればOKです。

このままでは白黒カラーなので、更に髪の色彩を追加します。
メニューの追加から カラー -> ミックスRGB ノードを追加します。
f:id:bluebirdofoz:20180314014716j:plain

「ミックスRGB」ノードを「カラーランプ」ノードと「出力」ノードの間に接続します。
このときの注意点として、今回は「カラーランプ」ノードの「カラー」端子を「ミックスRGB」ノードの「係数」端子に接続します。
デフォルトでは「色1」端子に接続されると思うので手動で接続を変更する必要があります。
f:id:bluebirdofoz:20180314014725j:plain

接続したら書籍のサンプルデータに基づき、色1、色2をそれぞれ以下の通り設定します。
・色1
  R:0.120
  G:0.156
  B:0.342
・色2
  R:1.0
  G:1.0
  B:1.0
f:id:bluebirdofoz:20180314014734j:plain

これで青みがかった銀髪になりました。
しかし、この状態だと法線の上下方向だけを基にしたグラデーションのみになっています。
ここに更に光源を基にした正しい陰影を追加します。
再び、メニューの追加から カラー -> ミックスRGB ノードを追加します。
f:id:bluebirdofoz:20180314014828j:plain

「ミックスRGB」ノードを「カラーランプ」ノードと先ほど作成した「ミックスRGB」ノードの間に接続します。
今回の「ミックスRGB」ノードは「色1」端子を接続します。
f:id:bluebirdofoz:20180314014841j:plain

そして、追加した「ミックスRGB」ノードのブレンドタイプを「乗算」に切り替えます。
f:id:bluebirdofoz:20180314014850j:plain

光源の陰影を追加するマテリアルを追加します。
メニューの追加から 入力 -> マテリアル ノードを追加します。
f:id:bluebirdofoz:20180314014858j:plain

追加したマテリアルを「Toon」マテリアルに変更します。
この「マテリアル」ノードの「カラー」の出力端子と、「乗算」ノードの「色2」端子に接続します。
「乗算」ノードの係数を 1.0 に設定して完了です。
f:id:bluebirdofoz:20180314014907j:plain
現在、光源は正面に配置しているため、後頭部の方が影になっていることが分かります。