Houdini 20.0 レンダリング

サンプリングとノイズ

Mantraでのサンプリングの動作について説明しています。

On this page

サンプル

画像を生成している際、Mantraは画像平面の背後のシーンを検証して、各ピクセル用のカラー値を決定しなければなりません。 Mantraは、光線がシーン内のオブジェクトに当たるまでカメラの位置から多数の光線を送信することによってこれを実行します。 光線がオブジェクトに当たる度に、そのオブジェクトに関する何かしらの情報(例えば、色)を返します。 広い意味で、この過程をシーンの“Sampling”であると説明できます。

しかしながら、1ピクセル毎にサンプリングを1回行なうと、サンプリングによって情報が消えた箇所に“エイリアス(ジャギー)”が発生する原因になります。 これは、さまざまな形状や色があるシーン内において特に顕著になります。

ピクセル毎のサンプル数を上げると、実際のシーンをより良く表現した“アンチエイリアス”の画像が生成されます。

上記で説明した例は、 プライマリ 光線(またはピクセルサンプル)として表現することができます。 これは、特にシーン内のオブジェクトの形状と精度に関して、レンダリングする画像の全体の品質を決定することができます。

ライティング、反射、屈折のように画像の他の局面に関しては、プライマリ光線が当たった位置から、さらに多くの光線をシーン内に投影しなければなりません。 プライマリ光線毎に、Mantraは少なくとも一つの セカンダリ 光線を送信します。 それらのセカンダリ光線は、直接と間接という2つのタイプに分けることができます。

直接光線と間接光線

Direct Rays(直接光線) は、ライトを扱う光線であると説明できます。 一般的には、これは、その光線がシーン内のある位置から様々な光源に向かって飛ぶことを意味します。 これらの光線は、サーフェスがシャドウの中にあるかどうかを判定し、シャドウの中にない場合にライティング情報を計算することができます。

先述と同じ“エイリアス(ジャギー)”問題がこれらの直接光線は存在し、その結果、ノイズが多い画像になります。 通常は、スペキュラー(鏡面反射)ハイライトまたはエリアライトから投影されたシャドウのソフトエッジをレンダリングした時に、 Directソースからノイズが発生していることに気づくことでしょう。 これらのケースでは、もっと多くの直接光線を送る必要があります。

レンダリングでより多くの Direct Rays を送った効果を評価する時、あるノイズソースを他のノイズソースと分けたいことがあります。 “(コンポーネント単位の)Direct Lighting”画像平面を追加すると、各コンポーネントのDirect寄与度を別々に確認することができます。

シーン内の直接光線の数を最適化しようとする時には、“Direct Samples”画像平面を追加するといいでしょう。 この平面は、画像全体で使われている直接光線の数を表示します。

Indirect Rays(間接光線) は、オブジェクトとその表面特性を扱う光線であると説明できます。 一般的には、これは、光線はシーン内のある位置からオブジェクトに設定しているシェーダによって決められた方向に飛ぶことを意味します。 Refraction Rays(屈折光線) はオブジェクトを“通過して”伝わり、 Reflection Rays(反射光線) は跳ね返り、 Diffuse Rays(拡散光線) は半球状の分布内でランダムな方向に散乱します。

Indirect Rays(間接光線) を使うと、“エイリアス(ジャギー)”が直接光線よりもひどく、通常では、それがレンダリングのノイズの一番の原因です。 一般的には、小さくて非常に明るい部分で間接サンプルのノイズが最も多いです。 例えば、他のオブジェクト上の非常に明るいスペキュラー(鏡面反射)ハイライトの柔らかい反射がそれです。 これらのケースにおいては、より多くの直接光線を送る必要があります。

レンダリングでより多くの Indirect Rays を送った効果を評価する時、あるノイズソースを他のノイズソースと分けたいことがあります。 “(コンポーネント単位の)Indirect Lighting”画像平面を追加すると、各コンポーネントのIndirect寄与度を別々に確認することができます。

シーン内の間接光線の数を最適化しようとする時には、“Indirect Samples”画像平面を追加するといいでしょう。 この平面は、画像全体で使われている間接光線の数を表示します。

ボリューム

ボリュームオブジェクトのサンプリングは、サーフェスのサンプリングとは異なる手法を必要とします。 直接光線を使用していても、それらの光線は、ボリュームを通過すると同時に、そのボリュームを複数回サンプリングしなければなりません。 間接光線も同様の挙動をし、その間接光線がボリュームオブジェクトを通過する“ステップ”毎に複数回送信されます。 これは、ボリュームのサンプリングがサーフェスのサンプリングよりもかなり処理が重いことを意味します。

光線がボリュームを通過すると、その光線は、 Volume Step Rate で決められたレートで前方へ移動します。 ステップ毎に、その光線は、シェーダを評価し、ボリュームの密度を累積します。 これらの密度値はボリューム全体で非常に大幅に変化することがあるので、近隣の光線が事実上異なった値を計算してしまうことがあり、 レンダリングにノイズが発生します。 これらのケースでは、より多くの直接および間接光線を送り出すか、ボリューム全体でより小さいステップを取得する必要があります。

サンプリングレートが低い場合であっても、ボリュームデータが綺麗な画像をレンダリングするのに処理が重いことがあります。 これは、ボリューム全体においてシェーディングがステップ毎に実行されるからです。 しかしながら、Mantraには、ディテールを犠牲にすることなくレンダリング回数を減らすための、ボリュームレンダリングの最適化の方法がたくさんあります。

Stochastic Transparency(確率的透明度) として知られる最適化の一つは、シェーディングサンプルから密度値の累積を分離します。 これは、ライティング情報の変化量が密度の変化量と比べてあまり変わらない時、サンプリングの量を大幅に減少させることができることを意味します。

レンダリングでより多くの直接光線や間接光線を送った効果を評価する時、あるノイズソースを他のノイズソースと分けたいことがあります。 “(コンポーネント単位の)Direct Lighting”および“(コンポーネント単位の)Indirect Lighting”画像平面を追加すると、 直接ボリュームと間接ボリュームの寄与度を別々に確認することができます。

レンダリング

Mantraユーザガイド

基本

ライティング

次のステップ

導師レベル

他のレンダラー