Gaming Life

一日24時間、ゲームは10時間

UE4 Niagaraを触ってみる(4) StaticMeshの形にパーティクルをスポーンさせる②

f:id:ai_gaminglife:20180722114904p:plain

続き。以下の記事を一通り進めた前提で話を進めるのでまだ見ていない方はそちらからどうぞ。

ai-gaminglife.hatenablog.com

Lerpノードについて

 Niagara Module Scriptを追加。ここではある0.0-1.0の入力を元にパーティクルの位置と色を線形に補間するモジュールを作成する。

 ここでLerpノードに要注意。NiagaraのLerpノードは少し分かりづらい。

f:id:ai_gaminglife:20180722114932p:plain

 これがNiagara版Lerpノード。

f:id:ai_gaminglife:20180722114939p:plain

 これがマテリアルのLerpノード。

 マテリアルで言うところのAlpha値は、NiagaraではCに相当する。最初見た時は分かり辛いので要注意。ここでは特に説明しないがNiagaraの算術演算系のノードはかなり癖のある見た目のものが多いので慣れが必要(ifとか)。

色と位置を線形補間するModule Scriptを作成する

 全体図はこちら。

f:id:ai_gaminglife:20180722114948p:plainf:id:ai_gaminglife:20180722114952p:plain

 Map Getで

  • Module.beforePos
  • Module.afterPos
  • Module.beforeColor
  • Module.AfterColor
  • Module.alpha

を追加。alphaでbefore ○○ と after ○○を線形補間する。

f:id:ai_gaminglife:20180722115000p:plain

 alpha値を0.0から1.0にClampし、その値で位置と色を線形補間(Lerp)。

f:id:ai_gaminglife:20180722115008p:plain

 こうして得た位置と色をParticles.Position、Particles.Colorに設定する。

Emitterの修正

 前回記事で作成したEmitterを元に編集する。まず、以下のモジュールを削除。

  • Particle -> Static Mesh Location
  • Particle -> Color

 続いて、Particle Spawnに2つ目のSample Static Meshを追加しStaticMeshを設定する。Niagaraでは同じモジュールが追加された時両者を区別するため001と言ったプレフィックスが自動で付く。

 Particle Updateに先程作成したModuleを追加。まず、BeforeColorとAfterColorを設定。

f:id:ai_gaminglife:20180722115015p:plain

 beforePosにはSampleStaticMeshで取得したメッシュの位置を使い回したい。こういった時は画像の赤で囲った下三角マークをクリックし、Link Inputs -> Particle AttributeからInitial.SampleStaticMesh.MeshPositionを選択する。

 これでSampleStaticMeshモジュールで取得したMeshPositionをそのままbeforePosに流用できる。

 同じようにafterPosをInitial.SampleStaticMesh001.MeshPositionとリンクさせる。

 alpha値はカーブで編集したい。青で囲んだ下三角マークをクリックしDynamic Inputs -> float from Curveを選択。これでalpha値をカーブに合わせて設定することが出来る。

 完成!

おまけ

f:id:ai_gaminglife:20180722115047p:plain

 今のままではafterが上に表示されてしまい非常に分かりづらい。というわけでエミッター編集画面での表示順を変更する方法を。

f:id:ai_gaminglife:20180722115055p:plain

 Niagara Module Script編集画面のDetail->Variable MetaDataではパラメータに様々なメタデータを設定できる。そのうちのEditor Sort Priorityという数字はエミッター編集画面での表示優先順位を表しており、若い数字ほど上に表示される。もし同じ値の場合は名前の昇順で並び替えられる。

 Editor Sort Priorityを設定してやれば、

f:id:ai_gaminglife:20180722115104p:plain

 この様に見やすく並び替えることが出来る。