ゲームエフェクトデザイナーのブログ | A Real-Time VFX Artist's Blog

About Making Materials on UE, Making Tools with C#, etc

UE5 テクスチャの Preserve Border とエッジの処理

@O_Y_G さんの記事に続いて「UE Advent Calendar 2023」5 日目の記事になります!

UE4 の頃から存在する、あまり知られてないであろうマイナーなプロパティ(でもエフェクトには重要な)「Preserve Border」について取り上げます!

Preserve Border とは?


テクスチャエディタの「Level Of Detail > Advanced」内にあるプロパティで、画像の端に背景色を確保するようにテクスチャに加工処理を入れてくれる機能です。

↓ こちらが「Preserve Border」が無効な状態での各ミップレベルを並べたもの。

↓ こちらが「Preserve Border」を有効にした場合です。ミップレベルが上がっても、黒いエッジをキープしてくれていることが分かります。

ちなみにこちらの処理は、恐らくチェックボックスを ON/OFF した時点でテクスチャに適用されるだけで、ランタイム時に余計な処理は入らないと思います。

何のために利用するのか?


エフェクトのテクスチャは、スプライトシートやタイリングするための模様のようなテクスチャ以外に、この UE のロゴのように何か単体の絵柄である場合も多いです。

その際に、ミップレベルが上がるにつれ周囲の余白が無くなるのを防ぐのに役立ちます。↓ こちらの動画は、左が「Preserve Border」OFF・右が ON です。

 

そもそも、なぜエッジに抜きが必要なのか?


テクスチャのタイリング方式が Wrap の場合、画面に表示した際にフィルタリングにより絵がボケてエッジの端に反対側の絵が出てきてしまいます。

そのため、特にアルファ用のテクスチャは古来より周囲に抜きの領域を持たせることがエフェクト界では鉄則です。ミップマップが無い時代は1ドットあれば大丈夫でした。

ただし昨今、自動でミップマップが生成される都合上、少々余白を入れたところでミップレベルが上がるとすぐに余白が無くなってしまいます。

タイリング方式を Clamp にすれば 1 ドットの抜きでも問題ないかというと、やはりミップレベルが上がると抜きが無くなるため解決にはなりません。

↓ こちらは Clamp 設定での比較です。

理想を言えば、全ミップレベルに最低1ドットの抜きが入れば良い訳です。そして、そんなミップマップを手作業で作らずとも「Preserve Border」を有効にするだけで、ミップレベルが上がっても抜きの黒い領域を確保してくれるという訳です。便利!

カメラから離れると消えてしまう問題


ただし良いことばかりではありません。。

ミップレベルが最も高い場合に「Preserve Border」が ON の場合はグレーで、OFF の場合は黒で塗り潰されていることに注目してください。

▼ Preserve Border = OFF

▼ Preserve Border = ON

つまり「Preserve Border」を有効にしたテクスチャを Opacity に利用していた場合、カメラからある程度離れると完全に消えてしまうという問題に繋がります。

上の動画の例ではこれくらい離れてから消えるなら問題なさそうに見えますが、テクスチャの絵柄や使用ケースによっては、離れた位置の粒子が全く見えないことが目立って「あれ?なんだこれ?」っとなります。

そこで「Texture Tools Exporter for Adobe Photoshop」を使い、真っ黒になるミップレベルは切り落としてしまうのが良いのではと思っています。(まだ試してません)

 

アルファ付きカラーテクスチャの場合はどうなるのか?

結論だけ書くと RGBA 全てのチャンネルに対して一律で「Preserve Border」が適用されているようです。なので残念ながら「アルファチャンネルにだけ Preserve Border を適用したい」といったことはできなさそうです。

Wrap と Clamp の設定による影響にご注意


Preserve Border」は抜き‥つまり「黒」を必ずエッジに入れる処理‥という訳ではありません。エッジ付近の色をキープするような印象です。

例えばこちらのように白と黒が半々の画像の場合で「Preserve Border」無しの場合、全体的にボケていきますが‥(白が膨らんで白優勢な結果になる印象がありますが)

↓「Preserve Border」を有効にするとエッジの色をキープしてくれます。ただしタイリング方式が Wrap だと反対側の色が入り込んできてしまい微妙な結果になります。

↓ タイリングを Clamp にするとこのように想定通りの良い結果になりました!

上下左右の余白全てが同じ色なら Wrap でも問題ないですが、こちらのようなケースでは Clamp にした方が良さそうです。レアケースと思いますが、知っておいて損は無いかと思います。

以上になります!