元記事:
Hair Strand Rendering
Hair Strand レンダリング
Static Particle システムは、三つの方法でレンダリングできます。
- Halo Material を使用する方法。これは小さなブラシで塗ったようになります。
- デュプリケータとして、Parent した Object のコピーを、それぞれの Static Particle のラインの節にコピー(複製)する方法。(Dupliverts)
- そして、今デフォルトとなった、スクリーンと並ぶ "Hair Strand(髪の毛の房)"を使用する方法。
補足:
Particle システムの新オプションもチェックして下さい。
Hair Strand は小さなポリゴンで、Static Particle のラインの方向に Extrude されていますが、その幅は正確には、ビューアングルに平行で、きっちり1ピクセルです。これはどの方法でも、常に Strand を確実にアンチエリアスエラーなくレンダリングするためです。
これは "Wire Render" オプション と少し似ていますが、大きな違いは、レンダリング用の Face Normal が、実際に有効なままであること、そして常に―カメラの方向と― Strand が平行なことです。
髪の毛の先端がシャープもしくは薄く見えるよう、Alpha Blend Texture(と、ZTransp オプション)を使用するのが、一番いい結果になります。この目的で、新しい "MapInput" チャネルが追加されています(名前は "Strand" です)。
Strand レンダリングのオプションは、Material パネルの最初のパネルのポップアップメニューにあります。
Use Tangent Shadingこのオプションは Particle Strand のデフォルトで、Face の Normal をレンダリングに使用せず、代わりに Strand の方向のベクトル(タンジェント)を使用します。この時、Blender でのシェーディングは、ディフューズとスペキュラの両方に異方性反射(Anisotropic Reflection)を使用するよう切り替わります。
ディフューズでは、現在偽の Normal を計算しており、Normal がライトを指して、最適化された髪の毛を表示しています。Ramp を含む、現在のすべての内蔵シェーダはこれにより動作しています。
スペキュラでは、現在 Normal の代わりにタンジェントベクトルを使用している、すべてのライン用に、内積で置き換えた新たな方程式を使用しています。
dot = vector * tangentvector
dot = sqrt(1.0 - dot*dot)
公式では(論文に従えば)、このトリックはディフューズにも使用できるらしいのですが、髪の毛が非常に平坦になってしまいます。現在、Ramp もしくは Oren-Nayer などで、簡単に平坦さをコントロールできます。
"Tangent Shading" オプションを OFF にしても、綺麗にレンダリングできますが、金属や木材のような、よりソリッドな髪の毛のようになります。
Tangent レンダリング、異方性(Anisotopic)スペキュラ使用
|
|
従来の Normal によるレンダリング
|
Strand の幅の設定Strand の始点と終点の幅も設定可能です。デフォルトでは、線形補間を行います。"Shape" スライダで、補間をコントロールできます。負の値で、Strand が細く(とがり)、正の値で太く(葉っぱのように)なります。
右の画像(上から下)は、Strand のサイズが1、10から0.5ピクセルへと線形に変形、よりとがった形への変形例です。
影Strand が スクリーンと並ぶフラットポリゴンであるため、影の計算はレイトレーシングでは、髪の影の小さく暗いドットが髪の毛の上に見えるのはもとより、まだ多くのエリアシングがあります。
Shadow Buffer オプションを使用することにより、もっといい結果が得られます。大きな Buffer を作成し、Sample の大きさと量を大きく設定して下さい。
ヘアボール、1ピクセルの Strand
|
|
ヘアボール、5 から 1ピクセルの太い Strand
|
元記事:
Hair Strand RenderingLast update: Nov 12 2005.
This section is maintained by Ton Roosendaal.