【UE4】減衰するレンダーターゲットの作り方
はじめに
レンダーターゲットを使った作例やチュートリアルは豊富にあるものの、例えば「踏みしめた雪の上に新しい雪が積もり足跡が消える」といった徐々に消えていく効果を解説するような内容のものは非常に少なく感じました。(検索の仕方が良くなかったかもしれません)
今後、同じような表現をレンダーターゲットを用いて実現したい場合に苦労しないよう、備忘録として手順をまとめておきます。
ブログ用 pic.twitter.com/0d3VvL1tzo
— PavilionDV7 (@Dv7Pavilion) September 17, 2021
プロジェクトはこちら
プロジェクトはこちらからダウンロードできます。
https://1drv.ms/u/s!Au-8FqgREBKZjn_HwBd43IiTQw6p?e=OxUYC5
減衰するレンダーターゲット
準備
必要なアセットは
Actorクラスを継承したブループリント
Material x 3つ
RenderTarget x 2つ
の6つです。アセット名についてはスクショを参照してください。
マテリアルのセットアップ
M_Brush
このマテリアルはContent Examples(機能別サンプル)のForceSplatマテリアルをコピーして整形したものです。このマテリアルで定義した形状と色がBrushPosition(UV座標)に従ってレンダーターゲットへ書き込まれます。
BrushPosition、BrushSize、BrushStrengthは「パラメータ」として定義しています。
M_Canvas
レンダーターゲットを表示する側のアクターに適用されるマテリアルです。ここでは最も単純な例としてレンダーターゲットをそのまま表示するだけの内容にしています。
TargetRTは「パラメータ」として定義しています。
M_DampingRT
レンダーターゲットの色を5%ずつ薄くするマテリアルです。MultiplyのConst Bに設定されてる値が元の色より何%にするかを決定します。画像では0.95が指定されているので元の色より95%になった色(つまり5%薄くした)をEmissive Colorとしています。
MultiplyのConst Bを1.0未満にすることで薄くなり、値がゼロに近づくほど素早く薄くなります。1.0より大きい値では徐々に色が濃くなります。M_CanvasではレンダーターゲットをEmissive Colorにも接続しているので、1.0より値を大きくするとめちゃくちゃ眩しくなります。
ブループリントのセットアップ
用意したマテリアルを駆使して、レンダーターゲットへの書き込み、レンダーターゲットを薄める、のサイクルを繰り返して減衰するレンダーターゲットを実装しています。
変数を用意
必要な変数は次の通りです。変数名についてはスクショを参照してください。
Static Mesh Actor型 (編集可能(Instance Editable)にチェック)
Material Instance Dynamic型 x 3つ
Integer型 x 2つ
Texture Render Target 2D型の配列
Begin Playを実装する
Begin Playでは準備したいくつかの変数を初期化します。
Tickを実装する
ここで登場するノードで注意すべきものは Find Collision UVノード です。これはデフォルトでは呼び出すことが出来ず、Project SettingsにてSupport UV From Hit Resultsにチェックを入れることで呼び出すことが可能となります。
おわりに
Twitterで同様の質問をしたときに回答してくださった皆さんのおかげで、今回の記事を書くことが出来ました。ありがとうございました。