2022-01-19

【ナイアガラ超基礎 #9】ダイナミックインプット(動的入力)とは?

UEのナイアガラを使う上で必須の知識ダイナミックインプット(Dynamic Inputs, 動的入力)の基本的な使い方を解説。

Article Image

ダイナミックインプット(動的入力)とは

例えば次のような場合にダイナミックインプットを使う

  • SpawnRateを「最初は少なく、徐々に大きくしたい」といった場合
  • Velocityの方向をランダムに変えたい
  • 原点とパーティクルの距離に応じて処理を変化させたい
  • など

他にも様々な使い方があるが、上の例のように「プロパティの値を逐次変化させる」ものがダイナミックインプットである。

※原点とパーティクルの距離に応じて処理を変化させる記事は別途あるので次を参照

【UE5 ナイアガラ】パーティクルを「距離」で変化させる方法 | 謎の技術研究部

補足:ダイナミックインプットの名称について

私のWEBサイトでは「ダイナミックインプット」と呼んでいるが、これは英語の機能名をカタカナにしただけである(Dynamic Inputs)

日本語版では「動的入力」というワードが採用されているがいまいちピンとこないので今後もダイナミックインプットと呼ぶことにする。

この記事で解説する範囲

初心者向けということで、基本概念+よく使いそうなものだけに絞って解説。

難しいダイナミックインプットに関してはこの記事では取り扱わない。

基本の使い方

例をみて解説する。

まずはSpawn RateAdd Velocityをつけただけの例を作る。

Add Velocity

VelocityX=100として左側に球が流れるだけのもの。

ダイナミックインプットを追加する方法

このVelocityに乱数を追加してみたい。

まずはプロパティ右側にあるのチェーンのようなマークをクリックする。

ダイナミックインプットの追加方法

注意:ここではUnreal Engine 5を利用している。古いバージョンではチェーンのマークではないが同じ位置にあるはずだ。

検索窓が現れるので

ダイナミックインプット検索窓

ここに「random」と入れて検索しRandom Range Vectorを選ぶ。

Random Range Vector

するとプロパティの入力にRandom Range Vectorが設定され入力フォームの形式が変わっている事がわかる

入力変化

使い方

Random Range VectorMinimumを最低値、Maximumを最大値としてその間の値をランダムに出力するダイナミックインプットだ。

このダイナミックインプットはXYZそれぞれ別々で入力ができる。

ひとまず最初の例として、Xは100のまま固定、Y軸がブレるようにしてみた。

Y軸だけぶれる

結果は次のようにY軸方向がランダムになっているのが分かる。

なぜチェーンのマークなのか?

これでダイナミックインプットの設定の方法はわかったと思う。

ここからはなぜ「チェーンのマーク」になっているのかを考えてみる。

先程の例で今度は「break」と検索してMake Vectorを選ぶ。

Make Vector

3つの項目に分割

元々XYZがひとまとまりの入力だったが、別々に分割されていることが分かると思う。

そして注目すべきは右側のチェーンマークがXYZそれぞれに「更に適用」できるということだ。

別々のチェーンマーク

注意:breakの検索結果は値によって違う

上の例ではMake Vectorで直接検索してももちろん良いが、注意点がある。

今回は値がXYZ値だったのでbreakで検索するとMake Vectorが出てくるが、 Colorのモジュールでbreakを検索するとMake Linear Colorが現れる。

つまり、適用するプロパティの入力数に応じて別々のbreak用のインプットとなるので注意。

colorでbreakを検索

したがって値を分けるダイナミックインプットを使う時は常に「break」で検索するのが良い。

これはrandomなどで検索したときも同じでモジュールによって名称が変わる可能性があるので注意しよう。

更にダイナミックインプットを繋ぐ

では実際にこのXYZで分割された値にさらにダイナミックインプットを入れ子にしてみる。

サインとコサインを追加

ダイナミックインプット唯一の欠点は数珠つなぎにしていくと「見にくくなる」という点。

今回は次の作業を行っている

  • XにダイナミックインプットCosineを入れてScale=100
  • YにダイナミックインプットSineを入れてScale=100
  • Zを固定値100(になっているが正面からみるだけの場合は0と変わりない)

ダイナミックインプットは入れ子ができる

既に複雑でなにをやっているかわからないので、ここでは

「ダイナミックインプットの中にダイナミックインプットを入れることができる」

ということだけ覚えておこう。

チェーンの形状をしているのはこのように「繋いでいける」からだと思われる(私の予想)

ちなみにこの結果は次のようになる。

シューティングゲームでよくある敵が使ってくるヤツだ。

何度も言うが今はサインコサインは覚えなくて良い。

よく使う「Curve」

最後に非常によく使うものをもうひとつ紹介する。

検索で「curve」で現れるFloat from Curve

curve

ここではパーティクル更新のカラーをbreakしてRに設定している。

カーブは時間に応じて設定したカーブの値に変化するというシンプルなものでこの設定だと1秒後にRの値が0~500に増加するようになっている。

このカーブは非常によく使うのでとりあえず最初は覚えておきたい。

線を右クリックすると新しい頂点が追加できる。

右クリックで点を追加

また各点をクリックしてドラッグしても良いし時間に直接数字を入れても良い。

時間と値

ざっくりだが、結果は次のようになる。

発射されたパーティクルは時間が立つごとに赤に変わっていく。

Curveは非常によく使うので初めに覚えておくにはベストかと思う。

まとめ

  • ダイナミックインプットはチェーンのマークから設定
  • 値をランダムなものにする時は「random」で検索して出てくる物を使う
  • RGBやXYZ値を分ける場合は「break」で検索して「Make Vector」や「Make Linear Color」などそれぞれに対応したインプットを使う
  • ダイナミックインプットの中に更にダイナミックインプットを繋ぐことができる
  • Curve系はよく使う

以上

ダイナミックインプットは沢山の種類があるため一部しか紹介していない。

この先例を見ながらひとつずつ覚えていったほうが良いので紹介はここまでとする。

少し慣れが必要な機能だがUnreal Engine自体に実装されてそれほど時間が経っていない。

今後更に使いやすくなっていくはず。

今後の記事では積極的に使っていきたい。



この記事をシェア


謎の技術研究部 (謎技研)