使用ソフトウェア | バージョン | 備考 |
---|---|---|
Unreal Engine | 5.3.1 |
UE5のムービーレンダーキューで書き出し時、どうしても影にノイズが乗ってしまうという現象に遭遇。
この記事ではこれをどのように解決したのかという点を解説する。
この件は私が仕事で検証した内容ですが、会社よりBLOG記事化の許可を頂けたこと、Epic公式のスタッフ様と直接Zoomでお話できたこと、この場を借りて感謝いたします。
UE5はライティングやシェーディングに関してとても細かい設定がさまざま存在する。
この記事はその中でも私が「効果が高い」と判断したものを掲載している。
この問題に関する設定を徹底的に掘り起こす記事ではないので注意。
この記事はLumenを使用している前提とする。
設定によっては効果がないかもしれないので今回のプロジェクト設定を掲載しておく。
この設定でLumenをオンにしている。
※サムネイルは画質が悪いのでクリックして拡大してもらうとわかりやすい。
斜めに鉛筆を走らせたようなノイズが影に出ている
jpg圧縮による劣化もあるが、それ以上にハッキリとノイズが出ている。
実際に仕事で使用している映像は使えないので、こちらは私個人が制作したプロジェクトで再現したもの。
ムービーレンダーキューの設定にてAnti-aliasing
を入れておいてRender Warm Up Frames
をオンにする。
また、下部のRender Warm Up Count
に適当な数字を入れる。
この数字は100フレのようにもっと長くしたほうがよいかもしれないとのこと。
下部のRender Warm Up Count
, Engine Warm Up Count
に数値を入れておくとシミュレーション系を事前に計算してくれる。
逆にこれが入ってないと映像がスタートした時点でシミュが大きく暴れて使い物にならなくなることが多い。
つまりこの設定をいれておけば、シミュレーションが落ち着くのでキレイに動画をスタートさせることができる
更にここにRender Warm Up Frames
のチェックが入っているのが重要!
ここにチェックが入るとどうやら事前に光の反射も予備計算するようで、なんとこれだけで影のノイズが一気にキレイになる。
次がサンプル
対策前 | 対策後 |
---|---|
拡大してみてもらった方が良いが、よくみるとサムネイルでも十分わかる。
ここでは特に境界線を引っ掻いたようなザラザラが取れている。
私のテスト範囲ないでは、これは単一のフレームを書き出すときには有効な処理だが...
動画で書き出す場合、結局後ろの影はワームアップありとなしで変わらなかった。
あくまで動画最初の影をキレイにする程度の効果しかないと思われる。
ライトそれぞれの設定にSamples Per Pixel
という設定がある。
ここを上げることによって影が美しくなる。
ここの設定は8 > 16 > 32 > 64 > 128...
のように倍々にするとのこと。
Sample 1, Warm Upなし | Samples32, Warm Upなし |
---|---|
Warm Upを入れることなく自然な影になっている。
ただ、まだノイズ感はのこる
上げすぎると重くなるそうなので注意。
個人的には32より上げても効果が薄いイメージ。
では1と2を組み合わせた例
Samples32, Warm Upなし | Samples32, Warm Upあり |
---|---|
ここでかなりキレイになった。
更にムービーレンダーキューの書き出し設定にあるAnti-aliasing
の二種
Spatial Sample Count
, Temporal Sample Count
を増やしアンチエイリアスをかけると更に影が美しくなる。
1,2を組み合わせ | 1,2,3を組み合わせ |
---|---|
更に一歩美しくなっているのがわかる。
アンチエイリアスをかけると一気にレンダー時間がかかるので注意しよう。
また、こちら2種類あるが違いは次の動画で解説してくれているのでこちらを参考にしてみてほしい。
次の動画ではTemporal Sample Count
を16にしてSpatial Sample Count
は1のままにするのがほとんどだとのこと。
フレーム間の動きに対するブラーはTemporal Sample Count
、1フレームごとのアンチエイリアスはSpatial Sample Count
と覚えればよいのではないだろうか。
ひとまず私が分かる範囲でサクッとできる影ノイズ対策は以上。
影のノイズのみならずライト全般に関して美しく描画する効果があるので覚えておいて損はないと思う。