この記事にはプロモーションが含まれています。

【Blender4.4】レンダリング画像をデノイズする:ノイズ除去

blender

Blenderは特にCyclesでレンダリングした画像にノイズが多い場合があります。ノイズ除去のためのデノイズ機能や、コンポジットでデノイズする方法について解説します。他にも何点かノイズ除去の小技を書いています。

ただ設定するだけで、初心者の方でも簡単にできるのでやってみてください。

この記事は、Blenderのデノイズ方法について書いた初心者向けの記事です。

難易度 2.0

スポンサーリンク

なぜノイズが起こるのか

Cyclesのパストレーシングは、
ランダムにレイを飛ばして色や明るさを測る方法です。

明るい場所(ハイライト)を運良く見つければOK。でも、見落としたら「そこは暗い」と勘違いしてしまう。

この「当たり外れ」によって、ピクセルごとに結果がバラバラになり、明るさにばらつきができ、ノイズが生まれるのです。

パストレーシングについて詳しくは以下の記事に書いています↓

レイが何回もバウンスするほど光を探すのが難しくなりノイズが増える

ノイズを減らす工夫

  • 方法1:サンプル数を増やす
    • たくさんの光線を飛ばせば、ハイライトに当たる確率が上がるので、ノイズが減ります。
  • 方法2:ハイライトをぼかす
    • ハイライトを少し大きく、柔らかくすれば見つけやすくなり、ノイズが減ります。(たとえば、Glossy FilterLight Falloff を使う)
  • 方法3:レイのバウンス数を減らす
  • 方法4:デノイズする

方法2,3などは初心者には難しいため、方法1と4を先に解説します。

ちなみにサンプル数を増やすのはEEVEEもできる対策ですが、後のものはほぼCyclesでしか設定できません。EEVEEのノイズ除去については以下の記事で少し触れています。

スポンサーリンク

❶サンプル数を増やす

レンダープロパティ > Sampling > Render > Max Samples

Max Samples
最終レンダリングでピクセルごとにトレースするパスの数。数値を大きくすると、レンダリング時間が長くなる代わりに、画像がきれいになります。

ビューポートでもサンプル数を上げたものを見たいときはView port > Max Samples数を上げてください。通常ビューポートはプレビューとして使うのでレンダリング時のサンプル数より少なく設定されています。

サンプル数を変えて比較。

Max Samples2048でもよく見ると細部はぽつぽつしてノイズが出ています。サンプル数を上げても細部にノイズが出ることはあるので、最終的にデノイズ作業はした方がいいですね。

スポンサーリンク

❹デノイズする

  • レンダープロパティでチェックを入れるだけでできるデノイズ
  • コンポジットでデノイズ

の二種類があります。結果はほぼ同じなので、他にもコンポジットでエフェクトを使うという方はコンポジットを使って、そうでない方はレンダープロパティで設定すればいいと思います。

レンダープロパティでデノイズ

コンポジットを使わずにデノイズする方法です。

レンダープロパティ > Sampling > Render > Denoise

Denoiseにチェックをするだけです。レンダリング時に自動でデノイズしてくれます。(ビューポートでもデノイズした画像を見たい場合はViewport > Dnoiseにもチェックします。)

レンダリングの時短技?

通常、Blender(Cycles)は全ピクセルに同じ数だけサンプル(計算)を行います。でも、実際はもう十分キレイに見える部分もあるので、しきい値を決めて、どこまでノイズが減ったらサンプリングを終了するかを設定できます。

それがNoise Threshold(ノイズのしきい値)です。チェックを入れると有効になります。

数値が小さいほど、高品質(でも時間がかかる)。
数値が大きいほど、速いけどザラつく可能性あり

しかしデノイズすると、上図を見て分かる通り、1がかなりノイズがなくなっています。色が少し変化していますが、結果が綺麗になっています。0.1の方がノイズが酷いですね。一時期Noise Thresholdの値を1にしてレンダリング時間を速くするという手法をよく使っていました。色の変化(もちろん他にもいろいろ精度は犠牲になっていると思います)が気にならなければ時短技として使ってみてもいいかもしれません…。

コンポジットでデノイズ

準備

コンポジットでデノイズをするために、まずレンダープロパティでRenderのDenoiseにチェック。

ビューレイヤープロパティでpasses > Denoising Dataにチェックを入れてください。

Compositingのエディタに移動します。

  • Use Nodesにチェック
  • Shift + AViewerノードを追加
  • Shift + ADenoiseノードを追加
    • Render Layersから出てるNoisy ImageをImageへ。Denoising NormalをNormalへ。Denoising AlbedoをAlbedoへつなぎます。
  • Render Layersノードの一番下ViewLayer横のアイコンをクリックして現在のシーンをレンダリングします。(カメラを良い位置にセットしてください。)

これでノイズが除去されました。

後ろのプレビューを拡大縮小したい方は右側Viewのタブを開いてZoomの値を調整してください。

一応コンポジットを使うメリットとして、Noisy Image出力があるのでデノイズ前とデノイズ後の画像と見比べることができます。

Render LayersノードのImageから出ているのはレンダープロパティで設定したデノイズ機能でノイズ除去された画像です。むしろNoisy Imageの方が元の情報を劣化させずに保持しているので、デノイズするときはNoisy Image出力を使った方がいいと思います。(違いはあんまりわからなかったけど)

レンダープロパティ設定で、ほぼ同様の設定が行われているため、コンポジットのデノイズノードでノイズ除去された画像と、レンダープロパティでノイズ除去された画像の違いはほぼ違いがわかりませんでした。

マルチパスデノイズ

さらにクオリティを上げ、綺麗な画像を出力するとき使われるのがマルチパスデノイズという手法です。

これは、直接光、間接光、直接光沢、間接光沢…などのレンダーパスをレイヤーごとに出力して、それぞれにデノイズをかけて合成します。

レンダーパスの理解と、合成のスキルが必要で難易度が高いです。自分もまだやったことないので今回は触れません。

初心者のうちは、以上のノイズ軽減対策をすれば十分だと思います。以下2や3の手法は少し中級、上級者向けです。

スポンサーリンク

❷ハイライトをぼかす

Use nodesにチェックでライトにマテリアルシェーダーを使うことができます。

Light Falloffノードを追加し、QuadraticをEmissionのStrengthにつなげます。Smoothを上げていくことでノイズが軽減されます。

左図:ファイアフライと呼ばれる、ぽつぽつ白い光点のノイズが出来ている

Light Falloffのスムーズ値を調整し、光が近くに当たったときの強さをほどよく抑えることで、(明るさは減少しますが)ノイズを軽減できます。

なぜファイアフライができるの?

  • 現実世界では、光は距離の2乗に反比例して弱くなる。
  • でも距離が 0 に近づくと、数式的には光の強さが無限大になってしまう(=すごくまぶしい点になる)。これがファイアフライ(白いノイズ)の原因になりやすい。
  • 特に間接照明(反射光)で、まれにだけ強い光が当たると、ランダムな白い点になる。
スポンサーリンク

❸レイのバウンス数を減らす

レンダープロパティ > Light Paths の右のアイコンから、バウンス数設定のプリセットがあります。Limited Global Illuminationにセットするとバウンス数が低くなり、ノイズが軽減されます。

が、画像の精度が落ちるのとシーンが暗くなりがちなため、どうしても他の手段でノイズが軽減されなかったときとかに設定した方がいいんじゃないかと個人的には思います…。

スポンサーリンク

まとめ

他にもBlenderのマニュアルにノイズ軽減の設定方法などが書いてあります。あまり聞いたことないような手法がまだまだあるみたいです。

英語だし、わりと内容が難しいんですよね。

そもそも相当クオリティを求められる作品じゃなかったら、この記事内で触れたノイズ除去法とかで十分綺麗になると思います。どんなに完全にノイズ除去しても、結局Youtube動画として見ると全然わからなかったり、むしろノイズがある動画の方がくっきりして見えたりするんですよね…。

結局細かいところまで見るといっても、持ってるPCとかネット環境に依存してしまうところがありますね。趣味だったり練習のうちはあまり気にしないでいいんじゃないかと思います。