UE4初心者が頑張ってるブログ

Unreal Engine4を使用した開発メモ、及びそれに関連することについて不定期に書いています。

UE4 マテリアルの色をランダムに変更する

最近、マテリアルの記事書いてないなぁ。

ってことで今回はマテリアルとブループリントを使用して
マテリアルの色をランダムに変更する処理を作成したいと思います。

 

実は過去記事で今回の処理と同じ処理が写ってたりします。

mozpaca.hatenablog.com

 

準備

まずはプロジェクトを作成しましょう。

今回はUE4 4.17.0を使用しています。

f:id:MozPaca:20170816171921j:plain

 

作成しました。

f:id:MozPaca:20170816172205j:plain

 

マテリアルを作成する

プロジェクトを作成できたら、

コンテンツブラウザを右クリック→Materialを選択し、

新しいマテリアルを作成しましょう。

f:id:MozPaca:20170816172250j:plain

 

適当な名前をつけておきます。

f:id:MozPaca:20170816172408j:plain

 

作成したマテリアルをダブルクリックで開き、

このようにノードを繋げます。

f:id:MozPaca:20170816172440j:plain

Vector ParameterをBase Colorにつなぐシンプルなものです。

 

Vector ParameterのParameter Nameは何でも良いのですが、

今回は分かりやすくBaseColorとします。

f:id:MozPaca:20170816172549j:plain

 

これでマテリアルは完成です。

 

ブループリントを作成する

次にマテリアルを適応するMeshを持つ、

ブループリントを作成します。

 

コンテンツブラウザを右クリック→Blueprint Classを選択します。

f:id:MozPaca:20170816172756j:plain

 

今回のParent ClassはActorにしました。

f:id:MozPaca:20170816172839j:plain

 

こちらもマテリアル同様、適当な名前をつけます。

f:id:MozPaca:20170816172907j:plain

 

作成したブループリントをダブルクリックで開き、

Add ComponentからSphereを選択します。

f:id:MozPaca:20170816172936j:plain

 

こんな感じになると思います。

f:id:MozPaca:20170816173301j:plain

 

このSphereのマテリアルを先程作成した、

M_Randomに変更しましょう。

f:id:MozPaca:20170816173322j:plain

 

処理を書いていきます。

Construction Scriptタブを開き、このようにノードを繋げます。

f:id:MozPaca:20170816173427j:plain

SphereメッシュのElement Index 0のマテリアルを

Dynamic Material Instanceとして変数に格納します。

 

※マテリアルが複数ある場合はFor Loopと配列で

 全てのマテリアルを格納することも可能です。

 

次にイベントグラフタブを開き、

このようにノードを繋げます。

変数に格納したマテリアルの色をランダムに変更しています。

f:id:MozPaca:20170816173711j:plain

Set Vector Parameter ValueのParameter Nameには

マテリアルを作成したときにつけたVector Parameterの名前を入力してください。

 

Random Floatノードは0~1の値をランダムに返してくれるノードです。

 

もしEmissive Colorで1以上の値が欲しい場合には

Random Float in Rangeノードを使用すると良いと思います。

f:id:MozPaca:20170816174154j:plain

 

配置する

作成したブループリントをレベルに配置しましょう。

f:id:MozPaca:20170816174620j:plain

 

確認してみる

このように生成された瞬間に

ランダムに作成された色が適応されていると思います。

www.youtube.com

 

余談

同様の処理を使い、Event Begin PlayをEvent Tickに

変更してみました。

f:id:MozPaca:20170816174536j:plain

 

www.youtube.com