Principled Hair (プリンシプル ヘアー) BSDF

../../../_images/render_shader-nodes_shader_hair-principled_node-melaninconcentration.png

メラニン濃度下での Principled Hair BSDF。

Hair (ヘアー) BSDF

Principled Hair (プリンシプル ヘアー) BSDF は、髪や毛皮をレンダリングするための物理ベースの使いやすいシェーダです。

ちなみに

リアルな髪の毛は、各毛束間で最小限の差異を持つ必要があります。シェーダーは、 Random ColorRandom Roughness の 2つの値を指定することでこれを可能にし、指定されたMelanin / Roughness値を範囲に再マッピングします。\(Color/Roughness \pm Randomization\%\).

入力

Color

毛束のRGBカラー。 Direct coloring (ダイレクトカラーリング)でのみ使用されます。

ヒント

選択した色は、次の式で吸収係数に変換されます( [CBTB16] のセクション4.2 )。

\[\sigma_{a} = \frac{\ln(Color)} {\left(5.969 - 0.215\beta_{N} + 2.532\beta_{N}^{2} - 10.73\beta_{N}^{3} + 5.574\beta_{N}^{4} + 0.245\beta_{N}^{5}\right)^{2}}\]

\(\beta_{N}\) はランダム化を適用した後のヘアの放射状粗さです。(指定されている場合)

../../../_images/render_shader-nodes_shader_hair-principled_demo-color.jpg

Direct coloring (ダイレクトカラーリング)を使用してヘアを色付けします。(上の数字はRGB値です。)

Melanin (メラニン)

色素の絶対量。範囲 \([0, 1]\)\([0\%, 100\%]\) に相当。

ヒント

これは、基になる指数関数へのリニアマッピングです。

\[melanin\_qty = -\ln(\max(1.0 - Melanin, 0.0001))\]
../../../_images/render_shader-nodes_shader_hair-principled_demo-melanin.jpg

Melanin (メラニン)

Melanin Redness (メラニンの赤成分)

フェオメラニンとユーメラニンの比率。範囲 \([0, 1]\)\([0\%, 100\%]\) に相当。

ヒント

比率の式は次の通りです。 \(eumelanin = Melanin*(1.0-MelaninRedness)\), \(pheomelanin = Melanin*MelaninRedness\)

結果の量は、(指定されている場合はランダム化した後)次の式( [EFHLA11] のセクション6.1)を介して吸収濃度に変換され、 \([0, 1]\) の範囲に調整されます。

\[\begin{split}\sigma_{a} = eumelanin * \left[\begin{matrix} 0.506 \\ 0.841 \\ 1.653 \\ \end{matrix}\right] + pheomelanin * \left[\begin{matrix} 0.343 \\ 0.733 \\ 1.924 \\ \end{matrix}\right]\end{split}\]
../../../_images/render_shader-nodes_shader_hair-principled_demo-melanin-redness.jpg

Melanin Redness (メラニンの赤成分)

Tint (チント)

メラニン色素をつけた後、髪を染めるのに使う色。ランダム化の対象ではありません。色を白に設定することで無効化します。

ヒント

これは上記のカラーマッピングで変換され、メラニン濃度の吸収係数に追加されます。

../../../_images/render_shader-nodes_shader_hair-principled_demo-tint.jpg

色合い、Melanin値の0.1および対応するRGB値を使用。

Absorption Coefficient (吸収係数)

吸収係数 \(\sigma\)

Roughness

髪の毛の軸方向において、輝きをどの程度滑らかにするかを指定します。値が小さすぎると、髪が滑らかで、金属に見えるようになり、輝きが Fireflies のように見えます。設定が高すぎると、ランバート風の外観になります。

../../../_images/render_shader-nodes_shader_hair-principled_demo-roughness.jpg

Roughness (粗さ)

Radial Roughness (天使の輪の粗さ)

髪の毛の接線方向において、輝きをどの程度滑らかにするかを指定します。値が低すぎると輝きが集中します。設定が高すぎると、毛束の幅全体に光が広がります。

ヒント

数学的には、このパラメーターはロジスティック分布のスケール係数 \(s\) にマッピングされます。( [CBTB16] のセクション 4.1)。

../../../_images/render_shader-nodes_shader_hair-principled_demo-radial-roughness.jpg

Radial Roughness (天使の輪の粗さ)

Coat (コート)

最初の光のバウンス(ディフューズ)についてのみ、粗さを所定の係数まで下げることにより、光沢のある毛皮のコートをシミュレートします。元の粗さの \([0\%, 100\%]\) の範囲の換算に相当します。

../../../_images/render_shader-nodes_shader_hair-principled_demo-coat.jpg

Coat (コート)

IOR

レイが方向を変える量を定義する屈折率( IOR )。1.0では、レイは透明なマテリアルのように直進します。値が大きいほど屈折が大きくなります。デフォルト値は \(1.55\)

Offset

毛幹に対する毛のキューティクルの鱗の角度を大きくすることにより、髪の輝きを傾けます。通常、人間の髪の毛の値は低い値です。

Random Color (ランダムカラー)

各毛束について、メラニン濃度を \(RandomFactor\) において変化させます。\([0, 1]\) の範囲は初期メラニン濃度の \([0\%, 100\%]\) に相当します。

ヒント

メラニン濃度は次のように \(randomFactor\) によって乗算されます。\(randomFactor = 1.0 + 2.0*(Random - 0.5) * RandomColor\).

../../../_images/render_shader-nodes_shader_hair-principled_demo-random-color.jpg

Random Color (ランダムカラー)

Random Roughness (ランダムな粗さ)

各毛束について、両方の粗さを \(RandomFactor\) において変化させます。\([0, 1]\) の範囲は初期粗さ値の \([0\%, 100\%]\) に相当します。

ヒント

適用される数式は、 Random Color と同じです。

../../../_images/render_shader-nodes_shader_hair-principled_demo-random-roughness.jpg

Random Roughness (ランダムな粗さ)

Random

乱数ソース。ここにノードが接続されていない場合、ノードは Hair Info ‣ Random から取得した値で自動的にインスタンス化されます。

Properties

Color Parametrization (色のパラメータ化)

シェーダーは、髪束に色を付ける3つの異なる方法、つまりパラメーター化を提供します。

Direct Coloring (ダイレクトカラーリング )

目的のRGBカラーを選択すると、シェーダーが必要な absorption coefficient (吸収係数:下記) を概算します。

Melanin Concentration (メラニン濃度)

このモードは、髪と毛皮における、ユーメラニン(茶色がかった黒髪に多く見られる)、フェオメラニン(赤髪)に見られる色素量と比率として色を定義します 。量は Melanin 入力で指定され、それらの間の比率は Melanin Redness で指定されます。濃度を上げると髪が暗くなります(以下は Melanin Redness\(1\) の場合です)

  • 白 (Melanin \(0\))

  • ブロンド (Melanin \(0.25\))

  • 赤 (Melanin \(0.5\))

  • 茶 (Melanin \(0.75\))

  • 黒 (Melanin \(1\))

さらに、 Tint 入力により、髪を希望の色に染めることができます。

Absorption Coefficient (吸収係数)

減衰係数 \(\sigma_{a}\) を指定します。 Beer-Lambert law によって適用されます。このモードは、主に文献からの係数を変換せずに使用したいテクニカルユーザーを対象としています。

出力

BSDF

標準シェーダー出力。

参考文献

このシェーダーは、ディズニー映画 "ズートピア" ® で使用された、Chiang et alによる論文の実装です。[CBTB16]

CBTB16(1,2,3)

Chiang, M. J. , Bitterli, B. , Tappan, C. and Burley, B. (2016), A Practical and Controllable Hair and Fur Model for Production Path Tracing. Computer Graphics Forum, 35: 275-283. doi:10.1111/cgf.12830

EFHLA11

d'Eon, E. , Francois, G. , Hill, M. , Letteri, J. and Aubry, J. (2011), An Energy‐Conserving Hair Reflectance Model. Computer Graphics Forum, 30: 1181-1187. doi:10.1111/j.1467-8659.2011.01976.x