執筆バージョン: 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” の半透明マテリアルはマスクされません。

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