PxrMarschnerHair

PxrMarschnerHair

images/PxrMarschnerHair2.png

"Marschner Hairを使ったキャラクタテスト” © Disney/Pixar


PxrMarschnerHairは、Pixar Studioのヘアーシェーダです。このシェーダの機能は以下のとおり:

  • これは、完全にエネルギーを保存する物理的に妥当なBxdfです。
  • 2つのディフューズモデル:ZinkeとKajiyaを選択できます。
  • 完全に実装されたMarschnerスペキュラーローブ: 複数のスペキュラートランスポートパス(Marschner et al のヘアースキャッタリングモデルに基づいたR, TT, TRTのパス); グリント; 方位角粗度コントロールを使用した楕円形の断面に対する離心率。
  • Marschnerの実装は、ヘアーレンダリング精度と最も重要なヘアーレンダリング速度を最適化したAdaptive Importance Sampling(適応重要度サンプリング)を取り入れた、"データ駆動型"のライトスキャッタリングモデルを使用しています。

詳細については、Leonid Pekelis氏, Christophe Hery氏, Ryusuke Villemin氏, Junyi Ling氏によるPixar Technical Memo 15-02 "A Data-Driven Light Scattering Model for Hair"を参照してください。

ディフューズパラメータ

Diffuse Model

2つのディフューズモデル:ZinkeとKajiyaを選択できます。デフォルトでは、双方向スキャッタリング向けのZinkeディフューズモデルに設定されています。Importance サンプリング for Physically-Based Hair Fiber Models を参照してください。

  • 0: Zinke
  • 1: Kajiya
RIB: float diffuseModelType
デフォルト: 0

Diffuse Gain

diffuseColorに対する乗数。diffuseGaindiffuseColor の積は、羊毛状のファーでは大きく(最大1.0)、人間の髪の毛などでは小さくなります。

RIB: float diffuseGain
デフォルト: 1.0

Diffuse color

毛先のディフューズカラー。

RIB: color diffuseカラー
デフォルト: 0.18,0.18,0.18

Maya Furcから基本カラーと毛先のカラーを使用するには、PxrPrimvarノードを作成し、Variable NameをCsに、Variable Typeをcolorに設定します。次に、そのresultRGBをDiffuse Colorに接続します。

Pattern "PxrPrimvar" "Hairカラー" "string varname" ["Cs"] "string type" ["color"]
Bxdf "PxrMarschnerHair" "HairMaterial" "reference color diffuseカラー" ["Hairカラー:resultRGB"]

RISパターンからのカラー結果をDiffuse Colorに接続することもできます。ヘアーの長さに沿った毛根と毛先のカラーの場合、PxrPrimvarを作成し、Variable Nameをvに設定します。次に、この出力をPxrMixノードのMixに接続して、毛根と毛先のカラーをミックスします。

Pattern "PxrPrimvar" "HairV" "string varname" ["v"]
Pattern "PxrMix" "Hairカラー" "color color1" [1 0 0] "color color2" [0 1 0] "reference float mix" ["HairV:resultF"]
Bxdf "PxrMarschnerHair" "HairMaterial" "reference color diffuseカラー" ["Hairカラー:resultRGB"]

スペキュラーパラメータ

images/PxrMarschnerHairSpec.png

"Light Scattering from Human Hair Fibers” © Cornell University

Marschnerのスペキュラーモデルは、複数のスペキュラートランスポートパスを使用した3つのスペキュラーローブから構成されています:
  • Primary Specular:Rは"reflect"の意味で、ライトはヘアーのサーフェスにヒットして、反射します。これは、色のない強力な一次スペキュラーです。
  • Secondar Specular:TRT"transmit", "reflect", "transmit"の意味で、ライトはヘアーのサーフェスを透過した後、ヘアーのサーフェス内から反射し、ヘアーのサーフェスの前面へ透過します。これは、色の付いた二次スペキュラーです。
  • Transmit Specular:TT"transmit", "transmit"の意味で、ライトはヘアーのサーフェスを透過した後、ヘアーのサーフェスの背面から透過します。これは、バックライティングに反応する色の付いた透過です。

詳細は、Marschner et alを参照してください。

Specular カラー

Transmit Specular(TTローブ), Secondary Specular(TRTローブ), GLINTSローブに色を付けるスペキュラーカラー。このスペキュラーカラーは、Primary Specular Colorにより別途制御されるPrimary Specular(Rローブ)には色を付けません。

尚、TRTローブはファイバボリュームを2回通過するため、スペキュラーカラーの2乗により色が付けられます。

 

RIB: color specularカラー
デフォルト: 1.0,1.0,1.0

Primary Specular Gain

MarschnerスペキュラーのRローブに対するゲイン。これは、スペキュラーが極めて鮮明で、光沢があり、通常、色の付いていないクリアコートに似ています。このスペキュラーは、ボリューム減衰では色付けされない直接反射です。

RIB: float specularGainR
デフォルト: 0.33

Primary Specular color

Primary Specular(Rローブ)に色を付けるスペキュラーカラー。

RIB: color specularSheen
デフォルト: 1.0,1.0,1.0

Secondary Specular Gain

MarschnerスペキュラーのTRTローブに対するゲイン。これは、より粗い、色の付いたスペキュラーです。これは、ファイバーボリュームを2回通過します。

RIB: float specularGainTRT
デフォルト: 0.33

Transmit Specular Gain

MarschnerスペキュラーのTTローブに対するゲイン。これは、少しボリューム減衰のある透過タイプ(屈折)のスペキュラーです。これは、ファイバーボリュームを1回通過します。

RIB: float specularGainTT
デフォルト: 0.33

Glint Gain

グリントに対するゲイン。

RIB: float specularGainGLINTS
デフォルト: 0.0

Cone Angle

円錐角(シータ)で単位は度です。角度が大きくなると、ハイライトがよりソフトになり、より広がります。

RIB: float specularConeAngle
デフォルト: 8.0

Specular Offset

円錐オフセットで単位は度です。

RIB: float specularOffset
デフォルト: -3.0

Refraction Index

屈折率。

RIB: float specularIor
デフォルト: 1.55

Fresnel Mix

取り込むフレネル減衰量。

RIB: float specularMixFresnel
デフォルト: 1.0

Glint Width

TRT配分を滑らかにします。10から25までの値に設定してください。

RIB: float specularGlintWidth
デフォルト: 10.0

Eccentricity

楕円形の断面のアスペクト比。1から0.85までの間の値です。尚、離心率は、Nnにより決まります。ヘアージオメトリからのNnは、正しい向きである必要があります。

RIB: float specularEccentricity
デフォルト: 1.0

Other Parameters

Presence

ヘアーマスク。これは、プレゼンス(ヘアーが見えるか見えないか)を設定します。尚、RISのPresenceは、サーフェスにヒットするチャンスを意味します。これは、0または1に設定してください。デフォルトでは1に設定されています。これは、サーフェスに100%ヒットするチャンスがあるということで、サーフェスはレンダラーに対して存在しているという意味です。0の設定は、サーフェスはレンダラーに対して存在していないという意味です。0から1までの間の値に設定すると、好ましくないノイズが発生します。

RIB: float presence
デフォルト: 1.0

Opacity color

シャドウの不透明度カラー。

RIB: color opacitycolor
デフォルト: 1.0,1.0,1.0

Input AOV

PxrMatteIDのようなAOVパターンを接続して、AOV出力をトリガします。

RIB: int inputAOV
デフォルト: 0

PxrHairから

PxrHairをPxrMarschnerHairのパラメータにマッピングします:

PxrHair PxrMarschnerHair
diffuse
    diffuse model = Goldman
    diffuseRootcolor, diffuseTipcolor

specular
    highlightWidth
    highlightShift

transmit
    transmitRootcolor, transmitTipcolor
diffuse
    diffuse model = Kajiya or Zinke
    diffusecolor

specular
    specularConeAngle
    specularOffset

transmit
    specular color

RMSHairから

RMSHairをPxrMarschnerHairのパラメータにマッピングします:

RMSHair (RfM RSL shader) PxrMarschnerHair
diffuse
    diffuse model = Goldman
    DiffuseRootcolor, DiffuseTipcolor

specular
    Highlight Width (Beta)
    Highlight Offset (Alpha)

transmit
    Specular color
    Transmit color
diffuse
    diffuse model = Kajiya or Zinke
    diffuseColor

specular
    specularConeAngle
    specularOffset

transmit
    Primary Specular Color (specularSheen)
    Specular color (specularcolor)

Maya Fur/Hairから

Maya Fur/Hairは、Marschnerのスペキュラーモデルとは異なるKajiya-Kayスペキュラーモデルを使用します。Marschnerのスペキュラーモデルは、実際のヘアーのスペキュラー反応により近くなります。

Kajiya-Kayスペキュラーシェーダパラメータからの厳密なマッピングはありません。

まず、PxrMarschnerHairで、スペキュラー円錐角を調整します。これは、5度から10度までの値に設定してください。円錐角が広がると、スペキュラー強度およびスペキュラーの鮮明さからの反応とは逆に、ヘアーは、よりソフトに、より広がります。この場合は、値が大きくなると、ハイライトがより鮮明に、より小さくなります。