Maxwell Renderでスキンシェーダの構築を考える
スキンシェーダについては、色々と調べてみたところ、どうもこれ!という設定方法が見当たらず、割と皆、それっぽく見える設定を工夫して構築している、という印象を受けました。
見た目ベースってやつですね。
Maxwell Renderの公式サイトギャラリーにもスキンシェーダに特化した作例もこれといって見当たらないし、マニュアルにもスキンシェーダの構築方法に関する記述も乏しいので少々残念です。
Maxwell RenderのSSSの使い方ですが、MXM Galleryから参考になりそうなマテリアルを拝見しても、どうも統一感がなく、SSSレイヤーをそんな風に使うのか、と思うような設定も結構たくさんあって、見れば見るほど、スキンシェーダの作り方がよく分からなくなってしまいました…
ので、ひとまず自分なりのMaxwell Renderによるスキンシェーダを構築しておこうかと思いました。
Arnold Rendererを参考にしてみる
構築するにあたって、まずはArnold Rendererのマニュアルを拝見。
何故Arnoldかというと、マニュアルが非常に分かりやすいのと、シェーダ設定がユーザーにとって比較的簡単に作られている、ような印象を受けたからです。ついでにスキンシェーダ専用のマニュアルまで用意してくれていますし。
Arnoldのマニュアルによると…
https://support.solidangle.com/display/mayatut/Guide+to+Rendering+Realistic+Skin
https://support.solidangle.com/display/AFMUG/Skin
SSSレイヤーを3層
・deep
・mid
・shallow
に分け、その上にスペキュラ層
・specular
・sheen
をのせる。
3層のSSSレイヤーについては、
deep = hypodermis(皮膚下の細胞層)
mid = dermis(皮膚下の血管、リンパ管、神経末端等のある層)
shallow = epidermis(皮膚の表面層)
ということになるだろう。
2層のスペキュラは表皮の皮脂成分をシミュレートする。
SSSレイヤーはそれぞれ
SSScolor or texture
weight
radius
の組み合わせであり、スペキュラは別に設定するようだ。
皮膚関連の論文も参考にしてみる
シェーダ構築のヒントになればと思い、いくつかを参考にしてみる。
Light Diffusion in Multi-Layered Translucent Materials
A Spectral BSSRDF for Shading Human Skin
他にもいくつか目を通す。
皮膚の構造上、SSSレイヤーを最低2層は用意した方が良さそうではあるものの、レンダラのアルゴリズムの違いで、このあたりの設定は変わってくると思われる。
Maxwell Materialに落とし込む
今回はArnoldにならい、3層のSSSレイヤーを使い、Maxwellへと落とし込んでみることにした。
deep, mid, shallowのSSSレイヤーをそれぞれOpacityを変え、Normalで重ねていく。SSSレイヤーをadditiveで重ねるとどうもおかしな結果になってしまった。
さらに2つのスペキュラレイヤーをadditiveで重ね、リップなど必要であればマスクテクスチャを活用し、スペキュラを更に重ねる。
ディスプレイスメントマップで皮膚の大きめな凹凸のディテールを追加。
微小な凹凸はノーマルマップで。
SSS層はやや弱め、スペキュラ層にやや強めに設定。
最初より良い感じの透明感、皮脂感が出てきてはいるが、まだ違う感じ。SSSはある程度サンプリングレベルが進まないとSSS特有の微妙な透明感が確認できないので、時間かかってしかたない…
Maxwell Renderだから、というのもあるけど。

test image
3D-Coatでテクスチャのディテールを再度調整してみる。