ヘアーレンダリング:生理学的アプローチ

コンピュータグラフィックスで髪を正しくレンダリングする事は非常に複雑な問題です。髪は数千もの半透明で鱗状のシリンダーでできているため、非常に複雑な表面です。これにより光がどのように伝達され、反射し、反射するかを正確に判断することは困難を極めます。さらに困難な事に人間の毛髪は平均 100,000本以上あります。これらの髪は非常に細く、通常 1ピクセルよりも細くなります。

これまでヘアーシェーダーもリアルに質感を近似していましたが、欲しい髪の色や反射率を得るのは困難でした。 V-Ray Next では、論文“A Practical and Controllable Hair and Fur Model for Production Path Tracing“に基いてより生理学的アプローチでヘアーをレンダリングする新しいシェーダーを実装しました。

生物学的に言えば、髪の色はそのメラニンの量によって決定されます。そこで新しいマテリアルでは毛の色をカラー値で設定する代わりに、現実世界の様にシンプルな「メラニン色素量(melanin)」のスライダーを作成しました。同じくシンプルな「輝かしさ(shininess)」スライダーもあります。新しい設定は、現実の髪の毛の生理現象に基づいています。最初は慣れないかもしれませんが、髪の毛の生物学を少し理解すれば、新しいシェーダははるかに制御しやすくなり、結果をより予測しやすくなります。

あなたの髪の色はメラニンの量によって決まっています。あなたが持っているメラニン色素量が多いほど髪の色は暗くなります。金髪にはメラニン色素がほとんどなく、黒髪でもっとも多くなります。しかし実際には、髪の色を制御するメラニンには、黒褐色の真性メラニン(eumelanin)と橙赤色の亜メラニン(Pheomelanin)の2種類があります。これら2つのタイプのメラニンの比率によって、あなたの髪がどのように赤色になるかが決まります。より多くの亜メラニン(Pheomelanin)があれば、髪の色はより赤くなります。

新しいV-Rayのヘアーマテリアルでは、たった1つのスライダコントロールでヘアカラーを設定できます。値”0”は白髪、値“1.0”は黒髪です。他のすべての髪の色は0~1の間のどこかにあります。赤い髪を作るには、最初に目的の暗さにメラニン量をセットし、目的の赤みに達するまで亜メラニンの比率[Pheomelanin Ratio]スライダーを調整します。このPheomelaninスライダーは、真性メラニン(eumelanin)対 亜メラニン(Pheomelanin)の比率を設定し“0”は全て真性メラニン(eumelanin)であり、“1”は全て亜メラニン(Pheomelanin)である事を意味します。

メラニン色素の量による髪の毛の色の違い


Melanin 0.25


Melanin 0.45


Melanin 0.65


Melanin 0.85



亜メラニンの比率(Pheomelanin Ratio)による毛色の違い


Melanin 0.45, pheomelanin 0


Melanin 0.45, pheomelanin 0.65


Melanin 0.45, pheomelanin 0.95


Melanin 0.65, pheomelanin 0


Melanin 0.65, pheomelanin 0.65


Melanin 0.65, pheomelanin 0.95




もちろん誰もが自然なままの髪色をしている訳ではありません。人によっては様々な色が出るヘアカラーを使用しています。このようなヘアカラーを表現する為に、新しいヘアーマテリアルには「ヘアカラー(hair dye)」コントロールを追加しました。この機能を正しく使うにはヘアスタイリストの立場で考える必要があります。たとえば髪を青く染色するには、最初に漂白して髪の毛を脱色する必要があります。その後にカラーで染色する事ができます。新しいヘアーマテリアルでこれを行うには、メラニンレベルを0に近づけて、必要に応じてヘアカラーの色を追加するだけです。


melanin of 0.1 でヘアカラーを緑にセット


melanin of 0.1 でヘアカラーを赤にセット




正確な光沢を持つ髪をシミュレーションするには、毛の表面構造を知る必要があります。多くの人は毛の構造は単純な細い円柱と思うかもしれません。しかし顕微鏡で髪を見ると、実際には根元から鱗状になった構造(キューティクル)がある事がわかります。この形状のために髪の毛の反射は一定の方向性を持っています。

毛髪の光沢は2つの反射要素で構成されます。これまでのヘアマテリアルでは、V-Rayは1次および2次スペキュラ反射に対して別々のコントロールを使用していました。これにより個々の反射要素をより詳細に制御できるようになりましたが、適切なバランスを見つけることが非常に困難でした。新しいヘアマテリアルでは、2つのスペキュラ反射がより自然な方法でリンクされ、1つの光沢(glossiness)コントロールが両方の反射要素を一緒にコントロールします。もし1次反射の光沢度を高めたい場合は、ブースト(Boost)パラメーターを高くセットするだけです。

光沢度 (glossiness)による違い


Glossiness 0.35


Glossiness 0.50


Glossiness 0.75



同じ光沢度 (glossiness)で Boot による違い


Glossiness 0.45 with Boost 0.10


Glossiness 0.45 with Boost 0.50


Glossiness 0.45 with Boost 0.75



ハイライト自体は通常毛の長さに沿って鋭く発生します。しかし、ハイライトが個々のストランド(毛)を包み込むように柔らかく発生する事もあります。これは Softnessパラメータによって制御できます。Softnessが高いほど、ハイライトは個々の髪の毛を包み込むようになり、よりソフトなハイライトになります。柔らかさの値を低くすると髪がきれいに見えます。

異なるSoftness値による違い


Softness at 0.10


Softness at 0.50


Softness at 0.80



ヘアの顕微鏡画像を再度よく見てみると、毛先に行く程、鱗状のキューティクルが毛の芯から浮いて剥がれている事に気付くでしょう。鱗状のキューティクルが平坦な場合ハイライトはより線形に見えます。キューティクルが剥がれているとハイライトが強く反射し僅かにシフトします。このエフェクトはハイライトシフトパラメータで制御されます。値が高いほど、ハイライトが髪の毛の根元からずれるようになります。

異なるハイライトシフト値による違い


Highlight shift 0


Highlight shift 3


Highlight shift 8




すべての髪が同じでは無い

ご存知のように、毛髪の輝きと色は全ての毛で同じではありません。したがって異なる色を制御するためにテクスチャマップ等でディテールを追加する事ができます。また近くにある毛髪が色やハイライトに様々な変化を起こします。これは、ランダマイズ機能で表現できます。

ランダム化パラメータを使用すると、個々の髪の毛にバリエーションを導入することができ、メラニンの量、柔らかさ、光沢およびヘアカラーを変化させる事ができます。この機能によって髪の色と光沢がより自然になり、よりリアルな表現になります。

ランダムなメラニン色素による例


Melanin randomization 0.0


Melanin randomization 0.25


Melanin randomization 0.50



ランダムな光沢(Glossiness)による例


Glossiness randomized by 0


Glossiness randomized by 0.25


Glossiness randomized by 0.50




V-Ray GPU + IPRによるヘアーシェーディングの迅速なルックデベロップメント

V-Ray GPU を IPRのエンジンで使用し、V-Ray GPUと互換性のある新しいヘアシェーダと組み合わせれば、V-Ray Nextで超リアルなヘアーを高速にレンダリングできます。次の画像はIan Spriggs氏の“友人トニーの肖像画“です。オリジナルのシーンは古いヘアーシェーダーで作成されていました。V-Ray Nextの新しいヘアシェーダーに変換した後、V-Ray GPUのIPRで非常に短時間でヘアのルックを決める事ができました。

新しいヘアーシェーダーは V-Ray Next に含まれています。(2018年2月の時点で3dsmax版がベータテスト中です。)


ヘアーシェーディングの参考文献

[1] Chiang et al. “A Practical and Controllable Hair and Fur Model for Production Path Tracing” - 2016

    (https://benedikt-bitterli.me/pchfm/)

[2] Pharr “THE IMPLEMENTATION OF A HAIR SCATTERING MODEL” - 2016

    (http://www.pbrt.org/hair.pdf)

[3] d'Eon et al. “An Energy-Conserving Hair Reflectance Model” - 2011

    (http://www.eugenedeon.com/project/an-energy-conserving-hair-reflectance-model/)

[4] d'Eon et al. “An Energy-Conserving Hair Reflectance Model” post publication review - 2011

    (https://publons.com/publon/2803/)

[5] d'Eon et al. “Importance Sampling for Physically-Based Hair Fiber Models” - 2013

    (https://cg.ivd.kit.edu/publications/pubhanika/2013_hairbrief.pdf)

[6] d'Eon et al. “A Fiber Scattering Model with Non-Separable Lobes - Supplemental Report” - 2014

    (http://www.eugenedeon.com/project/a-fiber-scattering-model-with-non-separable-lobes/)

[7] Marschner et al. “Light Scattering from Human Hair Fibers” - 2003

    (http://www.graphics.stanford.edu/papers/hair/hair-sg03final.pdf)

[8] Zinke et al. “Light Scattering from Filaments” - 2007

    (http://cg.cs.uni-bonn.de/project-pages/hairmodeling/documents/BFSDF_preprint_with_copyright_notice.pdf)

[9] Zinke (thesis) “Photo-Realistic Rendering of Fiber Assemblies” - 2008

    (http://cg.cs.uni-bonn.de/en/publications/paper-details/Zinke2008a/)

[10] Jakob (thesis) “Light Transport On Path-Space Manifolds” - 2012

    (https://ecommons.cornell.edu/handle/1813/34189)

[11] Yan et al. “Physically-Accurate Fur Reflectance: Modeling, Measurement and Rendering” - 2015

    (http://people.eecs.berkeley.edu/~lingqi/publications/paper_fur.pdf)

[12] Yan et al. “An Efficient and Practical Near and Far Field Fur Reflectance Model” - 2017

    (http://people.eecs.berkeley.edu/~lingqi/publications/paper_fur2.pdf)