UE4 Niagara ソートがうまくいかない
お久しぶりです、以前書いたブログに使用した画像やGifが消えてしまいブログ辞めたんですが、ue4の不明点などをまとめて共有しようと思ったので不定期で再開します。
-
今回の問題
複数のNiagaraシステムを描画した際、ソートの挙動がおかしい
なんでNiagaraを複数使用した際のエフェクトの描画がおかしいんだ?(動画内の赤い炎)
— Nakatani:Effect (@gld_huehelC4) 2020年12月5日
Why is there something wrong with the rendering of effects when using multiple Niagara?🤔 (Red flame in the video)#UE4 #UE4Study #Niagara pic.twitter.com/dHZwqdgB23
-
解決策
シーン上にあるエフェクトを選択し、詳細のレンダリングタブにあるTranslucency Sort Priorityの値を変更する
公式ドキュメント
とりあえず時間がない人のために簡単に書きました
この問題に関して調べたことをまとめます
今回の問題点
前提として基本的に半透明のマテリアルは優先的に描画される。
複数のNiagaraエフェクトを同時に描画した際、そのシーン上で半透明のマテリアルが同じ描画優先度であったためエフェクトの描画がチラついてしまった。
半透明優先問題といってリアルタイムエフェクトを製作する際に頻繁に起きる問題らしいですね(現場で働いてるとき僕もこの問題が発生しました泣)
そもそも前提としてゲームなどで描画される半透明のものは基本的にピクセル単位の深度情報を持っていないため、画面内で描画の優先を決めるのに苦労するらしいです。
ただエフェクトではパーティクル単位での描画の優先度を決定することができます。
NiagaraのSort Order Hint はエミッタ単位、かつそのNiagara System内でのソートを変更するためのものです。(デフォルトではエミッタのスタック順)
ソート順番の数値が下がるほど後ろに描画されます。
今回雲のエフェクト(Meteor_intro)のソートを-10くらいに設定し、meteor_Systemエフェクトを20くらいにしました。
ただこのソート値は一つのNiagaraシステムの中でのみ適応されるのであって、複数のNiagaraシステムを使用した際のソート順ではないようです。
Niagara上で描画優先度の決定をすることができないので、今回はシーン上で描画の優先度を決定する、Translucency Sort Priorityという設定を使います。
今回sequencerから設定していますが、普通にシーン上に出して設定もできます。
まとめ
- Sort Order Hint→Niagaraシステム上でのソート設定
- Translucency Sort Priority→シーン上でソート設定(Niagaraシステムを複数使用した場合はこっちを使う)
今回Last of usなどのVFXの制作に携わっているWataru Ikedaさんのご協力があって問題が解決しました。本当にありがとうございました。
この記事が問題解決のお役に立てれば幸いです。