RenderMan for Houdini その2

Houdini内でRenderManのヘアーシェーダとスキンシェーダのテストを行った。

RenderManのヘアーシェーダのパラメーター設定は
「フィジカルモード」と「アーティストモード」で切り替えて使用ができるが
今回はフィジカルモードを使用。

フィジカルモードではメラニン色素をベースにして髪の色が決定される。
今回はブロンドの設定のため、メラニンは低めに設定し
ディフューズ反射を上げた設定にしてみた。

スペキュラー計算はマルシュナーモデル(Marshener)というものがベースとなっており、
以下の三種類のスペキュラーが設定できるようになっている。

  1. 光が髪の表面に当たって反射する一次スペキュラ
  2. 光が髪の表面を透過した後、毛髪繊維のボリュームを通過して髪の背面で反射し、再び毛髪繊維のボリュームを追加した後髪の前面から反射する二次スペキュラ
  3. 光が髪の表面を透過した後、毛髪繊維のボリュームを通過してそのまま髪の背面へ反射する三次スペキュラ

スペキュラー強度はコーン角度で設定できるようになっているためわかりやすい。
また毛髪の断面形状までもシェーダで設定できるようになっている。

さらに、フィジカルモードで髪を染める染料を設定すると、単に色素を入れ替えるのではなく、ベースのメラニンに対して染料の色素がコーティングされたような自然な見え方になるようレンダリングしてくれる。以下のレンダリング画像はブロンドヘアーに青の染料を追加したもの。

また、アーティストモードで使用すれば非現実的なアニメ調のキャラクターの毛髪にも対応可能になり、あらゆる毛髪タイプに対応可能なシェーダになっている。

以下シェーダの接続。pxrHairColorをpxrMarshenerHairに接続。
pxrHairColorで毛髪一本ごとのディフューズとスペキュラー決定し、
pxrMarshenerHair(マルシュナーヘアー)でシェーディング計算を行う。

スキンシェーダは、サブスタンスペインターで肌のテクスチャーを作成し、
Pixar Shaderの表面下散乱(SSS)モデルを使用した。
表面下散乱の計算アルゴリズムは6種類から選ぶことが可能で
今回は表面下散乱の計算にはレイトレースは使用せず、
ディフュージョン(diffusion)方程式をシンプルな関数で近似する
Jensenのダイポールモデルを使用した。

表面下散乱の計算をフルレイトレースで行うアルゴリズムも用意されており、
MPCは「ブレードランナー2049」ではレイチェルの皮膚の表面下散乱計算に
フルレイトレースのアルゴリズムを使ったらしい。

毛髪のスタイリングにはVellumを使用。計算が安定しているため大量の毛髪でも
問題なくハンドリングできた。前方から一定時間だけ強風を吹かせて形を整えた。