こんにちは!
最近、絵作りにちょっとひねりを加えてみようと思い、UE4上でパーティクルやエフェクトを作ることができる「 Niagara 」についてちょいちょい調べていました。
しかしながら、ほとんど日本語の情報が見つからなかったので、今回は私が学び、かき集めた知識を紹介していこうと思います。
この記事では、「漂う蛍の光」を実際に作りながらNiagaraの超基礎部分を解説していきます!
Niagaraってパーティクルの動きを決める様々なパラメーターがあって、正直初見殺しもいいところなんですが、この記事が始めたての方々に少しでも参考になったらうれしいです!
※バージョンはUE4.26です。
この記事はこういう方にオススメ
- UE4でパーティクルを作ってみたい初心者の方
- Niagaraの基本的な使い方を知りたい初心者の方
まずNiagaraはどうすれば使える?
Niagaraを使うためには、メッシュやマテリアルと同じようにNiagaraのデータファイルを作る必要があります。
コンテンツブラウザで右クリックし、「FX」の項目から「Niagara Emitter」を選びます。Niagara Emitterとは、パーティクルの形や動きを設定するための形式だと思っておけば大丈夫だと思います。

Niagara Emitterを作成すると、最初に下のような画面が出ます。UE4には最初からいくつかテンプレートがあり、その中から選ぶことができます。

今回は一番上の「New emitter from a template」を選びます。
実は、この中に今回作りたい蛍の光とほとんど同じような動きをするテンプレートがあるんですが、今回はNiagaraの操作方法を覚えるためにあえて何もない「Empty」を選びます。

Finishを押したら、名前を「VFX_Firefly」のようにつけ左クリックで開いてみましょう。

テンプレートを選ぶとこのような画面が出てきます。Niagaraでは、基本的には右側のごちゃごちゃした部分をいじってパーティクルの動きを決め、左側で動作を確認していくという作業の流れになります。
Niagaraを使い始める前に
用語解説
Niagaraを使うにあたって、以下の用語、概念を知っておくと理解が早まると思います。この記事でも多用していきます。
パーティクル
炎や煙、雪、攻撃時のエフェクトなどを表現する大量の粒子の集まりのこと。今回の例でいえば蛍の光全体(蛍の群集)のことを指します。
エミッター
パーティクルを構成する粒子のこと。今回の例でいえば蛍の光一つ(群集の中の蛍一匹)を指します。
モジュール
動作、色、音など、エミッターに何らかの特徴を付けるための機能のこと。エミッターひとつひとつに個別設定したり、パーティクル全体に一括で設定したりできる。
右側の項目の表示方法について
Niagaraは項目がたくさんあって非常に見づらく、作業が大変になることがあります。そういうときのために、表示したい部分だけ表示できる機能があります。
画面中央にあるノードみたいなものが表示された画面に、パーティクルの各項目が表示されているのですが、項目を左クリックするとその項目だけが右側に表示されます。
複数の項目を表示させたいときはShiftやCtrlを押しながら項目を選んでみてください。

ちなみに項目以外の部分をクリックするとノードがオレンジの枠で囲まれます。このとき、右側にはすべての項目が表示されます。
今後の作業で見づらいと思ったときはこの機能を使ってみましょう。
パラメーターをいじってみよう!
スポーン設定【Emitter Update > Spawn Rate】
初期状態では何も表示されません。まずはエミッター(蛍の光の粒)を表示させるために「Spawn Rate」というモジュールを追加します。
「Emitter Spawn」、Emitter Update」など各項目の右にある+ボタンを押すと新しくモジュールを追加することができます。まずは「Emitter Update」の+を押し、「Spawning」から「Spawn Rate」モジュールを選んでみましょう。

「Spawn Rate」モジュールを追加したら右側に項目を表示させて「Spawn Rate」の数字を変えてみましょう。この数字は1秒に何個エミッターを表示させるかを設定します。例えば数値を10とすると1秒に10個のエミッターが表示されるようになります。
動作を左側で確認してみると白い球が表示されました。しかし、球は1つしか見えません。正しくは、しっかりと設定した数表示されているのですがスポーンする場所が重なっているので1個しか見えないという状況になっています。
そこで、今度はスポーンさせる範囲を決めていきます。

スポーンの範囲【Particle Spawn > Location】
「Particle Spawn」の + を押し、「Location」から「Box Location」モジュールを選びます。(ほかにも「Cone Location」や「Sphere Location」など様々ありますが、スポーン範囲の形状によって使い分けていきます。もちろん複数組み合わせることもできます。)

「Box Size」を変えて範囲を少し広げてみると下のようになります。

エミッターの見た目の設定【Render】
エミッターの形状や色などの見た目を決めていきます。エミッターの見た目は「Render」の項目でモジュールを追加することで設定できます。
一番初めのテンプレート選択で「Empty」を選ぶと、最初から「Sprite Renderer」という、スプライトがエミッターとして表示されるモジュールが追加されています。今回はこれを使っていきます。
スプライトっていうのは簡単に言うと二次元の平面のことですね。実は今表示されている白い球は立体的ではなくて、2Dの白い円が描かれた平面を常にカメラに向けるようにしているだけなんです。
試しに「Render」の隣の+を押してみると、「Light Renderer」、「Mesh Renderer」、「Component Renderer」などのモジュールが表示されます。スプライトの代わりにメッシュやライトなどを使いたいときは「Sprite Renderer」の代わりにこれらを使います。

スプライトはメッシュを使うよりも圧倒的に負荷が少ないので、パーティクルを作るときはよく使われます。
本来はここでマテリアルを設定し、エミッターの形や色なんかを設定することができるのですが、今回は特に変更はしません。
形に関しては今回はデフォルトのものを使っていきます。
色に関しては、次に紹介する「Color」モジュールで設定することができるため、そちらで設定していきます。(スプライトの場合、白黒+透明度で形を決め、色は柔軟性の点からマテリアルでは設定せず「Color」モジュールで設定することが多いです。)
「Render」関係のモジュールは、今後別のパーティクルを作る際にスプライトの形を変えたり、メッシュの設定をしたりする際にかなりお世話になると思います。
パーティクルの色の設定【Particle Update > Color】
「Particle Update」に「Color」モジュールを追加すると、パーティクルの色を設定できます。
今回は蛍の光ということで黄緑色に設定するためにRを10、Gを20に設定しました。

エミッターの表示時間(寿命)【Particle Spawn > Initialize Particle】
最初から設定されている「Initialize Particle」モジュールで変更することができます。「Lifetime Mode」を「Random」に変えて、最小時間と最大時間を決めるとエミッターひとつひとつの表示時間がランダムになります。
動きをランダムに変化させる【Particle Update > Curl Noise Force】
エミッターをふよふよ漂わせ、ランダムに移動させたいというときにぴったりなモジュールがあります。それが「Curl Noise Force」です。
「Particle Update」の+を押し、「Curl Noise Force」モジュールを追加します。エラーが出たら、「Fix issue」を押してください。モジュールの順番を適切な位置に変えてくれます。
モジュール内の「Noise Strength」と「Noise Frequency」の数値を調整するとエミッターがランダムに移動してくれるようになります。

これを使うだけでいろいろな表現ができるので、個人的に使用頻度NO.1のモジュールです!
※注意 数値を上げすぎるとエミッターのスピードが上がって途端にキモくなります。
エミッターのスポーン時とデスポーン時に一工夫【Particle Update > Scale Sprite Size】
今回の記事の最後に、少し応用的なことをしていきます。
現状、蛍の光が突然現れ、突然消えるという違和感バリバリな挙動をしているので、光が徐々に表れて徐々に消えていくという動きを追加していきます。
使うモジュールは「Scale Sprite Size」と「Color」の2つで、「Color」は既に追加してあるので「Scale Sprite Size」を「Particle Update」に追加します。
ここから新しいことをしていきます。
モジュールの各項目の数値を設定する部分の右側に、小さな逆三角形がありますよね。ここを押すと「数値の設定の仕方」を決めることができます。これを使うことで数値の決定に計算式を使用したり、数値をランダムにしたり、今回のように時間で数値を変化させたりといったことができるようになるんです。
「Color」モジュールの「Scale Alpha」の右にある逆三角形を押し、「Dynamic input」から「Float from Curve」を選んでみましょう。

カーブが表示されたと思います。今回は横軸が時間、縦軸が不透明度で、両方とも割合で表されています。
最初に表示される右肩下がりの直線グラフでは、エミッターがスポーンした瞬間は不透明度が最大(完全に見える状態)で、時間がたつにつれ透明になっていき、デスポーンするときには完全に見えなくなるという変化の仕方をします。
今回は徐々に表れ、徐々に消えるという動作をしたいので、カーブは真ん中が一番高い山のような形になればよいことになります。
カーブの形はキー(ひし形)によって決まっており、キーを操作してカーブの形を調整していきます。
操作方法
- 左クリック:キーの位置変更
- グラフ上で右クリック:新しいキーの追加
- キー上で右クリック:補間方法の設定
補間方法は、キーすべてに「Auto」を設定するといい感じになります。

「Color」モジュールの不透明度の設定が終わったら、今度は「Scale Sprite Size」の大きさの設定をしていきます。
初期状態だと「Scale Factor」にXとYの数値があり、スプライトの大きさを縦と横で個別に設定できるようになっているのですが、このままだとカーブが2つ必要になってしまい面倒なので、XとYの数値を1つにまとめます。(縦横比が固定されます。)
やり方は、逆三角形のメニューの「Dynamic input」から「Vector 2DFrom Float」を選びます。これで2つの数値が一つにまとまりました。
後は不透明度の設定と同じで「Float from Curve」を選んでカーブを編集します。
これらの設定をすることで、見た目がとてもよくなりました!
レベル上に配置してみよう!
「Niagara Emitter」を作成し終えたら、それをレベル上に表示させる作業をしていきます。といってもそれほど難しいものではなく、作った「Niagara Emitter」を右クリックして「Create Niagara System」を押せばOKです。
あとは作られた「Niagara System」をレベル上に配置してみましょう!

おわりに
Niagaraを始める方に少しでも参考になればうれしいです。
覚えることは多いですが、蛍の光ぐらいのパーティクルであればそれほど難しいことを覚えなくても作れるということが分かったかと思います。
どんどん応用していろいろなところにNiagaraを使っていきましょう!
コメント
「Scale Sprite Size」を「Particle Update」に追加するとパーティクルが見えなくなってしまいましたが、
「Initialize Particle」 -> 「Sprite Attributes」 -> 「Sprite Size Mode」を 「Uniform」 にすることで見えるようになりました。
初めてナイアガラに触れたのですが各用語が細かく説明されててとても分かりやすかったです!ありがとうございます!