この記事はHoudini Advent Calendar 2018 13日目の記事です。
##はじめに
画質を維持しつつレンダリング時間を短縮することは、常に関心事だと思います。
1年前、2017年12月に発表されたNVIDIAのOptiX denoiserを使用したレンダリング時間に感動を覚えました。
画質はともかく、速いことは良いことです。
しかし、当たり前すぎるのかOptiXについての記事はあまり目にしません。
どの程度ノイズが軽減され、画質はどうなるのか比較してみます。
【公式】NVIDIA® OptiX™ AI-Accelerated Denoiser
##環境
- Houdini indie 17.0.352
- REDSHIFT 2.6.26
- Windows 10
##画質の比較
###静止画
画質を比較します。
画像は1920x1080pxから等倍で切り出しています。
-
Progressive Rendering passes 1024
ノイズはかなり減少していますが、まだザラつき感が少しあります。 -
OptiX、Progressive Rendering passes 32
ザラついたノイズは軽減されましたが、完全ではありません。
エッジの部分ではピクセルが溶けたような不鮮明な状態が見られます。
被写界深度によりボケている部分は、影部分の階調がジャンプしているような外観です。
OptiXのセッティングはデフォルトのままです。
ノイズ低減の最適なパラメータを探すとよりよい結果が得られる可能性があります。
しかし、画質の向上を求めるのであれば、AIによる学習から結果を出力するOptiXのデノイズは本質的な解決にはならないと考えます。
###アニメーション
GIF画像の簡易アニメーションで比較します。
比較対象は次の2つです。
- OptiX、Progressive Rendering passes 32
- Progressive Rendering passes 1024
上のGIF画像は1920x1080pxから640x360pxへ33%縮小しています。
この状態でもディティールが失われモヤモヤとしている様子が見られます。
上のピクセル等倍サイズでは、ノイズが軽減された代わりに何が起きているのかがよくわかります。
各フレーム間で処理が連続していないためだと思われる、ちらつきが発生しています。
サンプル数が少ない場合とは違う種類のノイズです。
レンダリング時間
OptiXの最大の利点はレンダリング時間の短縮とノイズ低減です。
しかし、品質の向上とレンダリング時間のトレードオフはOptiXでも同じです。
レンダリング時間は環境によって異なるため詳細な比較はしていません。
筆者の場合、作例動画の出力で1フレームあたり、
- パス数1024→約300秒
- パス数32+OptiX→約30秒
程度になっています。
静止画
OptiXの出力品質を上げたければインプットの品質を上げる必要があり、それは多くの場合レンダリング時間の増加を意味します。
静止画の場合、アニメーションに比べ一枚あたりにかけられるレンダリング時間が長いため、サンプル数増加など根本的な品質向上によりOptiXを使わずともノイズ低減は可能な場合が多いのではないでしょうか。
どうしてもレンダリング時間がかけられないなど、かなり限定的な場面以外ではOptiXの出番はないと思います。
アニメーション
アニメーションの場合は、前後のフレーム間でOptiXの処理結果がつながらないとちらつきが出てしまうため一定以上の品質は望めないと考えます。
静止画と比較して出力が必要な枚数が飛躍的に増えるため、レンダリング時間も比例して長くなりますが、パッケージ品質のアニメーションを出力するにはOptiXを使わない手法を選ぶべきだと思います。
OptiXの使いどころ
品質に多少の難があっても、レンダリング時間が短いことが求められる場合であればOptiXは効果を発揮しそうです。
###アニメーションのドラフト出力
すぐに考えられるのは、アニメーションのドラフト出力を見せる必要がある場合でしょうか。
最終出力にならないことがわかっており、変更または破棄される前提の(品質を求められない)アニメーションを複数出力して比較する場合などには効果的だと思います。
他にも良い活用法があるかもしれません。
##今後の可能性
OptiXはAI技術を使用したデノイザーであるため学習が可能です。
NVIDIAは数万枚の画像を使用して学習したとされますが、今後も学習済みモデルのアップデートによって精度が上がる可能性があります。
アニメーションの時間軸方向も含む学習が可能になれば、実用に耐えるものになるかもしれません。
今後のさらなる改良を期待したいです。