お世話になっております。UE5.8のMRGを使用した画像出力について、ご相談させていただきたいです。
<br/>
■ 発生している現象
PPM パスで出力したEXR型式の SceneColor において、下記画像のように、一部のピクセルが白飛びした状態で出力されます。(他に添付画像SceneColor.exrを参考) [Image Removed]
該当ピクセルの値をPhotoshopで確認したところ、ピクセル値が(255,255,255)となっていました。
レンダリング毎に同じ位置に発生します。
同一レンダリングで出力している以下のパスでは、同じ位置に白飛びは発生していません。
Beauty(FinalImage)
PreTonemapHDRColor
PostTonemapHDRColor
本現象は PPM パスで SceneColor を出力する場合のみに発生していると考えております。
<br/>
■ ご質問
本現象は MRG の設定不備に起因するものでしょうか。それとも UE の仕様上、想定される挙動でしょうか。
・設定不備に起因する場合は、白飛びピクセル以外を変更しない前提で、白飛びピクセルを抑えるための設定方法をご教示いただいてもいいでしょうか。
・仕様による挙動の場合は、その理由と、回避策がありましたらあわせて教えていただけますでしょうか。
<br/>
MRGのBP実装、MRG画像出力設定コンフィグファイルを新規プロジェクトにマイグレートして添付しました(プロジェクト名:MyProject_MRG)。ご参考をお願いします。
<br/>
お手数をおかけしますが、ご回答いただけましたらとても助かります。よろしくお願いします。
[Attachment Removed]
再現手順
1.UE公式の(Audi)自動車コンフィギュレーターサンプルをダウンロードし、UE5.8.0で開く。(ダウンロードが難しい場合ご連絡ください)
2.添付の”MyProject_MRG.zip”をダウンロードして解凍する。UE5.8.0で”MyProject_MRG”プロジェクトを開き、コンテンツフォルダ配下の”Untitiled”レベルを開いて、レベルブループリントの下記画像のBP設定を車両コンフィギュレーターの”CarConfigurator_Main”コピーする。 [Image Removed]
3.コンテンツ\BluePrintsフォルダ中の”NewLevelSequence2”や”TryGraph_EXR_test”を車両コンフィギュレータープロジェクトにマイグレートする。
4.MRGを正しく動作させるため、先ほど”CarConfigurator_Main”レベルプリントにコピーしたBPを修正する
5.CarConfigurator_Mainレベルでプレイする。
6.初期表示の動画が終わった後、”U”キーを押下してMRGレンダリングを実行する。
[Attachment Removed]
こちら再現を試みておりますが、再現途中の手順に手作業や曖昧な部分があり複数回のやりとりが発生してしまう可能性がございます。
差し支えなければそのまま動作する状態の再現プロジェクトをご共有頂けると、ご返答に要する時間を短縮することができます。
もし再現プロジェクトが大きくアップロードサイズ制限に引っかかるようであれば、クラウドストレージをご用意できます。ご検討いただけますでしょうか。
[Attachment Removed]
恐らく再現できました。
さてSceneColorで白飛びのピクセルが出力される件ですが、
エッジ部などの法線が変化する部分をレンダリングするとき、スペキュラの計算結果で完全に反射ベクトルが光源と正対した場合に異常に高輝度なスペキュラーを持つ特異なピクセルが現れることは良く起こり、これは一般的にスペキュラエイリアシングとして認知されています。
通常このエイリアシングは1ピクセル未満のジッタを加えたレンダリング履歴を参照する、TAAやUnrealEngineのTSRといったテンポラルAA技術によって丸められます。
しかしSceneColorはこの通常のアンチエイリアシングを加える前のサーフェスを読みだしています。
Spatial Sample Countや Temporal Sample Count設定でSceneColorにも複数サンプルのブレンドが適用されますが、単純な平均を取るため異常な高輝度のピクセルを除去できていないようです。
SceneColorの代わりにTSRが適用されたPretoonmapHDRColor等で代用が出来ないかご検討いただくのがシンプルな解決方法になります。
[Attachment Removed]