Doc:JA/2.6/Manual/Render/Cycles/Reducing Noise

提供: wiki
< Doc:JA‎ | 2.6‎ | Manual‎ | Render‎ | Cycles
2018年6月29日 (金) 05:53時点におけるYamyam (トーク | 投稿記録)による版 (1版 をインポートしました)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索

ノイズの削減

最終レンダリングを実行するとき、可能な限りノイズを減らすのは重要なことです。これから、多くの物理法則を無視したトリックの話をしますが、納得のいく時間内でアニメーションをレンダリングし終える為には極めて重要なのです。ノイズの違いをご覧になるには、サンプルイメージをクリックして拡大してください。


パス・トレーシング Path tracing

Cyclesは次に起こるイベントの見積もりを利用しつつパス・トレーシングを使用します。そしてそれは、集光の様な光のエフェクトの類をレンダリングするのが苦手です。しかし、他のレンダリング・アルゴリズムと比べて、より大きなシーンを詳細にレンダリング出来るという利点があります。例えばフォトンマップをメモリに格納しておく必要がありません。また、例えば bidirectional path tracing(双方向軌跡追跡)と比較すると、イメージキャッシュを必要に応じて使用する場合ににおいて、光線を比較的に整合性がとれた状態に保つことが出来ます。

Manual cycles light path rays.png


現実世界で起こる事とは逆の事を行われます。光源からシーンへ、そしてカメラへという方向ではなく、むしろ、カメラからシーンへ、そして光源へと向かって光線を追跡します。このやり方では、カメラに突入してこない光線を無駄に計算しなくてもよい、という利点があります。しかし同時に、どの光線がライティングに多く貢献しているのかを見つけるのが困難である、ということでもあります。

以下のドキュメントで詳細を知ることが出来ます。 Light PathsIntegrator


ノイズはどこから来るのか

ノイズがどこから来るのか理解するために、このシーンを例に説明します。ある特定の位置に突入してくる光線を追跡する事は、それはまさにdiffuse(拡散光)シェーダーが行う事なのです。このサーフェスで反射し飛び出す光線を知る為に、全てのこれらのピクセルからの平均色を知る必要があります。球体の艶のハイライトと、光源が近くの壁に落とす明るい小領域に注目してください。これらのホットスポットは、このイメージの他の部分より100倍明るく、このピクセルのライティングに対して顕著に貢献するでしょう。

Cycles noise fisheye reference.png Cycles noise fisheye.png Cycles noise fisheye hotspot.png

ランプはレンダラーにとって既知の光源で、見つけるのはそう難しくはないでしょう。しかし、その光源により引き起こされる艶のハイライトはまた別の(光源と成り得る為、)問題となります。path tracing を用いて出来る最良の事は、全ての重要な明るい小領域を見つける為に、かいつまみながら半球全体にわたってランダムに光線を配分できる事でしょう。もしいくつかのピクセルと引き換えに、いくつかの明るい小領域を見逃しても、他のもうひとつと引き換えにそれをちゃんと見つけますが、その事はノイズの原因になります。サンプルを多く採れば採るほど、全ての重要な光源をカバーできる確率は高まります。

いくつかのトリックを用いてノイズを減らすことが出来ます。もし明るい小領域をボカせば、より暗くなり大きくなりますし、見つけ易くノイズも少なくなります。この事は完全に正確な同等な結果を与えてくれる事はないでしょうが diffuse もしくはsoft glossy reflection を見渡せば、十分似ている結果に見えます。以下は、Filter Glossy と Smooth Light Falloff を用いた例です。

Cycles noise fisheye blur reference.png Cycles noise fisheye blur.png Cycles noise fisheye blur hotspot.png


跳ね返り Bounces

現実世界では光は、その速度が非常に速いので、膨大な回数跳ね返ります。実際には、跳ね返りが多いほど、多くのノイズが入ります。 Limited Global Illumination(制限された大域照明)プリセット異なるシェーダー向けのより少ない跳ね返りの様なものを使用するのが良いかもしれません。Diffuse サーフェスは典型的に、より少ない跳ね返りでレンダリングをやってのけることが出来ます。一方、艶は少し多目で、ガラスのような Transmission シェーダーは最も多く跳ね返りを必要とします。

Cycles noise 0bounce.png Cycles noise 2bounce.png Cycles noise 4bounce.png

同じく重要な事は、値1.0のコンポーネントを持つシェーダー色を使わない事、またはそれに近い事をしない事です。最大でも0.8以下に保ち、ライトの方を明るくして下さい。現実世界ではサーフェスが完全に全ての光を反射するような事は稀です。しかし、もちろん例外はあります。ガラスはほとんどの光線を通しますから、より多くの跳ね返りが必要です。色要素に高い値を入れるとノイズが入りがちです。なぜなら、そうした場合の光源の強度は、それがサーフェスで跳ね返る際にそれほど減少しないからです。

集光と艶フィルター Caustics and Filter Glossy

集光(Cautics)は蛍のようなノイズを引き起こす原因としてよく知られています。ソフトな艶や拡散反射を通して見るスペキュラーハイライトを、発見するのが難しい場合に発生します。拡散反射の後ろにある艶を全体的に無効にする、No Causticsオプションがあります。多くのレンダリングエンジンは典型的にデフォルトで無効になっています。

Cycles noise reference.png Cycles noise no caustics.png Cycles noise filter glossy.png

どういう方法を採用したとしても、集光を使わない事は、光の欠落を招きますし、シャープな艶の反射がソフトな艶の反射から眺められるような場所で起こるケースには、依然として対応しません。正確性を確保するのにコストがかかりますが、そのようなケースでのノイズを減らす為に、次のオプションが存在します。Filter Glossy

上のイメージはデフォルト設定を示しています。集光無しで、filter glossy を1.0に設定しています。


ライトの減衰 Light Falloff

現実世界での真空中での光は常に 1/(distance^2) の割合で減衰します。しかしながら距離がゼロに近づくにつれ、この値は無限大に近づき、イメージの中で非常に明るい領域を得ることになります。これらは間接照明にとってかなり問題になります。このような小さいけれども非常に明るい小領域に出くわす確率は低いので、ほとんど起こりません。これが、蛍型ノイズが発生する典型例です。

Cycles noise falloff hard.png Cycles noise falloff soft.png

この問題を減らすために、 Light Falloff nodeライトが付近のサーフェスを照らす場合の最大の強度を、減少させるために使用される、スムース要因を持ちます。上のイメージはデフォルトの減衰と Smooth 値が1.0のときの状態を示しています。


ランプとして採取 Sample as Lamp

自己発光シェーダーを伴うマテリアルは、Sampled as a Lampで設定できます。この事は、ランダムにあちこちに跳ね返る光線が最終的にそこへ至るというよりむしろ、それらのマテリアルに向かって直接に光線を送ってもらう、という事を意味します。非常に明るいメッシュ光源に対してであれば、これは顕著にノイズを減らすことが出来ます。しかしながら、発光がそれほど明るくない場合、「この方法でこのマテリアルを見つける事が重要である他のもっと明るい光源」からのサンプル群を、このマテリアルは取り除いてしまうでしょう。

ここでの最適な設定は推測が困難です。試行錯誤が必要かもしれませんが、とにかく発光しているオブジェクトだけが局所的に関係しているということは、ほぼ明らかです。一方、ランプとして使用されているメッシュは、このオプションを有効にすることを要求するでしょう。これは、発光している球体がライティングにほとんど影響を与えないという例です。そして、この右のイメージは、Sample as Lamp を無効にしたことにより、微かに少ないノイズでレンダリングされています。

Cycles noise sample lamp.png Cycles noise no sample lamp.png

ワールドの背景は、Sample as Lamp オプションも持っています。これは、スムースではなく、小さな明るい小領域を含む環境マップにとってかなり便利です。このオプションはその時に、とある事前処理において、特定の明るい小領域を決定するでしょう。そして、それらに直接光線を送ります。またここで、このオプションを有効にすることで、他のより重要な光源から採取されたサンプル群を、もし必要なければ、取り除くかもしれません。

ガラスと半透明の影 Glass and Transparent Shadows

集光を無効にすると、ガラスは影を失うでしょう。また、艶フィルターを用いると、それらは非常にソフトになるかもしれません。直接見える場合には Glass BSDF を使用し、間接的に見える場合は Transparent BSDF を使用するというようなガラスシェーダーを作成することが出来ます。Transparent BSDF は、半透明な影がサーフェスをまっすぐ通して光源を見つける為に使用され得ます。そして、正しい色つきの影を出すことができます。しかし集光は出ません。Light Path ノードはその二つのシェーダーのどちらかを、いつ使用するかを決定します。

Cycles noise glass setup.png
Cycles noise glass too much shadow.png Cycles noise glass trick.png

上では、ガラスの透明性トリックの為のノード設定について見ることが出来ます。左の例では、集光の欠落による強すぎる影がレンダリングされています。右の例ではそのトリックを使用しています。


窓型ライト Window Lights

開いたドアや窓を通して室内へ入ってくる太陽光をレンダリングする場合、integrator がそれらに対して、それらの通り道を見つけてあげる事は非常に困難です。そこで、開いている窓の内側に配置された発光シェーダーを伴う平面オブジェクトで代用することが出来ます。そうすれば、integrator はどの方向から光線を発射されているか知ることができます。カメラ視線に対しては、このメッシュ光源を不可視にすれば、窓の外の景色が見えなくなることはありません。これは、そのオブジェクトのカメラ視線の可視性を無効にするか、マテリアル内でガラスシェーダーと発光シェーダーを切り替えることにより実現できます。

下の二つのイメージは同じレンダリング時間がかかっています。二番目の例は、窓の中にメッシュ光源を置いたものです。

Cycles noise window no trick.png Cycles noise window trick.png

蛍ノイズの固定 Clamp Fireflies

先に出た全てのトリックを用いて、蛍ノイズは申し分なく駆逐できるでしょうが、依然起こり得ます。 それに対して、任意のピクセルに影響を及ぼす個々の光線サンプルの強度の値を、Clamp setting integrator を用いて、任意の最大値で固定できます。もし非常に低く設定すると、ハイライトが欠落するかもしれません。これは、ブルームやグレアのようなカメラエフェクトを保全する為には有効かもしれません。

Cycles noise noclamp.png Cycles noise clamp 4.0.png



"