【Niagara】自作したModuleのパラメータにデフォルトでDynamicInputを設定する方法

※この記事はUE4.21の物です。

Moduleを作成している際に地味にハマったのでメモ

やりたいことはこんな感じ
f:id:kamitani_08:20181203184014p:plain

このDynamicInputさん達を毎回決まっているのにイチイチ設定するのがめんどくさいので、Module作成時にデフォルトで設定したい。

というわけで早速作成してみる。

[準備]
まずModule確認用にエミッターを作成します。
テンプレートのSimpleSpriteBurstを作成。
f:id:kamitani_08:20181203184256p:plain
Moduleで変更された色の確認をしたいのでMaxLoopCountの値を0に変更
今回作成するModuleで色を設定するので不要になるColorModuleを削除。

今こんな感じ
f:id:kamitani_08:20181203184512p:plain

次にNiagaraModuleScriptを作成し、SelectedEmittersウィンドウからパーティクルの色を変えられるようにするため、
LinearColorを作成し「Module.Color」にリネームしてMapSetに繋げ、追加された変数の名前を「Particles.Color」にリネームする。
次に行うModuleが変更を適用しているかの確認用にModule.ColorのRの値を100に設定する。
f:id:kamitani_08:20181203191009p:plain

ParticleUpdateに作成したModuleを追加。

この時点でのパーティクルの色はこんな感じ
f:id:kamitani_08:20181203184622p:plain

設定した色が出てるのが確認できますね。
このColorパラメータにDynamicInputを設定していきます。

[ここから本番]

最初にBeginDefaultsノードを追加してその先にDynamicInputの「SplitLinearColor」を追加してModule.Colorに繋げます。
f:id:kamitani_08:20181203184723p:plain
この時作成されたModule.R、Module.G、Module.B、Module.AがSplitLinearColorで分割後のパラメータです。
f:id:kamitani_08:20181203184741p:plain
これでSplitLinearColorが設定できました。
f:id:kamitani_08:20181203184817p:plain

次は分割したRとAに変更を加えます。
MapSetを作成してModule.R、Module.Aを追加します。
追加したパラメータのModuleの部分をSplitLinearColorに変更します。
f:id:kamitani_08:20181203185053p:plain

先ほどと同様にRに100、Aに1を入れて同じ色が出ているか確認します。
f:id:kamitani_08:20181203185148p:plain

※Emitter画面に戻った際にModuleで行った変更が反映されないことがあります。
その際は下記画像にある黄色矢印のボタンを押すとModuleに設定されているデフォルトの状態に戻すことが出来るのでそれを押して更新しましょう。
f:id:kamitani_08:20181203185208p:plain

次に同じ要領でR要素にSineを設定していきます。
f:id:kamitani_08:20181203185237p:plain


最後にB要素にSineを設定します。
自分はここで少しハマったのですが、
Sineを追加する際に元からあるノードをコピペして持ってくると同じ名前のSineノードが作成されます。
f:id:kamitani_08:20181203185508p:plain

このノード、リネームもできないしこの状態だと各Sineに別々のパラメータを入れることが出来なくて少し悩ました。
解決方法としては素直に左クリックからSineを追加するとSine001が作成されて区別することが出来ます。
f:id:kamitani_08:20181203185437p:plain