この記事では、肌の表現に挑戦してみましょう。 人間や動物の皮膚を表現するには、表面下散乱(Subsurface Scattering)の再現が欠かせません。
表面下散乱とは、光が表面を透過し、内部で散乱してから外に出て行く現象のことです。 皮膚はもちろん、果物の皮やロウ、大理石、牛乳などが表面下散乱する素材の代表です。
今回も、作成済みの実験用シーンを元に解説します。 画面上部のプルダウンメニューの"File" -> "Open"を実行して実験用シーンのファイルを開きます。
では、作業を進めましょう。 まず、スザンヌのマテリアル設定を変更し、光が表面下散乱するようにします。
上図のようにスザンヌを選択します。
続いて、マテリアルの表面下散乱関連の設定項目を調整します。
上図のようにPropertiesウィンドウのマテリアルパネル切替ボタン()を押します。
続いて、表面下散乱を有効にします。
上図のようにSubsurface Scatteringパネルの同名のチェックボックスをオンにし、SSS Presetから "Skin2" を選択します。
なお、SSS Presetは、Blenderにあらかじめ登録されている素材ごとのプリセットです。 今回選択した "Skin2" は肌を表現するためのものです。
上図のようにSSS Presetを変更したことで、Scattering ColorのカラーフィールドおよびRGB Radiusが変化します。
Scattering Colorは、表面下散乱してから外に出て行く光の色を設定する項目です。 太陽にかざした手であれば、やや赤みを帯びた肌色といった具合でしょうか。
RGB Radiusには、光のRGB成分それぞれの散乱の度合いを設定します。
では、この状態でレンダリングしてみましょう。 キーボードのF12キーを押してください。
上図のように残念ながら肌には見えません。 磨かれた石のようにも、樹脂のようにも、濁ったガラスのようにも見えます。
とりあえずの問題は、カクカクしていることが原因で有機物に見えないことです。 まずは、スムージングを有効にしてなめらかにしましょう。
では、スムージングを有効にしましょう。 3D Viewウィンドウ上でキーボードのTを押してツールシェルフを表示します。
上図のようにツールシェルフが表示されます。
では、スムージングを有効にします。
上図のようにツールシェルフの[Smooth]ボタン()を押します。
ツールシェルフは以降は使いませんので、キーボードのTを押して折りたたんでおきます。
上図のようにツールシェルフを閉じます。
では、再度レンダリングしましょう。 キーボードのF12キーを押します。
上図のようにスムージングでなめらかになりました。 ただし、まだ肌には見えません。 ゴムやロウのようです。
続いて、ランプ(ポイントライト)を追加します。 肌が表現されているかどうかを確認するために後ろから照らすことが目的です。 手を太陽にかざすような場面をイメージしています。
キーボードのSHIFT+Aを押します。
上図のように"Add"というタイトルのメニューが表示されますので、"Lamp" -> "Point"を実行します。
上図のようにランプが追加されます。
続いて、追加したランプがカメラから見てスザンヌの後方に位置するよう移動します。 まずは、X方向に -2 移動します。
キーボードのG(ジー)を押し、続けて、X -> -2 -> Enterキーを入力します。
上図のようにライトをX方向に -2 移動します。
さらに、Y方向に +1 移動します。
キーボードのG(ジー)を押し、続けて、Y -> 1 -> Enterキーを入力します。
上図のようにライトをY方向に +1 移動します。
では、この状態で再度レンダリングしましょう。 キーボードのF12キーを押してください。
上図のように後ろの光はあまり透過していません。 そのため、まだ肌ではなくロウやゴムに見えます。
ではここで、スザンヌの拡散反射シェーダと鏡面反射シェーダを変更しましょう。 現在は、Lambertシェーダと、CookTorrシェーダですが、これを肌に向いているシェーダや設定に変更しましょう。
上図のようにスザンヌを選択します。
続いて、シェーダおよびシェーダの設定を変更します。
上図のようにPropertiesウィンドウのマテリアルパネル切替ボタン()を押します。
続いて、拡散反射シェーダを変更します。
上図のように拡散反射シェーダに "Oren-Nayar" を選択し、Intensityを 0.8 に、Roughnessを 1.0 に設定します。
続いて、鏡面反射シェーダを変更します。
上図のように鏡面反射シェーダに "Phong" を選択し、Intensityを 0.2 に、Hardnessを 10 に設定します。
では、レンダリングしてみましょう。 キーボードのF12キーを押してください。
上図のようにまだ肌には見えません。
次に、大きさの指定を行います。 大きさの指定とは、この物体がどのぐらいの大きさなのかをBlenderに伝える作業です。
Blenderが表面下散乱を再現するのに、物体の大きさがわからなければ、どの深さまで光が届くのかを決められないためです。 小さな物体なら中心近くにまで光は届くでしょうし、大きな物体なら表面から少し深いところまでしか光は届かないでしょう。
大きさには、Blender上の物体のサイズを、現実のミリメートル単位の大きさで割ったものを指定します。
ここでは、スザンヌは5cm、つまり、50mmであるとしましょう。 そして、スザンヌのBlender上のサイズは 1.0 です。 つまり、1.0 割る 50 で 0.02 を指定すればいいことになります。
では、大きさをBlenderに伝えましょう。
上図のようにSubsurface ScatteringパネルのScaleに 0.02 を設定します。
では、レンダリングします。 キーボードのF12キーを押してください。
上図のように少しだけ肌に近づきました。 ただし、光を遮り過ぎているように見えます。
Scaleの値を倍の 0.04 に変更してみましょう。 つまり、スザンヌは 2.5cm の物体であると伝えたことになります。
上図のようにSubsurface ScatteringパネルのScaleに 0.04 に変更します。
では、これでレンダリングしてみましょう。 キーボードのF12キーを押します。
上図のようにさらに肌に近づきました。 ただし、後ろにあるランプからの光が届いてなさ過ぎです。 耳のような薄い部分は、もう少し光を透過させてもよさそうです。
ということで、後方からの光を、今よりも透過させるよう調整しましょう。
上図のようにSubsurface ScatteringパネルのScattering WeightのBackに 4.0 を設定します。
では、レンダリングしてみましょう。 キーボードのF12キーを押してください。
上図のように肌に見えてきました。
最後に、環境照明を有効にしてみましょう。 スザンヌの顔が暗いので、全体的に明るくするためです。
上図のようにPropertiesウィンドウのワールドパネル切替ボタン()を押します。
続いて、環境照明を有効にします。
上図のようにEnvironment Lightingパネルの同名のチェックボックスをオンにし、Energyを 0.2 に設定します。
では、レンダリングしてみましょう。 キーボードのF12キーを押してください。
上図のように明るくなりました。 肌を表現できているのではないでしょうか。
なお、今回の例では、テクスチャを貼っていないので赤ん坊の肌のようにツルツル感が満載ですが、テクスチャを貼ることでさらに肌っぽくなります。
マテリアル設定の表面下散乱を有効にすることで、肌を表現することができます。 Scattering Colorで色を指定し、Scaleで物体の現実の大きさを指定し、Backで背後の明かりの透過の度合いを調整します。