元記事:Samples and Filtering


サンプリングとフィルタリング



サンプリング


Blender では、画像のアンチエリアスを行うため、OSA オプション(Over SAmpling)でピクセル毎に複数のサンプルをレンダリングします。デフォルトでは、Blender 内で固定の "分散ジッター(Distributed Jitter)" テーブルを使用します。1ピクセル内のサンプルは、二つの特性を保証する方法により、分散とジッターが行われます。
1) それぞれのサンプルは近隣のサンプルと互いの距離が同じである。
2) 水平および垂直方向のサンプルは、すべてのサブピクセルの位置を均等にカバーする。

下の画像は、5、8、11、16 sample 時の、Blender のサンプリングパターンです。複数のピクセル上に均等に分布し、近隣のピクセルパターンも同様であることを示しています。それぞれのピクセルは、同一のパターンを持っていることに注意して下さい。




フィルタリング


サンプルがレンダリングされた時、サンプル毎に色とαの情報が使用できます。この時、一つのピクセルにそれぞれのサンプルがどれだけ影響するかを決めることが重要です。
もっともシンプルな方法は、すべてのサンプルの平均をとり、ピクセルの色を生成することです。これは "Box"フィルタと呼ばれています。この方法の欠点は、ピクセルの端に非常に近いサンプルは計算に入れられず、その結果、近隣のピクセルの色にも同様に影響してしまう可能性があることです。

Blender のレンダラは、3x3のピクセル上に色を拡散、もしくはピクセルの中心から、-1.5〜1.5までの距離の範囲を計算することができます。もっとも好ましい結果を与えるべく、多くの拡散要素のアルゴリズムが開発されています。
Blender は現在、以下のフィルタータイプをサポートしています。






Box
 

Tent
 

Quadratic
 

Cubic






Gauss
 

Catmul-Rohm
 

Mitchell-Netravali
  


これらの図の水平の範囲は-1.5から1.5です。

Box フィルタでは、ピクセル自身の中のサンプルのみが、ピクセルカラーに追加されるのがわかるでしょう。
他のフィルタについても、そのアルゴリズムで他のピクセル上に拡散されるサンプルカラーの量が確実に一定になるようにします。

Blender では、Filter の隣の選択メニュー(DisplayButtons の Render パネル)で、フィルタのサイズも調整できます。この値を小さくすると、サンプルが中心へと絞られ、画像がぼやけます。大きくすると、シャープな結果になります。

最後の二つのフィルタも、シャープになりすぎるという欠点があることに注意して下さい。


レンダリング結果


以下の画像はすべて8サンプルでレンダリングされています。
ラインとドットはポリゴンのサンプリング処理を示し、中央のパートはテクスチャ(Material の "Full OSA" 使用)のサンプリング処理を示します。



OSA 8、Box



OSA 8、Tent



OSA 8、Quadratic



OSA 8、Cubic



OSA 8、Gauss



OSA 8、Catmul-Rohm



OSA 8, Mitchell-Netravali



Gamma と 表示デバイス


ピクセルのアンチエリアス処理中、白(1.0)と黒(0.0)の中間の値は通常0.5になります。これが実際の中間の輝度かどうかは、表示デバイスと人間の視覚システムによります。
このことは、画像の印刷や、一般的なTVやLCDモニターへの表示、投影するためにフィルムに転写する時に非常に問題となります。

一般的な解決方法は、画像のガンマ補正を行うことです。不幸にも暗すぎ、もしくは明るすぎて色が飽和してしまった画像についても同様です。
出力結果のガンマ補正の代わりに、Blender では色に追加でガンマ補正ができます。それぞれのサンプルはこの時最初にガンマ補正され、その後加算・平均化、そしてその結果を逆ガンマ補正します。

この効果を説明するため、"Gamma" オプションを使用してレンダリングした二つの画像を、下に追加しました。これらを先ほどの画像と比べてみて下さい…実際には、あなたのモニターのタイプとガンマ設定に見え方が依存します。



OSA 8、Box、Gamma



OSA 8、Tent、Gamma



元記事:Samples and Filtering
Last update: Nov 29 2005.
This section is maintained by Ton Roosendaal.