9
7

More than 3 years have passed since last update.

UE4 の Editor Utility Blueprint でマテリアルインスタンスを大量作成する

Last updated at Posted at 2020-05-02

はじめに

UE4はアセットの作成やレベル内への配置をブループリントで自動化することができます

ブループリントを使用してエディタをスクリプト化する

ブループリントが便利なのは、プロジェクトのランタイム ゲームプレイの作成だけではありません。Unreal Editor 内でプロジェクト コンテンツを操作するときにも、非常に効果的なツールです。エディタ内でブループリント グラフをオンデマンドで実行して、アセットを使用したり、レベル内にコンテンツを配置したり・・・

この機能を使って色違いのマテリアルインスタンス139個を自動で作成してみました
image.png

環境

Unreal Engine 4.24.3
Unreal Engine 4.25.0(2020/5/6 追記)

材料の準備

Editor Scripting Utilities プラグインを有効にする

設定 > プラグイン から Editor Scripting Utilities を有効にしエディタを再起動します
image.png
このプラグインを有効にすることでブループリントのノードの選択肢に Editor Scripting が追加され、アセットの作成やレベル内への配置をブループリントで行うことができるようになります
image.png

マテリアル、マテリアルインスタンスを作成

マテリアルを新規作成し名前をMT_Baseとします
image.png

作成したマテリアルを開く > VectorParameter を作成し名前をBaseColorにして ベースカラー につなげたらマテリアルを保存します
image.png

コンテンツブラウザで MT_Base を右クリック > マテリアルインスタンスを作成 をクリック。作成したら名前をMI_Baseにします
image.png

自動作成するマテリアルインスタンスの保存場所としてColorMaterialsというフォルダを作成します
image.png

色テーブルをCSVで作成

下記のようなCSVファイルを作成しColorTable.csvという名前で保存します
image.png

構造体を作成してCSVファイルを読み込む

コンテンツブラウザでSTR_ColorTableという名前で構造体を作成 > 下記のように項目を追加して保存します
image.png

ColorTable.csv をコンテンツブラウザにドロップするとダイアログが表示されるので、データテーブルの列の種類に STR_ColorTable を選択しOKをクリックします
image.png

ColorTable というデータテーブルが作成されます
image.png
image.png

ブループリントの作成

エディタで呼び出せるカスタムイベントを作成する

コンテンツブラウザの新規作成で Editor Utilities > Editor Utility Blueprint を選択します
image.png

AssetActionUtility を選択し
image.png

BP_MI_Createという名前にします
image.png

BP_MI_Create を開く > カスタムイベントを作成しCE_MI_Createという名前にし、エディタで呼び出すにチェックを入れます
image.png

BP_MI_Createを一旦保存 > コンテンツブラウザ内のアイテムを右クリックすると Scripted Actions というメニューがありその中に CE MI Create ができていることを確認します。ここからイベントを呼び出すことができるようになります
image.png
確認出来たら再度 BP_MI_Create を開きます

マテリアルインスタンスを自動作成する

Get Data Table Row Names で ColorTable を取得し、For Each Loop と 「テーブル行を取得」 をつなげていきます
image.png

外側の列 ピンからワイヤーを引き出し STR_ColorTable を分解します
image.png

Append ノードでフォルダパス /Game/ColorMaterials/ とColorNameを合体してマテリアルインスタンスの保存パスを作成します
R,G,Bを255で割った値を使ってMakeColorで色を作成します
image.png

Duplicate Asset ノードを作成し Source Asset Path を /Game/MI_Base/ として複製元に準備作業で作成したマテリアルインスタンスを指定します
image.png

Cast To MatrialInstanceConstant と Set Material Instance Vector Parameter Value をつなげます。
Parameter NameにBaseColorと入力します
image.png
これでブループリントが完成です

エディタからブループリントを実行

コンテンツブラウザのアイテムを右クリックし Scripted Actions > CE MI Create をクリック
image.png

ColorMaterials フォルダに139個のマテリアルインスタンスが自動作成されました!
image.png

まとめ

作成したブループリントの全体像
https://blueprintue.com/render/57me-i7-
image.png
スクリプティングによりエディタ内作業を自動化して大幅な効率化やミスの防止に役立ちそうです!

参考

Unreal Engine 4 ドキュメント
エディタのスクリプティングと自動化
ブループリントを使用してエディタをスクリプト化する
スクリプト アクション

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7