PxrMarschnerHair
PxrMarschnerHair
"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に対する乗数。diffuseGainとdiffuseColor の積は、羊毛状のファーでは大きく(最大1.0)、人間の髪の毛などでは小さくなります。
RIB: float diffuseGainデフォルト: 1.0
Diffuse color
毛先のディフューズカラー。
RIB: color diffuseカラーデフォルト: 0.18,0.18,0.18Maya 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"]
スペキュラーパラメータ
"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度までの値に設定してください。円錐角が広がると、スペキュラー強度およびスペキュラーの鮮明さからの反応とは逆に、ヘアーは、よりソフトに、より広がります。この場合は、値が大きくなると、ハイライトがより鮮明に、より小さくなります。
