LoginSignup
7

More than 3 years have passed since last update.

Unity VisualEffectGraph -シンプルスォームパーティクル解説-

Last updated at Posted at 2019-12-22

この記事はUnity Advent Calender 2019 23日目の記事です。

はじめに

 VisualEffectGraphのシンプルスォームパーティクルの項目について記事にしました。
 以前にUnity VisualEffectGraph -インストール方法-と、Unity VisualEffectGraph -シンプルパーティクル解説-を記事にしているので、初めて触る方はこちらを参考にしていただければと思います。

シンプルスォームパーティクル

 まずVEGウィンドウ上のコンテキスト類を全て消しましょう。マウス左ドラッグで全選択して右クリック[Delete]ですべて消えます。その後に再度右クリックして[CreateNode]→[System]→[Simple Swarm Particle System]を選択し生成します。(図1)
 生成されたコンテキストは図2の様なボックスを持っています。また、生成されたVFXは図3のような火の玉のようなVFXです。

image.png
 図1 Simple Swarm Particle Systemのボタン

image.png
 図2 Simple Swarm Particle Systemのコンテキスト

image.png
 図3 Simple Swarm Particle SystemのVFX

ブロック部

 それではブロック部の解説をしていきましょう。

Spawn内のブロック

 この部分は「ConstantSpawnRate」のみが有ります。
・ConstantSpawnRate
 このブロックには「Rate」というプロパティがあり、毎秒いくつのパーティクルを生成するかを設定できます。
 時間等で消失していないパーティクルの数とInitializeのCapacityが同じ数になった時はパーティクルが消えるまで生成が止まります。

Initialize内のブロック

 ここでは、「Set Lifetime Random」ブロックがあり、生存時間をコントロールしています。
・Position(Sphere)
 生成場所を設定した球体の表面にパーティクルを配置するブロックです。
・Set Lifetime Random
 パーティクルの生存時間(秒)を設定するブロックです。最大値と最小値の2つを決めるとその間のランダムな時間で消失します。

Update内のブロック

 「Vector Field Force」ブロックのみがあります。
 ・Vector Field Force
  このブロックはベクターフィールドを用いてパーティクルに速度を与えます。
 ベクターフィールドとは空間上に力場を作るイメージで、特定の場所に行くと設定された方向に力が掛る空間の設定です。

Output内のブロック

 ブロックの数が多いですが、複雑な物ではないので1つ1つ見ていきましょう。
・Orient:Along Velocity
 このブロックはパーティクルの向く方向を設定することができます。「AlonVelocity」設定ではパーティクルが進行方向を向きます。
・Set Size
 パーティクルのXYZ全ての大きさを変更するブロックです。1を中心に拡大縮小します。
・Set ScaleX
 パーティクルのX方向の大きさを変更するブロックです。1を中心に拡大縮小します。
・Seet ScaleY over Life
 パーティクルのY方向の大きさをLifeTimeを参考に変更するブロックです。スケールの大きさはCurveによって変更されます。
・Color/Alpha over Life
 LifeTimeによってα値(透明度)と色を変えるブロックです。横軸がLifeTimeで左端が生成、右端が消失の時間を示します。ウィンドウの操作はUnityマニュアルを参考にしてください。

実際の動き

 それでは上記を踏まえてどう動くのか、最初からSpawn,Initialize,Update,QuadOutputの順に追っていきましょう。

Spawn

 まずSpawnコンテキストの[Rate]で毎秒25000個のパーティクルが生成されることが決まります。
image.png
図4 Spawnコンテキスト

Initialize

 Initializeコンテキストでパーティクルの個数上限65536個と定められます。
 「Position(Sphere)」ブロックでは[Position Mode]より、生成場所が球体表面(Surface)に設定されています。また、[Spawn Mode]より、ランダムに生成されます。生成場所の球体の詳細はすぐ下の項目から設定できます。
 「SetLifetimeRandom」ブロックで[Lifetime]を1秒~3秒の間と定められ、この時間内で消失することを設定されます。
image.png

図5 Initializeコンテキスト

Update

 Updateコンテキストではブロックが無い場合もありますが、今回は「Vector Field Force」ブロックが追加されています。
 「Vector Field Force」ブロックでは、ベクターフィールドを読み込んで適応させています。このおかげでパーティクルがベクターフィールドの影響を受けて動いています。
image.png
図6 Updateコンテキスト

QuadOutput

 QuadOutputコンテキストです。MainTextureにDefaultParticleが設定されており、このTextureが生成されます。
 「Orient」ブロックでは、「Along Velocity」モードとなっており、このモードはパーティクルが進行方向を向いて帯のようになるモードです。
 「SetSize」ブロックはその名の通りサイズを設定しています。
 「SetScaleX」ブロックではスケールを設定しています。[Channels]の項目でx,y,z,xy,xz,yz,xyzの7つから選択します。ブロック名の最後は選択した項目で名前が変わります。その下の[Scale]では前の項目での軸のスケールを設定できます。
 次の「SetScaleY overLife」では、Y軸のOverLifeに応じたスケールを設定しています。軸の設定は[SetScale]と同じです。
 最後の「Color/AlphaoverLife」ブロックではRGB255の白と生成時、消失時付近のα値を0に近くする設定がされています。これによって生成時は透明な状態から始まり、少し経つとα値が255になり姿がハッキリとし、消失時近くになるとまたα値が減って消えるように消失していきます。

image.png
図7 Outputコンテキスト

出力結果

image.png
図8 シンプルスォームパーティクル出力

色々値を触ってみよう

 一通りシンプルスォームパーティクルに触れたので、ある程度どこを触ればどうなるか分かったと思います。
 後は自由にどんどん値を変えたりして触ってみて下さい!
 最初に戻したくなったら画面に置いたノードを全て消し、右クリックして「Create Node」→「System」→「Simple Swarm Particle System」と押せば最初のシンプルパーティクルのノードが配置されます。

まとめ

 今回はシンプルスォームパーティクルのSpawn,Initialize,Update,Outputといったコンテキストに始まり、コンテキスト内の機能としてのブロックを解説しました。
 記事を読んでコンテキストとブロックについて多少なりとも分かって頂けたら嬉しいです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
7