執筆バージョン: Unreal Engine 5.5
|
マテリアル内でテクスチャを揺らしたり、回転させたりなど動かすことは多いと思います。
その時に何か滲んでしまうなぁ?となったことはありませんでしょうか?
今回はその原因と対策について紹介しようと思います。
・現象を確認してみる
UnrealEngineは5.2以降のバージョンのものを用意してください。
テクスチャを動かしているマテリアルを作りましょう。
回転させるテクスチャは現象を確認しやすいように細かい模様が入っているものが望ましいです。
以下の例ではエンジンに入っている格子模様のテクスチャ(T_1x1_Grid)を使いました。
以下のようにRotatorを使ってテクスチャを回しているマテリアルを作ります。

レベルにPlaneを配置して作成したマテリアルを適用してみましょう。
そうすると以下のようなにじんだ状態になるはずです。
・にじんでしまう理由
このにじみの原因は、UE5.2以降デフォルトで設定されているAnti-Aliasing MethodがTemporal Super-Resolution(以下TSR)になっているためです。
アンチエイリアスのタイプがどうなっているかはProject Settings > Engine > Rendering > Anti-Aliasing Methodから確認できます。
なぜTSRでマテリアルがにじんでしまうかと言うと、TSRその瞬間のフレームだけではなく、時間経過で画面の情報を蓄積させて画質を良くしようとする仕組みと、マテリアル内で起きている動きというのが相性が悪いためです。
TSRは画面に変化があったかどうかを物体が動いたかどうかで認識しています。
そして、マテリアルを回した際に、オブジェクトは実際回っていません。その部分を「時間経過による変化なし」と認識してしまい、画像が回っていることを考慮せずに処理を掛けてしまうためににじみが発生してしまいます。
公式ドキュメント:テンポラルスーパー解像度(TSR)
・にじみの対策その1 TSRをコンソールコマンドで調整する
TSRのコンソールコマンドにr.TSR.ShadingRejection.Flickering.Periodというものがあります。
TSRには物体の動き以外にも前後のフレームの絵が変化したかどうかを画像の輝度で判断する方法があります。
その変化したとする輝度の閾値を低く調整することによって、画像の変化が速いときに対応しやすくなります。
r.TSR.ShadingRejection.Flickering.Periodのデフォルト値は2ですがこれを1にしてみます。
すると以下のようににじみが少なくなります。
コンソールコマンドはエディタ下部にあるCmdと書かれた欄に入れてエンターを押すと反映されます。

ただしこれはレンダリング自体に影響を及ぼしているので注意が必要です。
特定のマテリアルだけこの効果を掛けたい場合は次の対策がおすすめです。
公式ドキュメントのコンソールコマンドの項、r.TSR.ShadingRejection.Flickeringの欄に詳細が書いてあります。
・にじみの対策その2 Material設定のHas Pixel Animation(UEVersion5.4以降)
対策1と同じ様なことをマテリアル単位でやってくれるオプションがあります。
それがHas Pixel Animationです。
この機能はUnrealEngineのバージョンが5.4以降に追加された比較的新しいものです。
設定場所はマテリアルエディタのDetail > Material > Advanced > Has Pixel AnimationのチェックボックスをONにします。

見た目は以下のようになります。2枚の回るチェッカー板がありますが、右側にだけこのオプションを入れてあります。
オプションを入れた右側だけにじみが抑制されているのがわかります。
(※違いが分かりやすいように対策1のr.TSR.ShadingRejection.Flickering.Periodは2に戻しています)
にじみ対策1と2では完全ににじみを取り除くことが出来ていません。
これがどうしても許せない!という方は以下2つの方法があります。
・にじみの対策その3 オブジェクトを回してしまう
にじんでしまう原因として、マテリアル内で動いているけど、オブジェクトは動いてないという状態がTSRと相性が悪いと前述しました。
ですので、実際にオブジェクトが動いてしまえばTSRはちゃんと物体が動いているので正しく処理を掛けてくれます。
以下はシーケンサーで回転値を与えている状態です。対策1、2よりもグリッドがきれいに見えてます。
・にじみの対策その4 アンチエイリアスタイプを変更する
最終手段としてアンチエイリアスタイプの変更も対策になります。
TSRは優秀ですが、どうしても作っているものとの相性が悪い場合はこちらも検討してみましょう。
おすすめのFXAAに設定したものが以下です。(すみませんがアンチエイリアスタイプについて個別に紹介すると大変なことになるので省きます。)
TSRはとても効果的なものですが、苦手なものもあるのでうまく付き合っていけると良いですね。