クラス

Shader

出力

RGB

概要


toon シェーダは、contour_filter と組み合わせて提供される、フォト リアリスティックではないレンダリング(NPR)ソリューションの一部です。

toon シェーダを使用するときには、現在いくつかの制限があります。次のとおりです。  

  • ボリューム、モーション ブラー、DOF、VR カメラは現在のところ、toon シェーダとは併用できません。
  • toon エッジは、ピクセルの強度が 1.0 より大きくなるとギザギザになる場合があります(たとえば、バックグラウンド シェーダに skydome を使用し、カメラ可視性を間違って使用した場合など)。これはカメラ(AA)サンプルのクランピングによって解決できます。


以下の図とテキストは、toon シェーダを構成しているシェーディング コンポーネントについて説明しています。 base_tonemap の外観(ランプを使用)は、skydome ライト(ソフト グラデーション)を使用した場合には、たとえばディレクショナル ライト(ハード グラデーション)の外観と比較して、かなり異なっていることに注意してください。 下のイメージの上にカーソルを置くと、base_tonemap ランプのライティングの効果を確認できます。

Skydome ライト。 イメージの上にカーソルを合わせると、ディレクショナル ライトの場合を確認できます。

1. エッジ(Contour Filter が必要)

toon シェーダは、line_color および width_control をサポートします。 これら両方は、線が入り組んでしまうことを防いだり、線のストローク スタイルを変更するのに役立ちます。 ID、マスク カラー、テクスチャ UV の不連続性を使用して、エッジが検出されます。

トゥーンのエッジを表示するには、filter_type (サンプリング設定)を contour に変更する必要があります contour_filter_width (サンプリング設定)値を増やすと、レンダリング時間も増えることに注意してください。

2. Stylized Highlight

ハイライトを作成するために使用できる任意のテクスチャ。 ライトは、スタイライズド ハイライト用に指定する必要があります。

stylized_highlight では smooth_tangent が有効なサブディビジョンが必要です。そうでないと、アーティファクトが表示される可能性があります。

3. 鏡面反射光/ベース トーン マッピング

toon シェーダは、base および specular の両方のランプ ノードによるセル シェーディングを使用します。ランプ シェーダを tonemap アトリビュートに接続することを推奨しますが、どのシェーダでも接続できます。

4. リム ライティング

リム ライティング効果を作成するには、ここにランプを接続します。 ライトを指定して、リム ライティング効果を作成できます。


Toon シェーダの可視性

の両方のランプ ノードによりセル シェーディングを使用します。toon シェーダは鏡面反射(最大 3 バウンス)、透過に対して表示され、ディスプレイスメントとも連携します(それぞれ geometric_normal、angle_threshold: 3 を使用します)

 
ピクセル アート スタイル

ピクセル アート スタイルは、負のカメラ(AA)サンプル数と Toon シェーダを使用して実装できます。

base および specular_tonemap を指定した Toon (ディレクショナル ライト)

ハッチ

クロス ハッチング スケッチ スタイルを実現するには、UberNoise.osltoon.mask_color に接続します。 

UberNoise.osl -> toon.mask_color


mask_color

エッジは、マスクのカラーが隣接するピクセルと異なるときに検出されます。 mask_color には、テクスチャが接続されていることが前提となります。これにより、色の違いを検出して任意のシェイプを描画できるようになります。このパラメータを使用すると、任意の場所に線を引くことができます(フィルタにより、マスクの色が変わるところに線が引かれます)。

mask_color にさまざまなシェーダを接続すると、様々なスタイルが得られます。

Utility シェーダの Shade Modesmask_color に接続すると、edge にさらにディテールを追加することができます。

Utility shader -> mask_color


edge_color

トゥーンのエッジの色です。 線のスタイルはここで、テクスチャを使用してコントロールできます。

edge_tonemap

ランプ ノードをここに接続すると、Edge ColorBase のシェーディング結果に基づいて変更されます。

直接拡散反射光成分は UV にマップされます。 次の例では、球の背面(最も暗い直接拡散反射光となる)はで、ディレクショナル ライトによって直接照らされる球体の部分はです。 その後、露出が増えるにつれて黄色になります。

この例では、edge_color (黄色)は青色ランプ カラー(edge_tonemap に接続されている)により乗算され、緑になります。

edge_opacity
エッジの透明度をコントロールします。


  
edge_width_scale

contour の最大の太さは、contour filterwidth パラメータで決定されます。 その値にこのパラメータを乗算した結果が実際の太さになります。 線の太さとテクスチャを組み合わせることにより、線のスタイルをコントロールすることができます。

エッジの edge_width_scale に 1 よりも大きな値を指定するには、contour filter width の値を大きくする必要があります。ただし、レンダリングの時間が長くなります。

facing_ratio シェーダを width_scale に接続すると、中央部の edge が煩雑になるのを防ぐことができます。  

width_scale を使用すると、カメラからの距離に応じて edge をコントロールできます。

1 未満の width_scale 値を使用すると、アニメーションがちらつく場合があります。 lock_sampling_pattern (サンプリングのレンダリング設定)を有効にすると、この問題は解決されるはずです。

silhouette_color


シルエット エッジの色。 線のスタイルはここで、テクスチャを使用してコントロールできます。

 


silhouette_tonemap


ランプ ノードをここに接続すると、silhouette_colorbase のシェーディング結果に基づいて変更されます。

 


silhouette_opacity


シルエットの透明度をコントロールします。

 


silhouette_width_scale


シルエットの最大の太さは、contour filterwidth パラメータで決定されます。 その値にこのパラメータを乗算した結果が実際の太さになります。 線の太さとテクスチャを組み合わせることにより、線のスタイルをコントロールすることができます。

Toon シェーダは、常に内側のエッジ幅よりも幅広くシルエットの幅を指定します。

silhouette_width_scale を 1 より大きくするには、contour filter width を増やす必要があります。 ただし、レンダリングの時間が長くなります。

 


priority

edge のソート優先順位を変更します。

0 (すべてのオブジェクト)。

赤い球 1。

(イメージの上にカーソルを合わせると、赤い球が 0、緑の球が 1 の場合を確認できます)。

青い面 1 (どちらの球も 0)。

enable_silhouette
オブジェクト/シェーダの ID の違いによって検出されたエッジ線は、シルエットと呼ばれます。 このオプションが有効である場合、シルエット線は、silhouette_colorsilhouette_width_scalesilhouette_opacity、および silhouette_tonemap を使用して描画されます。これが無効の場合、silhouette 線は内側のエッジ線の設定を継承します。つまり、edge_color、edge_width_scale、edge_opacity、および edge_tonemapを使用して描画されます。

有効。イメージの上にカーソルを合わせると、無効(既定)の場合を確認できます。


シルエットの効果も、以下の屋内シーンでは、柱や階段(1 つずつに分かれたオブジェクト)のエッジ線ではっきりと分かります(イメージの上にカーソルを合わせて確認)。

無効(既定)。 イメージの上にカーソルを合わせると、有効の場合を確認できます。

ignore_throughput

既定では、輪郭のカラーはレイのスループットの影響を受けます。 反射/屈折オブジェクトに特定のカラーが必要な場合は、これを有効にして ray_switch シェーダを使用します。

enable

オフにすると、エッジ検出が無効になります(既定では有効です)。 

  • toon_edge を表示するには filter_type (サンプリング設定)を輪郭に変更する必要があります
  • contour_filter_width (サンプリング設定)値を増やすと、レンダリング時間も増えます。
id_difference

これを有効にすると、隣接するピクセルの UV の違いがエッジ検出に使用されます。



有効(既定)。 イメージの上にカーソルを合わせると、無効の場合を確認できます。

カーブ、ポイント、およびシェイプ ID
ID Difference は、カーブ、ポイント、およびシェイプにエッジを描画します。 ポイントの場合、各ポイントで ID が異なります。球体は、同じ toon シェーダを使用する球体状のパーティクルで覆われます。Utility シェーダで Color = Uniform ID (Toon シェーダによって使用される ID)を指定すると、Emission_rolor を設定することができます。 各球は異なる ID を持つポイントであるため、パーティクルにはエッジがあります。 大きな球はシェイプであるため、Toon シェーダは名前を ID として使用します(そうでない場合、すべてのプリミティブ、たとえばポリゴンがエッジを持つことになります)。 カーブの場合、すべてのカーブには異なる ID があるため、ID Difference を有効または無効にすると以下のイメージのようになります。

shader_difference


隣接するサンプルのシェーダの違いが検出されます。 これはたとえば、複数のシェーダが単一のポリメッシュに割り当てられている場合に役立ちます。

angle_threshold には、十分小さな値を設定してください。そうしないと差異に気付かないことがあります。




uv_threshold


これを有効にすると、UV とそれに隣接するピクセルとの差異を使用してエッジが検出されます。



angle_threshold

180 よりも小さな値を設定すると、隣接するピクセルの角度の差異を使用してエッジが検出されます。


Angle_thresholdを 180 から 10 に徐々に変化させたときのキーフレーム

normal_type

エッジの検出に使用される法線です。 Shading NormalSmoothed Normal、および Geometric Normal から選択します。


スムージングされた法線。 イメージの上にカーソルを合わせると、ジオメトリ法線の場合を確認できます。

base

ベース カラーのウェイトです。

base_color

base_color は、白色の光源で直接照らされたとき(強度 100%)のサーフェスの明るさを設定します。 サーフェスの下でライトが散乱するときに吸収されない、RGB スペクトルの各コンポーネントのパーセンテージを定義します。 金属のベース カラーは通常、黒または非常に濃い色になりますが、さびた金属には何らかのベース カラーが必要です。 通常、base_color マップが必要になります。

Diffuse file texture -> base_color

base_tonemap

ランプ ノードをここに接続し、セル画のような見た目を作成します(トーン マップと見なされます)。


ディレクショナル ライト(イメージの上にカーソルを合わせると、Skydome ライトの場合を確認できます)


base_tonemap の外観(ランプを使用)は、ディレクショナル ライト(ハード グラデーション、以下の中央のイメージ)を使用した場合には、たとえば skydome ライト(ソフト グラデーション、次の右側のイメージ)の外観と比較して、かなり異なっていることに注意してください。

光源の露出を調整すると、base_tonemap に影響が及びます。

base_tonemap は、base_color に対して乗数の効果を与えます。base_tonemap の直接拡散反射光は UV にマップされ、それからランプが評価されます。

base_color または base_tonemap にさまざまなシェーダを接続すると、様々なスタイルを得ることができます。

Utility シェーダのシェーディング モード

specular


鏡面反射光のウェイトです。 鏡面反射光ハイライトの明るさに影響を与えます。 base_weightspecular_weight の影響を受けます。その理由は、toon シェーダは物理学に基づくシェーダではないものの、エネルギー保存の法則を満たすようにデザインされているためです。

ここに示した鏡面反射光のすべての例で、トーンマップが使用されています。



specular_color


鏡面反射の調節に使用されるカラー。 このカラーを使用して、鏡面反射光ハイライトに「色付け」します。 色付きの鏡面反射光は特定の金属にのみ使用する必要があります。一方、非金属のサーフェスには通常、モノクロの鏡面反射光カラーが付いています。 通常、非金属のサーフェスには色付きの鏡面反射光はありません。




specular_roughness


鏡面反射の光沢度をコントロールします。 値が低いほど、反射がはっきりします。制限内では、値が 0 の場合は完全に鮮明なミラー反射になり、値が 1.0 の場合は拡散反射に近い反射を生成します。 鏡面反射光ハイライトのさまざまなバリエーションを取得するには、ここでマップを接続する必要があります。

Specular Roughness が 0 でない場合、トゥーンのエッジは反射面に表示されないことに注意してください。

フロア プレーンに割り当てられた Toon シェーダ



specular_anisotropy


異方性反射は、方向バイアスをかけて光を反射、透過し、特定の方向ではマテリアルの粗さまたは光沢が強調されるようにします。 異方性反射の既定値は 0 で、これは「等方性」を意味します。 1.0 の方向にコントロールを移動すると、サーフェスの U 軸の異方性がより高くなります。



specular_rotation


回転値により、UV スペースでの異方性反射の方向が変わります。 0.0 では回転はありませんが、1.0 では 180 度回転します。ブラシ仕上げの金属のサーフェスの場合、この値はマテリアルのブラシ仕上げの角度をコントロールします。 金属のサーフェスの場合、異方性反射ハイライトはブラシの向きに対して垂直方向に伸びている必要があります。



specular_tonemap

ランプ ノードをここに接続し、セル画のような見た目を作成します(トーン マップと見なされます)。


specular_roughness が増加した specular_tonemap

lights


定型ハイライトに使用するキー ライトの名前を指定します。 「lightShape1;lightShape2」とセミコロンで区切った文字列を使用して、複数の光源を指定できます。 サポートされるライト タイプは、distant、point、spot、photometric です。

  • mesh ライトと skydome ライトの場合、結果がぼやけることがあるため、これらのライトはサポートされていません。
  • stylized_highlight はカーブでは効果がありません。これは、将来のリリースで修正される予定です。
  • stylized_highlight では smooth_tangent が有効なサブディビジョンが必要です。そうでないと、アーティファクトが表示される可能性があります。

  • Toon シェーダは UV マップを使用してスムーズな接線を計算します。UV マップがないと、ポリゴン エッジ、またはサブディビジョンのパッチ エッジに不連続性が生じることがあります。UV を割り当てた場合、不連続性は UV マップに継ぎ目がある場所でのみ表示されます。また、接線ソースを toon.tangent に直接アタッチすることもできますが、UV の継ぎ目を非表示にする方が簡単な場合があります。

イメージの上にカーソルを合わせると、Stylized Highlight が適用されていない場合を確認できます。


highlight_color

任意のテクスチャ(または RGB タイプ ノード)を使用してオブジェクトにスタイライズド ハイライトを作成することができます。 何も接続されていない場合、stylized_highlight は無効になります。

反射した Highlight Color をコントロールするために使用されるグラデーション ランプ(ディレクショナル ライト)。イメージの上にカーソルを合わせると、これを適用しない場合を確認できます。

ソリッド カラーを使用すると、円形のハイライトが適用されます。


Stylized Highlight Color に接続されたテクスチャを使用するときは、次の点を考慮する必要があります。

次の例では、右側のティー ポットに Highlight Color として使用されているウィンドウ化されたテクスチャは、イメージの周囲に十分なスペースがあるため正しくレンダリングされています。

highlight_size

スタイライズド ハイライトのサイズです。

aov_highlight
スタイライズド ハイライトの AOV です。
rim_light

ここで使用するライトの名前を指定します。 リム ライティングは、このライトのシャドウの影響を受けます。 サポートされるライト タイプは、distant、point、spot、photometric です。

  • mesh ライトと skydome ライトの場合、結果がぼやけることがあるため、これらのライトはサポートされていません。
  • 複数のライトは、rim_lighting ではサポートされていません。
rim_light_color

リム ライトのカラーです。 リム ライティング効果を得るには、ここにランプを接続します。 

イメージの上にカーソルを合わせると、rim_light_color のランプのエフェクトを確認できます

 

たとえば、rim_light_color が一定のカラーである白の場合は、左下のイメージのような結果になります。ランプは、接続されていれば、ランプの全体の幅をコントロールするために使用できます。これについては右側のイメージで示しています。


rim_light_color に色付きのランプを追加すると、さまざまなライティング シナリオで役に立ちます。 たとえば、内部シーンのライティング、惑星へのリム ライティングの追加、またはキャラクタ/彫刻のライティングなどがあります。

カラー ランプ > rim_light_color (point_light). イメージの上にカーソルを合わせて確認してください。
ディレクショナル ライト。 イメージの上にカーソルを置くと、惑星上のランプの効果を確認できます。
黒と白のランプ(白の位置をアニメート)。
イメージの上にカーソルを合わせると、rim_light_color (ディレクショナル ライト)のエフェクトを確認できます。
rim_light_tint


サーフェスのベース カラーを使用して、リム ライトのカラーを色付けします。


rim_light_color: 白
 


rim_light_width 


このオプションは、ユーザが Rim Lighting を使用してランプ ノードに接続する必要がないように実装されています。


 


aov_rim_light

リム ライトの AOV です。
transmission


transmission を使用すると、ガラスや水のようなマテリアルのサーフェスで光を散乱させることができます。

Toon シェーダが割り当てられているメッシュでも、Opaque を無効にする必要があります。

透明な場所が黒くしか見えない場合、屈折レイ深度値(Render Settings の Ray Depth セクション)が低い可能性があります。既定値は 2 です。



transmission_color

Transmission_color は屈折の結果とカラーを掛けたものです。

transmission_roughness

等方性マイクロファセット BTDF を使用して計算された屈折のぼけ具合を追加します。範囲は 0 (粗さなし)~ 1 です。

transmission_anisotropy

散乱の方向偏り、または指向性。既定値のゼロでは等方性散乱となり、ライトがすべての方向に均等に散乱します。 正の値は前方(ライトの進行方向)に散乱効果をバイアスします。一方、負の値は後方(光源の方向)に散乱効果をバイアスします。

transmission_rotation

回転値により、UV スペースでの異方性反射の方向が変わります。 0.0 では回転はありませんが、1.0 では 180 度回転します。ブラシ仕上げの金属のサーフェスの場合、この値はマテリアルのブラシ仕上げの角度をコントロールします。 金属のサーフェスの場合、異方性反射ハイライトはブラシの向きに対して垂直方向に伸びている必要があります。

sheen


マイクロファイバーや、粗さが変化するベルベット、サテンなどの衣類のようなサーフェスを近似するために使用できる、エネルギー保存型の光沢レイヤです。Sheen は拡散反射光コンポーネントにレイヤ化されていて、このアトリビュートによってウェイトが決まります。Sheen は密度、または密度と繊維長の組み合わせと見なすことができます。


sheen_color


繊維のカラー。光沢を反映したカラーを色付けします。


sheen_roughness


サーフェス法線の方向からマイクロファイバーが発散する度合いを調整します。



emission

発光ライトの量を制御します。 特に間接照明の光源が非常に小さい場合(電球ジオメトリ)、ノイズが生成されることがあります。

発光シェーダが割り当てられた電球(イメージの上にカーソルを合わせて確認)

拡散反射光サンプルの数値を大きくすると、暗闇のノイズは軽減され、発光を使用するとシーンの領域が間接的に照らされます。

emission_color

発光ライトのカラーです。

emission_color に接続された熱い溶岩を表すテクスチャ マップ

IOR


IOR パラメータ(屈折率)はマテリアルのフレネル反射率を定義し、既定で使用される角度の関数になります。実質的に、IOR は正面に向いたサーフェスの反射とサーフェス エッジの反射とのバランスを定義します。反射強度は変更されませんが、正面側の反射強度は大きく変化することがわかります。

Edge パラメータは、IOR によっても影響を受けます。

IOR: 1 イメージの上にカーソルを合わせると、1.52 (既定)の場合を確認できます。 透過: 1



normal

法線マップをここに接続します(通常は Mudbox または ZBrush から書き出されます)。

法線マッピングは、補間されたサーフェス法線を RGB テクスチャから評価されたものに置き換えることによって動作します。各チャネル(赤、緑、青)はサーフェス法線の X、Y、および Z 座標に対応します。法線マッピングはバンプ マッピングよりも高速に処理できます。バンプ マッピングではその下にあるシェーダを 3 回以上評価する必要があるためです。

tangent

接線マップ。 シェーディング法線とともに、入力ベクトルが適用される接線の座標系を定義します。 スカルプト ツールから使用できる場合は、法線マップが依存している接線マップをここに接続する必要があります。 0 の場合、シェーダはフレームを作成するために次のアクションを試行します。

  1. 「tangent」および「bitangent」という名前のベクトル ユーザ データを探します。
  2. UV の微分係数を使用します。
  3. 独自のローカル フレームを作成します。

シェーダは接線空間のみで作用します。接線マップがワールド空間またはオブジェクト空間で書き出された場合は、代わりにより汎用性の高い space_transform シェーダを使用することができます。

indirect_diffuse


間接ソースのみから受信した拡散反射光の量。 


Indirect_diffuse: 0 (既定)は、より 2 次元的な toon シェーディング効果を生みます。



indirect_specular

間接ソースのみから受けた鏡面反射性の量。 1.0 以外の値にすると、マテリアルはエネルギーを維持しなくなり、グローバル イルミネーションは収束しない場合があります。

bump_mode


バンプの影響を受けるコンポーネントとして、diffusespecular、または both を選択します。



energy_conserving


toon シェーダは既定ではエネルギー保存の法則に従います。これが無効の場合、Toon シェーダは basespecular、および transmission を単純に加算します。 toon シェーダを使用する間接イルミネーションに影響を与えるので、このオプションを無効にする場合は注意が必要です。

user_id


エッジ検出をコントロールするには、STRING タイプのユーザ データ(名前は Toon ID)を使用します。 このデータを使用しない場合、検出されたエッジはトゥーン固有の ID であるオブジェクト自体の名前によって制御されます。 これにより、オブジェクトをグループ化して、エッジ検出に関してどのオブジェクトが同じグループに属するのかを Toon ID で指定することができます。


aov_prefix


トゥーン AOV の名前の前に付加されるオプションの aov_prefix。たとえば、aov_prefix が「toon_」の場合、トゥーン拡散反射光 AOV は「toon_diffuse」に書き出されます。これは、トゥーン AOV とコアの LPE AOV の両方にアクセスする必要がある場合に使用できます。




Pepe モデルの出典: Daniel M. Lara (Pepeland) Mery モデルの出典: Jose Manuel Garcia、 www.meryproject.com. Cubebot の提供: Christophe Desse。


  • No labels