続き。以下の記事を一通り進めた前提で話を進めるのでまだ見ていない方はそちらからどうぞ。
Lerpノードについて
Niagara Module Scriptを追加。ここではある0.0-1.0の入力を元にパーティクルの位置と色を線形に補間するモジュールを作成する。
ここでLerpノードに要注意。NiagaraのLerpノードは少し分かりづらい。
これがNiagara版Lerpノード。
これがマテリアルのLerpノード。
マテリアルで言うところのAlpha値は、NiagaraではCに相当する。最初見た時は分かり辛いので要注意。ここでは特に説明しないがNiagaraの算術演算系のノードはかなり癖のある見た目のものが多いので慣れが必要(ifとか)。
色と位置を線形補間するModule Scriptを作成する
全体図はこちら。
Map Getで
- Module.beforePos
- Module.afterPos
- Module.beforeColor
- Module.AfterColor
- Module.alpha
を追加。alphaでbefore ○○ と after ○○を線形補間する。
alpha値を0.0から1.0にClampし、その値で位置と色を線形補間(Lerp)。
こうして得た位置と色を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を設定。
beforePosにはSampleStaticMeshで取得したメッシュの位置を使い回したい。こういった時は画像の赤で囲った下三角マークをクリックし、Link Inputs -> Particle AttributeからInitial.SampleStaticMesh.MeshPositionを選択する。
これでSampleStaticMeshモジュールで取得したMeshPositionをそのままbeforePosに流用できる。
同じようにafterPosをInitial.SampleStaticMesh001.MeshPositionとリンクさせる。
alpha値はカーブで編集したい。青で囲んだ下三角マークをクリックしDynamic Inputs -> float from Curveを選択。これでalpha値をカーブに合わせて設定することが出来る。
ブログ用④ pic.twitter.com/TzgLUEIylq
— ai (@ai_9684_dct) July 22, 2018
完成!
おまけ
今のままではafterが上に表示されてしまい非常に分かりづらい。というわけでエミッター編集画面での表示順を変更する方法を。
Niagara Module Script編集画面のDetail->Variable MetaDataではパラメータに様々なメタデータを設定できる。そのうちのEditor Sort Priorityという数字はエミッター編集画面での表示優先順位を表しており、若い数字ほど上に表示される。もし同じ値の場合は名前の昇順で並び替えられる。
Editor Sort Priorityを設定してやれば、
この様に見やすく並び替えることが出来る。