クラス
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.osl を toon.mask_color に接続します。
mask_color
エッジは、マスクのカラーが隣接するピクセルと異なるときに検出されます。 mask_color には、テクスチャが接続されていることが前提となります。これにより、色の違いを検出して任意のシェイプを描画できるようになります。このパラメータを使用すると、任意の場所に線を引くことができます(フィルタにより、マスクの色が変わるところに線が引かれます)。
mask_color にさまざまなシェーダを接続すると、様々なスタイルが得られます。
Utility シェーダの Shade Modes を mask_color に接続すると、edge にさらにディテールを追加することができます。
![]() |
![]() |
|
|
Utility shader -> mask_color
edge_color
トゥーンのエッジの色です。 線のスタイルはここで、テクスチャを使用してコントロールできます。
![]() |
![]() |
赤
|
ランプを持つ定型化エッジ
|
edge_tonemap
ランプ ノードをここに接続すると、Edge Color が Base のシェーディング結果に基づいて変更されます。
![]() |
![]() |
既定(接続なし)
|
グラデーション ランプ
|
直接拡散反射光成分は UV にマップされます。 次の例では、球の背面(最も暗い直接拡散反射光となる)は青で、ディレクショナル ライトによって直接照らされる球体の部分は緑です。 その後、露出が増えるにつれて黄色になります。
![]() |
![]() |
![]() |
光源の露出: 0
|
光源の露出: 0.5
|
光源の露出: 1
|
この例では、edge_color (黄色)は青色ランプ カラー(edge_tonemap に接続されている)により乗算され、緑になります。
![]() |
![]() |
青色ランプ > Edge Tonemap。 Edge Color: 白
|
青色ランプ > Edge Tonemap。 Edge Color: 黄
|
edge_opacity
![]() |
![]() |
![]() |
0.1
|
0.5
|
1 (既定)
|
edge_width_scale
contour の最大の太さは、contour filter の width パラメータで決定されます。 その値にこのパラメータを乗算した結果が実際の太さになります。 線の太さとテクスチャを組み合わせることにより、線のスタイルをコントロールすることができます。
エッジの edge_width_scale に 1 よりも大きな値を指定するには、contour filter width の値を大きくする必要があります。ただし、レンダリングの時間が長くなります。
![]() |
![]() |
![]() |
0.1
|
0.3
|
1 (既定)
|
facing_ratio シェーダを width_scale に接続すると、中央部の edge が煩雑になるのを防ぐことができます。
![]() |
![]() |
Facing Ratio シェーダなし
|
Facing Ratio (反転) > Width Scale
|
width_scale を使用すると、カメラからの距離に応じて edge をコントロールできます。
1 未満の width_scale 値を使用すると、アニメーションがちらつく場合があります。 lock_sampling_pattern (サンプリングのレンダリング設定)を有効にすると、この問題は解決されるはずです。
silhouette_color
シルエット エッジの色。 線のスタイルはここで、テクスチャを使用してコントロールできます。
silhouette_tonemap
ランプ ノードをここに接続すると、silhouette_color が base
のシェーディング結果に基づいて変更されます。
silhouette_opacity
シルエットの透明度をコントロールします。
silhouette_width_scale
シルエットの最大の太さは、contour filter の width パラメータで決定されます。 その値にこのパラメータを乗算した結果が実際の太さになります。 線の太さとテクスチャを組み合わせることにより、線のスタイルをコントロールすることができます。 silhouette_width_scale を 1 より大きくするには、contour filter width を増やす必要があります。 ただし、レンダリングの時間が長くなります。
priority
edge のソート優先順位を変更します。
![]() |
||
0 (すべてのオブジェクト)。
|
赤い球 1。 (イメージの上にカーソルを合わせると、赤い球が 0、緑の球が 1 の場合を確認できます)。 |
青い面 1 (どちらの球も 0)。
|
![]() |
![]() |
唇: 0 スキン: 1
|
唇: 1 スキン: 0
|
enable_silhouette
![]() |
![]() |
0 (既定)
|
1
|
有効。イメージの上にカーソルを合わせると、無効(既定)の場合を確認できます。
シルエットの効果も、以下の屋内シーンでは、柱や階段(1 つずつに分かれたオブジェクト)のエッジ線ではっきりと分かります(イメージの上にカーソルを合わせて確認)。
無効(既定)。 イメージの上にカーソルを合わせると、有効の場合を確認できます。
ignore_throughput
既定では、輪郭のカラーはレイのスループットの影響を受けます。 反射/屈折オブジェクトに特定のカラーが必要な場合は、これを有効にして ray_switch シェーダを使用します。
![]() |
![]() |
無効(既定)
|
有効
|
enable
オフにすると、エッジ検出が無効になります(既定では有効です)。
- toon_edge を表示するには filter_type (サンプリング設定)を輪郭に変更する必要があります。
- contour_filter_width (サンプリング設定)値を増やすと、レンダリング時間も増えます。
![]() |
![]() |
無効(発光のみ)。
|
有効(既定)。 Contour Filter を有効にする必要があります。
|
id_difference
これを有効にすると、隣接するピクセルの UV の違いがエッジ検出に使用されます。
![]() |
![]() |
有効(既定)
|
無効
|
有効(既定)。 イメージの上にカーソルを合わせると、無効の場合を確認できます。
カーブ、ポイント、およびシェイプ ID
![]() |
![]() |
![]() |
有効(既定)
|
無効
|
パーティクルにはエッジがあり、ポリゴンにはありません。
|
shader_difference
隣接するサンプルのシェーダの違いが検出されます。 これはたとえば、複数のシェーダが単一のポリメッシュに割り当てられている場合に役立ちます。 angle_threshold には、十分小さな値を設定してください。そうしないと差異に気付かないことがあります。
uv_threshold
これを有効にすると、UV とそれに隣接するピクセルとの差異を使用してエッジが検出されます。
angle_threshold
180 よりも小さな値を設定すると、隣接するピクセルの角度の差異を使用してエッジが検出されます。
![]() |
![]() |
![]() |
180 (既定)
|
50
|
10
|
Angle_thresholdを 180 から 10 に徐々に変化させたときのキーフレーム
normal_type
エッジの検出に使用される法線です。 Shading Normal、Smoothed Normal、および Geometric Normal から選択します。
![]() |
![]() |
![]() |
バンプ付きの Smoothed Normal (既定)
|
Smoothed Normal
|
Geometric Normal
|
スムージングされた法線。 イメージの上にカーソルを合わせると、ジオメトリ法線の場合を確認できます。
base
ベース カラーのウェイトです。
base_color
base_color は、白色の光源で直接照らされたとき(強度 100%)のサーフェスの明るさを設定します。 サーフェスの下でライトが散乱するときに吸収されない、RGB スペクトルの各コンポーネントのパーセンテージを定義します。 金属のベース カラーは通常、黒または非常に濃い色になりますが、さびた金属には何らかのベース カラーが必要です。 通常、base_color マップが必要になります。
Diffuse file texture -> base_color
base_tonemap
ランプ ノードをここに接続し、セル画のような見た目を作成します(トーン マップと見なされます)。
ディレクショナル ライト(イメージの上にカーソルを合わせると、Skydome ライトの場合を確認できます)
base_tonemap の外観(ランプを使用)は、ディレクショナル ライト(ハード グラデーション、以下の中央のイメージ)を使用した場合には、たとえば skydome ライト(ソフト グラデーション、次の右側のイメージ)の外観と比較して、かなり異なっていることに注意してください。
![]() |
![]() |
![]() |
Ramp > Tonemap (ディレクショナル ライト)
|
ランプなし(ベースカラーのみ)
|
同じランプ > Tonemap (Skydome ライト)
|
光源の露出を調整すると、base_tonemap に影響が及びます。
![]() |
![]() |
光源の露出: 2
|
光源の露出: 3
|
base_tonemap は、base_color に対して乗数の効果を与えます。base_tonemap の直接拡散反射光は UV にマップされ、それからランプが評価されます。
base_color または base_tonemap にさまざまなシェーダを接続すると、様々なスタイルを得ることができます。
![]() |
![]() |
![]() |
アンビエント オクルージョン
|
Flat
|
Ndoteye
|
Utility シェーダのシェーディング モード
specular
鏡面反射光のウェイトです。 鏡面反射光ハイライトの明るさに影響を与えます。 base_weight は specular_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 Tonemap に接続されたランプ
|
specular_roughness が増加した specular_tonemap
lights
定型ハイライトに使用するキー ライトの名前を指定します。 「lightShape1;lightShape2」とセミコロンで区切った文字列を使用して、複数の光源を指定できます。 サポートされるライト タイプは、distant、point、spot、photometric です。 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
スタイライズド ハイライトのサイズです。
![]() |
![]() |
![]() |
0
|
0.5 (既定)
|
1
|
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 (point_light). イメージの上にカーソルを合わせて確認してください。
|
ディレクショナル ライト。 イメージの上にカーソルを置くと、惑星上のランプの効果を確認できます。
|
![]() |
|
黒と白のランプ(白の位置をアニメート)。
|
イメージの上にカーソルを合わせると、rim_light_color (ディレクショナル ライト)のエフェクトを確認できます。
|
rim_light_tint
rim_light_width
aov_rim_light
リム ライトの AOV です。transmission
transmission を使用すると、ガラスや水のようなマテリアルのサーフェスで光を散乱させることができます。 Toon シェーダが割り当てられているメッシュでも、Opaque を無効にする必要があります。 透明な場所が黒くしか見えない場合、屈折レイ深度値(Render Settings の Ray Depth セクション)が低い可能性があります。既定値は 2 です。
transmission_color
Transmission_color は屈折の結果とカラーを掛けたものです。
![]() |
![]() |
![]() |
赤
|
緑
|
青
|
transmission_roughness
等方性マイクロファセット BTDF を使用して計算された屈折のぼけ具合を追加します。範囲は 0 (粗さなし)~ 1 です。
![]() |
![]() |
![]() |
0 (既定)
|
0.5
|
1
|
transmission_anisotropy
散乱の方向偏り、または指向性。既定値のゼロでは等方性散乱となり、ライトがすべての方向に均等に散乱します。 正の値は前方(ライトの進行方向)に散乱効果をバイアスします。一方、負の値は後方(光源の方向)に散乱効果をバイアスします。
![]() |
![]() |
0 (既定)
|
1
|
transmission_rotation
回転値により、UV スペースでの異方性反射の方向が変わります。 0.0 では回転はありませんが、1.0 では 180 度回転します。ブラシ仕上げの金属のサーフェスの場合、この値はマテリアルのブラシ仕上げの角度をコントロールします。 金属のサーフェスの場合、異方性反射ハイライトはブラシの向きに対して垂直方向に伸びている必要があります。
![]() |
![]() |
![]() |
![]() |
![]() |
0 (既定)
|
0.25
|
0.5
|
0.75
|
1
|
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 の場合、シェーダはフレームを作成するために次のアクションを試行します。 シェーダは接線空間のみで作用します。接線マップがワールド空間またはオブジェクト空間で書き出された場合は、代わりにより汎用性の高い space_transform シェーダを使用することができます。
indirect_diffuse
間接ソースのみから受信した拡散反射光の量。 Indirect_diffuse: 0 (既定)は、より 2 次元的な toon シェーディング効果を生みます。
indirect_specular
間接ソースのみから受けた鏡面反射性の量。 1.0 以外の値にすると、マテリアルはエネルギーを維持しなくなり、グローバル イルミネーションは収束しない場合があります。
bump_mode
バンプの影響を受けるコンポーネントとして、diffuse
、specular
、または both
を選択します。
energy_conserving
toon シェーダは既定ではエネルギー保存の法則に従います。これが無効の場合、Toon シェーダは base、specular、および 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。