Human face rendering

Maxwell Renderでレンダリング。

human face, maxwell render. hair shader, skin shader

MaxwellでHair shader

ヘアシェーダは3つのレイヤーで作りました。

ベースカラーにスペキュラを2つ重ねています。

これもまた正解というのはなさそうで、髪の状態によっても変えないといけないですね。
異方性反射も入れてます。

rootとtipのカラーはグラデーションテクスチャをチャンネル0に設定すれば良いので簡単。部位によるカラーの違いはテクスチャをチャンネル1に設定します。

反射の加減がとても難しいです。HDRIをあれこれ変えながら、いろんなライティング下で確認するんですが、もうちょっとパパッと決めれるようにしないと。Maxwellは確認のレンダリングも結構コストかかるんで。

最終的にはHDR Light Studioを使い、スタジオライティングのような感じになりました。

しかしまだまだ研究の余地ありまくりのようです。

髪の質感ではスペキュラの調整にてこずっていますが、もう一つ、髪の毛って、一応は光を透過するので、Transmittanceを使うべきかも悩みますが、これを使うとなるとまたシェーダ設定がややこしくなってしまうので、今回はカットしています。

この点は、別のレンダラで試してみたいと思います。

参考資料

Aronld Render (Help)
https://support.solidangle.com/display/mayatut/Hair+Rendering

Maxwell Render (Help)
http://support.nextlimit.com/display/mxdocsv3/Hair+and+Fur

danroarty.com
http://www.danroarty.com/

THE FOUNDARY COMMUNITY
http://community.thefoundry.co.uk/discussion/topic.aspx?f=4&t=61780

Real-Time Hair Simulation and Rendering
http://hairrendering.wordpress.com/2010/06/26/marschner-shader-part-i/

HIROSHI MIYAMOTO BLOG
http://cieloblog.blog75.fc2.com/blog-entry-18.html

Skin shader

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だから、というのもあるけど。

20141101-1

test image

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