目次
はじめに
注意
UE5Preview2の現在の情報です。
今後のアップデートによりUIや機能が変更される可能性があることをあらかじめご理解ください。
砲台の射程範囲マテリアルの続きです。
まずMinDistanceMeshのスケールや位置といった情報をマテリアルに流し
その情報からマテリアルをくり抜く処理を行いたいと思います。
前話からの続きで実装しているため不明なところは第⑬回と合わせてお読みください。
解説
①マテリアルパラメータコレクションの作成
ブループリントからマテリアルに情報を渡すには
マテリアルパラメータコレクションを使うのが一般的です。
コンテンツから作成して、名前をMPC_MinMeshDataとします。

②マテリアルパラメータコレクションに変数を追加
作成したものを開くと画像のようになります。
今回は位置とスケールの情報が欲しいので(X,Y,Z)を格納できるVector型を2つ作成します。

LocationとScaleを作りました。
保存しておきましょう。

③マテリアルにパラメータコレクションの追加
前回作成したM_Distanceを開きMPC_MinMeshDataをコンテンツからドラッグアンドドロップします。すると画像のようにノードが表示されます。

LocationとScaleの2つが必要なので
もう一つ作成し、詳細からParameterNameをそれぞれ適応しましょう。

④M_Distanceにマスク(くり抜く)処理を組む
マテリアルパラメータコレクションのVectorは(RGBA)のfloat4ですが今回は(X,Y,Z)の情報しか使わないためコンポジットマスクでRGBのfloat3に変換します。

worldPositionから絶対ワールド位置を出して

SphereMaskにつなげます。
またHardnessは変数にしましょう。(変数のやり方は前回解説)

OneMinusで反転させPowerノードで境界をぼかせるようにします。

3ColorBlendノードでAlpha値から透明度を変更します。

保存してこのマテリアルは完成です。

⑤ブループリントからマテリアルパラメータコレクションに値を設定
BP_Cannonを開きます。
前回のノードの続きからノードを追加します。

SetVactorParameterValueから先ほどのパラメータコレクションを選び
LocationにMinDistanceMeshのワールド座標を入れます。

同様にScaleも入れましょう。
スケールには相対スケールを入れています。(親のスケールが変更されても問題ないようにするため)

SetVector/ScalarParameterValue
ブループリントからマテリアルパラメータコレクションに作成した変数に値を設定するノード
⑥実行と調整
MI_Distanceを開いておきましょう。

実行すると
大砲付近がマスクされていることが分かります。

試しにBP_CannonのMinDistanceの値を変更してみましょう。
それに応じてマスクする範囲が移動します。

MaxAlphaの値を変更すると全体の透明度が上がります。

ブラーの値を上げると境界にぼかしが入ります。

境界がズレるときは
Scaleの値を調整してください。

調整して自分好みの見た目に調整しましょぅ。

⑦最適化
調整が終わったらTickからの信号を切断しましょう。
砲台が移動するなどしない場合は毎フレーム呼ばれる必要はありません。

最後に
UE4やUE5向けの記事を書いています。
皆様の応援が投稿のモチベーションになりますので
コメントやTwitterのフォローなどしていただけるとありがたいです。
それではよきゲーム開発を。
