2021-12-23

【ナイアガラ超基礎 #6】Velocityとは【UE5】

ナイアガラにてパーティクル速度を決める「Velocity」を学ぶ。

Article Image

Velocityとは

ナイアガラのVelocityとは「速度」を決めるモジュール。

つまり、ひとまずコレを設定してやると「パーティクルを動かすこと」ができる。

Add Velocity In Cone

Add Velocity In Coneの例。速度がつくとパーティクルは移動する。

余談:Forceとの違いは?

初心者向けなのでまだは殆ど触れていないがForceというのもパーティクルを動かすモジュールになる。

こちらは速度とは違い「力」なので「加速度」を含んでいる。

今は覚えなくて良いので気になる人向けに簡単にさらっと

速度と加速度の比較

Velocityだけだと一定の速度で進みForceだと加速するので時間が立つほど早くなる。

まずは準備

Emptyのシステムかエミッターを作って

エミッタの更新Spawn Rateを追加。

Spawn Rate

SpawnRateも適当に設定。10ぐらいで良いかと思う。

SpawnRate

Add Velocity

まずは最も基本のAdd Velocityを作る。

こちらは「単純にまっすぐ飛ばすだけ」のモジュール

Velocity系モジュールは「パーティクルのスポーン」に入れる。

Add Velocity

エラーが出ているのはSolve Forces And Velocityがないため。

Solve Forces And Velocity1

Solve Forces And Velocity2

※速度などのモジュールは計算式が積まれた状態になるだけ。最後にこれが式をまとめて計算して速度に変換している(たぶん)

最後にAdd VelocityのパラメタVelocity500のような数字をいれよう。

picture 8

これが速度を決定している。

完成

これで指定した軸方向にパーティクルが飛ぶはずだ。

パーティクル更新の中にVelocityを入れてしまうと飛ばないので注意。

非常にしょぼいがコレがすべての基礎となる。

ここからはVelocity全解説

Velocity系のモジュールは数が少ないため、上記以外のモジュールをすべて解説していく。

初心者は無理に覚える必要はない。

気になったらまたここに帰ってくるぐらいで良い。

また過去に解説していないLocation系のモジュールも出てくるので、わからなければスルーで良い。

記事のボリュームが大きくなりすぎるので、細かいパラメタは無視して概要のみとする。

Add Velocity From Point

いきなりちょっと難しいモジュール。

まずVelocityが入っていない状態でBox LocationでSpawnさせているだけ(動かない)

Box Location

これだけだと意味がわからないがAdd Velocity From Pointを追加して、Z=200ぐらいにする。

再生すると次のようになる。

これがどうなっているのかというと

仕組み

赤枠で囲ったあたりにAdd Velocity From Pointの原点がきている。

そこから発生した各パーティクルのベクトルがそのまま「速度」になる。

ベクトルに角度がないとまっすぐ下へ飛ぶだけなので、最初に四角形に横に広げたパーティクルを出したというわけだ。

Add Velocity In Cone

「ソフトクリームのコーン」のような形状で速度が設定されるモジュール。

Add Velocity From Pointとの違い

  • Add Velocity In Cone:パーティクルが発生した点で角度が決まっている。

  • Add Velocity From Point:パーティクルが発生した地点とAdd Velocity From Pointで設定した原点を「結んだベクトル」になる。

よくわからなければAdd Velocity In Coneのほうが圧倒的にコントロールしやすいのでこちらだけ覚えておけば良い。

Inherit Velocity

非常に面白いモジュール。

まずこれだけ設定しても何も起こらない。

こちらは「ゲーム上に配置した上で位置を動かす」と効果がある。

マヨネーズを水に浮かべるゲームです。

このように「動いた方向をそのまま維持する」という動作になるため、発生してからジワーッと外側へ飛んでいっている。

Inheritとは「受け継ぐ」という意味で、移動した方向を速度として受け継いでいる。

Static Mesh Velocity

こちらは追加するとエラーが表示されるので解決ボタンを押すとSample Static Meshのモジュールも追加される。

まずはこちらのSample Static Meshに何かしらのモデルを追加してやる。

例えばCubeを追加してやると

Static Mesh Velocity

これは設定した「メッシュの面法線」の方向が速度になるモジュールなので、キューブの各面の方向にパーティクルが発射されている。

これだけだと使い方がよくわからないが、例えばこの後にAdd Velocity In Coneを更に追加してみると

複雑化

このようにどんどん複雑にしていく事ができるので非常に可能性を感じるモジュールである。

Vortex Velocity

「渦」のような速度を与えるモジュール。

動きの理解はサンプルを見るほうが早い。

こちらも追加するとエラーとなり問題を修正ボタンをおすとApply Initial Forcesが追加される。

※なぜこのモジュールが必要なのか私も実はよくわかっていない。ForceVelocityに変換するモジュールらしいので加速度がつくわけではない。

また注意点としてLocation等のモジュールでSpawn地点が散らされてないと何も起こらない。

※恐らくこちらも位置ベクトルを元に計算されるモジュールだからだと思われる。

Add Velocity From Pointと一緒じゃ?

実際に試した人は気付いたかもしれないがAdd Velocity From Pointをデフォルト(原点を0,0,0のままずらさない)で追加したものと似た動きになる。

実際は違ってVortex Velocityだと平たく広がる渦の効果になるので

Vortex Velocity横から

横から見ると水平に広がっている。

一方Add Velocity From Pointを(0,0,0)座標で使用すると均一に広がってしまうので

Add Velocity From Pointどこから見ても一緒

どの視点からみてもこのようになる。

パーティクル更新にも入れられる

ここまでのモジュールは全て「パーティクルのスポーン」に入れてきた。

つまり、パーティクルが発生した瞬間に1度だけ速度を決めて、あとは等速直線運動になっていたはずだ。

しかし、実はパーティクル更新にも入れられるモジュールがある。

※毎フレームごとに速度を再計算する(と思うのだが自信なし)

パーティクル更新 + Vortex Velocity

この方法は「外へパーティクルを飛ばさない、範囲内だけの渦」にしたい場合に有効。

※この場合Apply Initial Forcesは無くても良さそう

パーティクル更新 + Static Mesh Velocity

こちらもパーティクル更新に追加できる。

おそらくフレームが更新されるごとに速度の方向が再設定される理由(上も同じ)でこのような動作となるはずだが、あまり詳しく説明できないのでサンプルだけに留める。

一つ一つのパーティクルが直線ではない動きをしている。

雪が舞い散るような非常に美しい動き。

おまけ: Scale Velocity

パーティクルのスポーンではなく「パーティクルの更新」側にだけ追加可能なモジュールにScale Velocityがある。

こちらはシンプルに上でスタックされた速度計算に対してXYZ軸方向に速度の引き伸ばしができるモジュール。

※このモジュール単体で速度付けはできない。あくまで設定された速度を調整するだけ。

例えば先程の「渦」を「縦長にしたいなぁ」なんて時

縦長にしたい

中央で回転はしてるけれどもパーティクルは縦長に飛んでいく。

以上

ざっくりとなってしまったが、一応これで全てのVelocityを解説した。

ただ「パーティクル更新」に入れるVelocityの方は私も詳しく説明できないのでひとまずここまでとした。

細かい設定方法などはいずれ別々で見ていきたい。



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