1 / 4 共通のPropertyと粒子ごとのAttribute
このステップでは、VFX Graphの基本構成を確認し、PropertyとAttributeの役割を区別します。
四つのContextを確認する
VFX Graphは、Contextを通して粒子の発生、初期設定、更新、描画を組み立てます。前期の第12回を受講していない場合にも、まず次の四つの役割を確認してください。
| Context | この回で担当する処理 |
|---|---|
| Spawnは、発生数と発生のタイミングを決めます。 | 再生開始時に粒子をまとめて発生させます。 |
| Initialize Particleは、新しい粒子へ初期値を設定します。 | 最初の位置、保存用の位置、寿命、大きさを設定します。 |
| Update Particleは、生きている粒子を更新します。 | 保存した位置と共通の操作値から現在の位置を求めます。 |
| Output Particle Quadは、粒子を板状の画像として描画します。 | 粒子群の形を画面へ表示します。 |
Context内のBlockは、粒子の位置や色などを書き換えます。Contextの外に置くOperatorは、計算した値を接続先へ渡します。ここでは、「値を計算する部分」と「粒子へ値を書き込む部分」を区別して把握してください。
一つの値を群れ全体で共有する
Propertyは、VFX Graphに与える共通の入力です。Exposedを有効にしたPropertyは、Visual EffectコンポーネントのInspectorなどから変更できます。
この回では、次の値をPropertyとして用意します。
| 名前 | 型と初期値 | 値の役割 |
|---|---|---|
Count | Float、10000 | 一度に発生させる粒子数を指定します。整数の値を入力します。 |
Spread | Float、1 | 保存した配置の広がりを指定します。 |
Radius | Float、4 | 変形先の球殻の半径を指定します。 |
Blend | Float、0 | 元の配置から球殻状の配置へ移る割合を指定します。 |
BlackboardのPropertiesから各項目を作成し、Exposedを有効にしてください。Spreadは0.25〜1、Blendは0〜1を操作範囲とします。
CountはSpawnで使います。すでに発生した粒子数は、Countの値を変更するだけでは変わりません。粒子数を変更した比較では、エフェクトを再初期化し、粒子を発生させ直します。
粒子ごとに異なる値を保存する
Attributeは、粒子ごとに持つデータです。例えば、positionは現在の位置、ageは発生からの経過時間、lifetimeは寿命を表します。
この回では、最初の位置を保存するCustom Attributeとしてhomeを追加します。homeは標準で用意された特別な機能名ではなく、この教材で付けた名前です。
| データ | 粒子Aの例 | 粒子Bの例 |
|---|---|---|
共通のSpread | 1を参照します。 | 1を参照します。 |
個別のhome | (2, 0, 0)を保存します。 | (0, 1, 0)を保存します。 |
home * Spread | 位置は(2, 0, 0)になります。 | 位置は(0, 1, 0)になります。 |
Spreadを0.5へ変えると、Aは(1, 0, 0)へ、Bは(0, 0.5, 0)へ移動します。同じ式でも、各粒子が持つ入力が異なるため、結果の位置も異なります。
GPUへ任せる処理を理解する
VFX Graphは、GPU上で粒子ごとの更新を並列に実行できます。一個ずつ粒子を選んで位置を書き換える必要はありません。
ただし、粒子数を増やすと、粒子のデータを保持するメモリや、更新・描画の処理量も増えます。また、GPU粒子は、そのまま個別のColliderを持つGameObjectになるわけではありません。大量の見た目を作る用途と、個別のゲームオブジェクトを制御する用途を分けて考えます。
- Spawn・Initialize・Update・Outputの役割を説明できます。
- Propertyが共通の入力で、Attributeが粒子ごとのデータであることを説明できます。
-
CountとSpreadを変更した際に、再初期化が必要か判断できます。 - 粒子群の位置計算をGPUへ任せる構成を説明できます。