【UE5】イラストの周囲に出現する白い線を排除する
この記事のゴール
これ(↓)を

こう(↓)する

はじめに
Unreal Engine で2Dゲームを開発している際、イラスト(スプライト)をレベルに配置すると、その周囲が白い線で囲まれる現象が発生しました。この白い線をマテリアルの改造またはプロジェクト設定の変更により出現しないようにしました。
環境
Unreal Engine 5.4.4
CLIP STUDIO PAINT PRO 4.1.4
事象
-
CLIP STUDIO PAINT PRO で描いたイラストをPNG形式で書き出します。透過情報を書き出します。


-
作成したPNGファイルを Unreal Engine にドラッグ&ドロップでインポートします。テクスチャの設定は以下のようにします。
- Mip Gen Settings: NoMipmaps
- Texture Group: 2D Pixels(unfiltered)
- Compression Settings: UserInterface2D(RGBA)
- Filter: Bi-linear
-
テクスチャを右クリック > Sprite Actions > Create Sprite によりスプライトを作成します。
-
作成したスプライトをレベルに配置します。

イラストの縁が白い線で囲まれてしまっています。
原因
不明
対処方針 -1-
マテリアルを改造します。
アルファチャンネルでRGBチャンネルをマスクするようにします。
対処方法 -1-
-
スプライトが使用しているマテリアルを調べます。

-
使われているマテリアルは「TranslucentUnlitSpriteMaterial」ということが分かったので、それが置かれているフォルダへ移動します。

-
「TranslucentUnlitSpriteMaterial」を見てみると、親マテリアルは「DefaultSpriteMaterial」ということなので、この2つをコピーします。

-
分かりやすいようにリネームします。

-
「MI_MyTranslucentUnlitSpriteMaterial」の親マテリアルを「M_MyDefaultSpriteMaterial」に変更します。

-
「M_MyDefaultSpriteMaterial」を開きます。

-
Stepノードを使用してアルファチャンネルでRGBチャンネルをマスクします。ここでは、パラメータ「AlphaThreshold」の初期値を0.95としています。最後にApplyします。

Stepノードは「y > x の場合 0」「y <= x の場合 1」を返します。
-
スプライトのマテリアルを「MI_MyTranslucentUnlitSpriteMaterial」に変更します。

-
スプライトをレベルに配置します。

イラストの縁の白い線がなくなっています。
制限 -1-
-
UMGの対処になっていない
UMGで白い線を出ないようにしようと思ってイメージにスプライトを設定しても効果はありません。
UMGでも白い線を消したい場合は、同じようにアルファチャンネルでRGBチャンネルをマスクしたUI用のマテリアルを作成する必要があります。 -
線画が黒のイラストにしか効果がない
元のイラストの周囲が黒でないと、逆に黒い線が出現する場合があります。
対処方針 -2-
プロジェクト設定を変更します。
対処方法 -2-
-
Project Settings > Editor > Texture Import > When to infill RGB in transparent white PNG を「Always」に変更します。

-
イラストをインポートします。テクスチャからスプライトを作成してレベルに配置すると白い線が現れません。
Discussion