2021-12-25

【ナイアガラ超基礎 #7】Locationモジュールとは【UE5】

ナイアガラをやるなら理解必須なLocationモジュールを1つずつわかりやすく解説

Article Image

2022/03/22: Unreal Engine 5 Preview 2でロケーションモジュールの設定方法が変更になったので記事を修正

Locationとは

Spawn系のモジュールがパーティクルを生成するのは以前紹介した。

【ナイアガラ超基礎 #4】Spawnの種類【UE5】 | 謎の技術研究部

しかし、これだけだとどこか特定の1座標に重なって生成されてしまうため、どれだけパーティクルを増やそうとも1個のパーティクルにしか見えない。

spawnのみ

生成位置をずらす

Locationというモジュール類を使用するとSpawnの位置を指定された範囲内でランダムにできる。

これを使ってパーティクルの散らばり方をコントロールし、様々な形状を作り出すことができる。

Location設定後

パーティクルのスポーンに入れること

Locationパーティクルのスポーンの中に入れる必要がある。

これは「パーティクル生成時に1度だけ実行される」項目になるためである。

パーティクルのスポーン

また解説では上級者すぎる設定項目などの解説はスキップしているので悪しからず。

余談:長い記事なので最初の方だけでも

今回は少し細かく書いている兼ね合いで長い記事となっている。

初心者は上から1,2個のLocationだけ理解できたら後は全体のサンプル画像に目を通すだけでも十分かと思う。

必要に応じてまた読みに来てもらえれば幸いだ。

Shape Location

UE5のPreview2よりShape Locationという一つのモジュールの中に複数のロケーションが含まれるようになった。

Shape Locationモジュール

まずはこちらのShape LocationモジュールをセットしてShape Primitiveからロケーションの形状を選ぶ。

Shape Primitive

ここで選んだ形状により設定できる項目が変化するので順番に解説する。

※設定項目の解説も記述するが、簡単な設定のみにとどめてある。

Box / Plane

まずはBox / Plane

わかりやすいように大量にパーティクルをスポーンさせると次のような形に見える。

Box Location

ご覧の通り「箱型」の範囲にパーティクルがバラけた。

パーティクル数を少なくすると

Box Location2

このようなイメージ。

Box Sizeプロパティではこのを大きさを定義する。

Cylinder

こちらは円柱状

Cylinder

主な設定

Shapeタブ

  • Cylinder Height : 円柱の高さ。円柱を長くする。
  • Cylinder Radius : 半径。円が大きくなる

Distributionタブ

  • Hemicircle X, Y : 半円状にする。ケーキを切り分けた時のようなイメージ

※旧バージョンの設定項目Hemisphereから名称が変わった。次の画像は旧バージョン

Hemisphere

Hemisphere2

Cone

こちらはコーン状。ソフトクリームのコーン的な。

Cone Location

主な設定

Shapeタブ

  • Cone Angle : コーンの角度。鋭い角にしたり、扇状にしたり。
  • Cone Length : コーンの長さ。
  • Flatten Endcaps : 底を平に潰す

Flatten Endcaps

Distributionタブ

  • Cone Surface Distribution : とんがっている方からトリムする。

Cone Surface Distribution

Transformタブ

  • Non Uniform Scale : 軸の方向。コーンの向きをコントロールできる。

Sphere

球体型のLocation。

Sphere Location

ちょっとわかりにくいので、Spawn数を減らした例

Sphere Location2

設定

Shapeタブ

  • Sphere Radius : 半径。球体のサイズを調整できる。

Distributionタブ

  • Sphere Orientation Axis : 球体の方向。上で形状を調整したあと、これで方向を設定するイメージで。

  • Sphere Distribution : 注目プロパティ。Uniformにするとスポーン地点を完全なランダムではなく球体内で整列する。美しい。

Transformタブ

  • Non Uniform Scale : XYZ軸ごとのサイズ。ラグビーボール、ばかうけみたいな形状も作成可能。

Non Uniform Scale

Sphere Distributionを少し細かく

Distributionタブ > Sphere Distribution >Uniformに設定した例が美しいので例を出す。

Uniform

Uniform Spiral Amountを調整するとSpawn地点が数学的に整列される

1.0に設定

Sphere Distribution

4.16に設定

Sphere Distribution2

設定によってものすごく多用な変化をするのでここは是非自分で試してみてほしい。

デモ1

Spawn Rate5000程度。Initialize Particle > Life Timeを10秒ほどに。

Vortex Velocityをパーティクルの更新に追加。Velocity300+軸をいじる。

最後にSphere Locationの上記パラメタを適当にいじっただけ。

もっとしっかり煮詰めれば、たったこれだけの知識でもかなり面白いものが作れると思う。

デモ2

また、Sphere DistributionDirectに設定。

U Position, V Positionダイナミックインプット(動的入力)であるReturn Normalized Exec Indexを設定するともっと正確な何かが作れそうだ。

※ダイナミックインプットは今後重要になってくるが、まだ解説してないのでわからなければ「ほーん」ぐらいの理解で。

なんかすごいかっこいいものが出来上がるのだけれど、正直このダイナミックインプットも含め何が起こっているのか私には解説できないので、いずれ理解が深まったら記事にしたい。

参考サイト:【UE4.26】Niagara Advanced 解説基礎編Particle Attribute Reader – HeyYo CG

Torus

ドーナツ型のメッシュをCG用語でトーラスという。英語を日本語訳すると「円環体」というらしい。

Torus Location

その名の通りの形状になる。

設定

Torus Modeをいじると形状を変更できる(上の画像はデフォルトのTorus)

TorusKnot

TorusKnotに変更しKnot Helix Loops, Knot Ring Loopsを1~10ぐらいでいじると面白い形状へと変化する。

TorusKnot

こちらも言葉で解説が難しいので調整してみてほしい。

桜の花のような形状に

TorusKnot 2

TorusKnot 3

すぐ回転させたくなる

※こちらはパーティクル更新Vortex Velocityで回転させてるだけ。

また、TorusにもDistributionの項目があるが、基本はSphere Locationと同様なので省略

Ring / Disc

リング状に配置する。

Ring

これは以前のバージョンでTorusで再現できていたが、作る場合は上級者向けの理解が必要だったがRing / Discを選べば簡単にできるようになった。

設定

Ring / Disc ModeHexagonにすると六角形になる

Hexagon

こちらも細かい設定はTorusと同じでDistributionタブをいじることにより幾何学的な模様になるので試してみると良い。

Distributionで変形

Grid Location

注意:ここからはShape Locationではなくモジュールそのものが違うので注意

Grid

こちらは必ずエミッタの更新 > Spawn Particles In Gridと共に使う。

Grid Locationを追加するとエラーが出るので問題を修正ボタンで追加してくれる。

Grid Location

デフォルトだとわかりにくいので少し数値を調整しているが、このような感じでパーティクルをグリッド状に正確に並べた状態で配置してくれる。

なんというかデジタルっぽさを感じさせるエフェクトが作れそうだ。

グリッドの数を設定

Spawn Particles In Grid

Spawn Particles In Gridというモジュール側を設定する

X,Y,ZそれぞれにCountというプロパティがあり、これがグリッドの数を決定している。

例えば(3,3,3)だと

picture 9

このような感じ。

Box Locationが箱の中でランダム位置にスポーンだったのに対し、こちらは完全に整列されている所がポイント。

グリッドの数ではなく広さを設定したい

また、上の設定だとSpawnするマスの数だが、単純に広さを調整したい場合はGrid LocationモジュールのXYZ Dimensionsから設定する

Grid Location

Dimensions

Grid Locationを調整した結果

これ以外の項目は直感的に触っても面白い動きをしないので、上級者向けという解釈でスキップする。

Static Mesh Location

こちらは名前の通りスタティックメッシュの表面からパーティクルを出すモジュール。

つまり何かしらのモデルのポリゴンに沿ってパーティクルを出す。

Rocket 元

ロケットのモデルに適用した例。

Rocket

各ポリゴン表面からパーティクルが出ている。

メッシュが細かい箇所にはたくさんパーティクルが生成され、メッシュが荒い部分が少なくなっている点にも注目。

Sample Static Meshが必要

スタティックメッシュを読み込むときは別のモジュールと組みわせる必要がある。

このメッシュを読み込むためのモジュールがSample Static Meshモジュール。

こちらはStatic Mesh Location追加したときに現れるエラーの問題を修正ボタンを押せば自動で追加される。

Static Mesh LocationとSample Static Mesh

Static Mesh Locationのすぐ上にSample Static Meshが来れば良い。

設定

基本的にはSample Static Mesh側にメッシュを指定するだけでよい。

Sample Static Meshの設定

Preview MeshDefault Mesh両方に同じものを入れておこう。

Skeletal Mesh Location

コレまでのと違いスケルタルメッシュに適用し複雑な動作をさせるもの。

かなり複雑なエフェクトを作ることができるが初心者向けではないのでここでは割愛する。

System Location

こちらは知る限りでは単純にエミッターシステムが配置された「点」+オフセットの値の場所をロケーションにするためのものだと思われる。

一応Spawn Group Mask等も使えるが、シンプルすぎて逆に使い所がよくわからない。申し訳ない。

その他

Locationというも名称は付いていないが、モジュールを追加する時にLocationで検索すると一緒に出てくるものも見ておく。

Jitter Position

スポーン地点をランダムにずらすモジュール。

例えばGrid Locationで正確に配置してJitter Positionでズラすと

Jitter Position

このように僅かにブレる。

まだ解説してないので別記事でやりたいのだが、ビーム系と合わせると電撃のようになる。

beam+jitter

Rotate Around Point

Rotate Around Point

1点を中心に発生したパーティクルを回転させる。

こちらは非常に複雑だがうまく使うと幾何学模様のようなものも作れるので解説しきれない。

よって別記事で取り扱いたい。

さくっと遊ぶのであればパーティクルの更新に入れてRotation Rate(回転の速さ)に1.0を入れてSetup > Radius(半径)を調整する。

これだけで何のLocationも指定していなくても回転し始めるはずだ。

次はパーティクルのスポーンに入れる例

パーティクルのスポーンにRotate Around Point

まだ記事にしてない「動的入力(Dynamic Parameter)」を使っているので、初心者は「ほーん」ぐらいで。

もっともっと複雑な形状がつくれるはず。

以上

Locationもそれほどモジュールの数はないが、こうやって記事にしてみると簡易解説でも結構なボリュームになってしまった。

これだけでも結構遊べると思う。



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