Study Works

YuukiHiraiの勉強したものを上げていきます。

初心者向けUE4エフェクトの作り方 炎

今回作成するエフェクトは炎のエフェクトです。

youtu.be

↓のUnityのエフェクト本を参考にUE4.11で再現してみました。

www.shoeisha.co.jp

1、エフェクトで使用するテクスチャを用意します。

今回は私が制作したテクスチャを使います。
(自由に改変、使用してもらって構いません。)

↓ダウンロード先

Textures_Fire

 

2、これら三枚のテクスチャをプロジェクト内にインポートします。

 

3、それぞれのテクスチャよりマテリアルを作成します。

f:id:yuukihirai0331:20160516220155p:plain

 

4、それぞれのマテリアルを開きます。

f:id:yuukihirai0331:20160516220714p:plain

このような画面が出ます。

 

5、画面左下の詳細パネルのブレンドモードを「加算」にし、

シェーディングモデルを「Unlit」にします。

f:id:yuukihirai0331:20160516221142p:plain

今回のマテリアルにはアルファ値を加えるため加算にしています。

そして、エフェクトにはシェーダーをかけないようUnlitにしています。

 

6、画面右上のバレットより「ParticleColor」をマテリアルノードにドラッグ&ドロップします。

f:id:yuukihirai0331:20160516223617p:plain

ParticleColorはエフェクトの色彩を変えるために用意します。

 

7、Mキーを押しながら左クリックして「Multiply」を出します。

f:id:yuukihirai0331:20160516224110p:plain

Multiplyは2つの値(A,B)を掛け合わせます。

 

8、これらを使い、図のようにノードを組みます。

f:id:yuukihirai0331:20160516224717p:plain

 

9、画面左上の「適用」を押します。

f:id:yuukihirai0331:20160516224940p:plain

 

10、それぞれのマテリアルごとに4~9を行い、3つのマテリアルを作成します。

 

11、「パーティクル」を作成します。

名前は「P_Fire」にしておきます。

f:id:yuukihirai0331:20160516225552p:plain

 

12、P_Fireを開きます。

f:id:yuukihirai0331:20160516230000p:plain

 

13、炎の原型を配置します。
Required」を選択し、「Texture_Aura」で作成したマテリアルを選択します。

f:id:yuukihirai0331:20160516230224p:plain

これで表示されるパーティクルに作成したマテリアルを設定しました。

 

14、炎の密度を増やします。

Spawn」を選択し、「Rate→Distribution→Constant」を「40」に設定します。

f:id:yuukihirai0331:20160516231230p:plain

Rateは1秒間にX個出現させるのかを設定できます。

 

15、炎が自然に消えていく感じにします。

Lifetime」の「Min」と「Max」を「0.5、1.2」に設定します。

f:id:yuukihirai0331:20160516232145p:plain

Distribution Float Uniformとは最小値と最大値のうちからランダムに値を設定します。

 

16、さらに自然な形に整えていきます。

Initial Size」のStart SizeMax[50,0,50]にし、Min[25,0,25]にします。

f:id:yuukihirai0331:20160517093915p:plain

これで縦と横のサイズを50~25の間のランダム値にすることで不自然さが多少解消されました。

 

17、炎の色彩を加えていきます。

Color Over Life」を選択し、「Constant Curve」の「Points」を追加して0~3を作ります。

f:id:yuukihirai0331:20160517100254p:plain

 

18、図のように0~3に設定していきます。

0はアルファ値を0に設定します。

f:id:yuukihirai0331:20160517102526p:plain

 このようにすることで時間の経過に伴い、黄色から赤に色が変化します。

 

19、炎のサイズを少しずつ小さくする。

エミッタ画面にて「Size」より「Size By Life」を選択します。

f:id:yuukihirai0331:20160517152800p:plain

 

20、「Size By Life」を選択し、「Out Val」を図のように設定します。

f:id:yuukihirai0331:20160517161318p:plain

Pointsの0にOutVal[1,1,1]を入れ、Pointsの1にOutVal[0,0,0]を入れることで出現時からだんだん小さくなるようになっています。

 

21、炎の出現位置をランダムにする。

エミッタ画面にて「位置」より「Initial Location」を選択します。

f:id:yuukihirai0331:20160517162223p:plain

 

22、「Initial Location」を選択し、「Max」と「Min」を設定します。

f:id:yuukihirai0331:20160517162539p:plain

Start Locationにより、炎の出現位置をランダムにすることで自然な感じになりました。

 

これにより、炎のメインとなる部分は完成しました。

これからアレンジを加えていきます。

 

23、炎に舞う火の粉を作っていきます。
エミッターからエミッタを複製します。

f:id:yuukihirai0331:20160517163812p:plain

 

24、火の粉の原型を配置します。

13と同じく「Required」を選択し、「Texture_Par」で作成したマテリアルを作成します。一応、わかりやすくするため最初に作った炎の原型は非表示にします。

f:id:yuukihirai0331:20160517164345p:plain

 

25、14と同じように「Spawn」を選択し、「Rate→Distribution→Constant」を「100」に設定します。

 

26、15と同じように「Lifetime」の「Min」と「Max」を「1.0、2.0」に設定します。

 

27、「Initial Size」のStart Size[6,6,6]にします。

f:id:yuukihirai0331:20160517165055p:plain

 

これにより炎の火の粉が舞う演出が出来ました。
最後に炎の煙を作っていきます。

 

28、煙の演出を加えていきます。

23と同じく炎のメインを複製し、13と同じくRequired」を選択し、「Texture_Smoke」で作成したマテリアルを選択します。

 

29、14と同じようにSpawn」を選択し、「Rate→Distribution→Constant」を「」に設定します。

 

30、15と同じように「Lifetime」の「Min」と「Max」を「1.0、1.2」に設定します。

 

31、Initial Size」のStart Size図のように設定します

f:id:yuukihirai0331:20160517171028p:plain

 

32、Initial Velocity」の「Start Velocity図のようにします。

f:id:yuukihirai0331:20160517171446p:plain

 

33、Color Over Life」を選択し、「Alpha Over Life」の「Points」を追加して0~2を作り、図のように設定します。

f:id:yuukihirai0331:20160517172506p:plain

 

34、Size By Life」を選択し、Points」の0~1を図のように設定します。

f:id:yuukihirai0331:20160517173030p:plain

 

これで煙の演出が完成しました。

f:id:yuukihirai0331:20160517173536p:plain

 

まとめ

・「Required」は原型となるパーティクルの設定を決めます。

・「Spawn」は出現数などの設定を決めます。

Lifetime」は生存時間の設定を決めます。

Initial Size」は出現時のサイズを決めます。

Initial Location」は出現時の位置を決めます。

Color Over Life」は時間の経過に伴い、色彩の変化を設定できます。

Size By Life」は時間の経過に伴い、サイズの変化を設定できます。

・"Distribution Float Uniform"は最小値と最大値を設定することでそれらの値のランダム値を設定できます。

 

お疲れ様です。

参考にしていただきありがとうございました。