BLOGブログ

2020.09.16UE4UE/ Material

[UE4]ポストプロセスで描画したアウトラインを、半透明物でマスクする方法

執筆バージョン: Unreal Engine 4.25

ポストプロセス上でキャラクターのアウトライン描画を行う場合、

下図のように、煙や炎などの半透明物越しにアウトラインが描画されてしまって、困った事はありませんか?(私はあります)

今回はこの問題に対する、一つの解決法を解説していきたいと思います。


使うのはこちら。ポストプロセスマテリアル作成時に必ず使うノード、「Scene Texture」です。

Detailパネルから、Scene Texture id を “Post Process Input 1″に設定してください。

※一見、”Separate Translucency”という Scene Texture id から取得できそうですが、カーソルを合わせると”Not yet supported”と表示されるので、未実装のようです。

 

この”Scene Texture id”からは、下図のように “Separate Translucency RGB” の値が取得できます。

 

“Separate Translucency RGB”をグレースケール化し、アウトラインをマスクします。

 

これでポストプロセスによるアウトラインが、半透明物越しにマスクされるようになりました。

 

次に、この手法の注意点について説明します。

 

注意点①

Separate Translucency の Opacity を取得してマスクしている訳ではなく、RGBの値をグレースケールにしているだけなので、明度が低いカラーの半透明物はうまくマスクされません。グレースケール化した後の値を底上げしたりする工夫が必要です。

 

注意点②

半透明物はDOFの前後で2度描画されますが、今回の手法で取得できるマスクは “Render After DOF (= Separate Translucency)” で描画された半透明に限られます。

“Render After DOF” が “False” の半透明マテリアルはマスクされません。

用法・用量を守って、正しくお使いください。