昨日に引き続き「UE Advent Calendar 2023」3 日目の記事になります!
UE5.1 で追加された新機能「Translucent Overlay Material(透過オーバーレイマテリアル)」をあまりちゃんと試したことが無かったので UE5.3 で試してみました。
透過オーバーレイマテリアルとは?
メッシュに対して追加でマテリアルを重ねて描画できる仕組みです。
概要に関してはこちらの記事がとても分かりやすいです!
この機能の便利な点として、メッシュには複数のマテリアルがアサインされている可能性がありますが、輪郭表現・凍らせたり燃えたりといったデバフやバフの表現などをそれらのマテリアル全てに仕込む場合と比べると、普段から特殊な描画処理を走らせずに済んだり機能拡張やメンテナンスやシェーダーコンパイル等を切り離せる点がメリットなのかなと思います。本体のマテリアルを Dynamic 化する必要も無くなりますかね?
メッシュを複製して表現する場合と比べると、メッシュを複製することなく1つのメッシュに対して1パスで描画できるという点がメリットになるのかなと思います。
あと Blueprint で切り替えられたりするのも便利な感じでしょうか。
Nanite Mesh には利用できない
こちらについてはなみとんさんが記事にされています。注意が必要ですね!
「透過」オーバーレイという名称にもの申す
UE5.1 のリリースノートに「Translucent Overlay Material(透過オーバーレイマテリアル)」という名前で紹介されたため、半透明設定じゃないと上に重ねられないのかと勝手に思い込んでいましたが、Blend Mode の制限は無さそうです。
Unreal Engine 5.1 リリース ノート | Unreal Engine 5.1 ドキュメント
Unreal Engine 5.1 Release Notes | Unreal Engine 5.1 Documentation
Mesh Component 等で設定するプロパティ名も「Overlay Material」と記載されているだけなので、ミスリードしそうな紛らわしい「透過」という単語を省いて単に「オーバーレイマテリアル」と呼ぶことにしました(個人的に)。
例えば下の2つ並んだ椅子は以下のようなセッティングになっています。
- 左の椅子:
- ベースは薄いオレンジの半透明
- Overlay Material は金属質の不透明(WPO で頂点を押し出している)
- 右の椅子:
- ベースは緑の不透明
- Overlay Material は青い半透明(Lit / Forward / 金属質 / Fresnel で透過)
Blend Mode を色々と組み合わせてみた感じでは大体の場合は大丈夫なのですが、ベース側のマテリアルが Translucent の場合、Overlay Material で不透明のマテリアルを乗せても不透明のマテリアルが描画されません。
ベースの Translucent が Lit でも Unlit でも同様で、ベースが Additive なら大丈夫でした。
下の画像は、左の椅子は緑の不透明の上に水色の半透明( Opacity = 1.0 )を乗せた場合で、右の椅子はその逆です。全く同じ Depth に半透明と不透明が両方描かれた場合、半透明描画時の Depth Test の結果的には半透明は描画されるということでしょうか?
ちなみにビューポートで Overview を表示すると半透明が剥がれます。。
DumpGPU 等で描画の流れを確認したりまではしていません。半透明の上に不透明を重ねるケースなんて実際には超レアと思いますが、ちょっと気になります。。
Blueprint で確認する
こちらの動画でとても分かりやすく解説されています!
ここでは1秒置きに Overlay Material を表示/非表示する形で確認しました。
Blueprint の構成はこちらのような感じです。
という訳で本記事はこれで終了です。いかがだったでしょうか?
何か追加情報をお持ちの方は教えていただけたりすると嬉しいです!