特定のブロックから新しくパーティクルをスポーンできる「GPU Event」コンテキストを使って、花火を作ってみました。
VFXグラフを作る
GPU Eventは試験的な機能なので、Edit > Preferences… を開いて、Visual Effectsの「Experimental Operators/Blocks」のチェックを入れないと使えません。
チェックを入れると、VFXグラフの何も無いところで、右クリック > Create Node から「GPU Event」コンテキストを作れます。
このコンテキストにイベントを送るためには、「Trigger Event…」ブロックを使います。まずは、打ち上がる花火玉を表現した、上方向に大きくパーティクルを一つずつ発射するVFXグラフを作って、そのUpdateコンテキストに「Trigger Event On Die」ブロックを作りました。
このブロックで、パーティクルが消えたときにスポーンイベントを出力できます。Countを64にすると、64回トリガーできるようです。
この1つ目のパーティクルシステムでは、Initializeコンテキストの「Set Lifetime Random」ブロックでランダムに寿命を設定しているので、ランダムの毎回違うタイミングでパーティクルが消えます。
「Trigger Event On Die」ブロックの「evt」と「GPU Event」コンテキストを接続します。
GPU Eventからは、2つ目のパーティクルシステムの「Initialize Particle」コンテキストに直接接続しています。スポーンコンテキストを挟むとエラーが出ました。
2つ目のパーティクルシステムでは、花火が開くのを表現します。それが、1つ目のシステムのパーティクルが消えた場所で出現するように、Initializeコンテキストで、GPU Eventからのイベントアトリビュートを受け継ぎます。
そのために「Inherit Source…」ブロックを使っています。位置だけでなく速度のブロックも使いました。速度は影響を弱めるために、SetでなくBlendにしています。
これはブロックを選択してインスペクタで、Compositionを「Blend」にすると変更できます。Blendの値を0にすると、速度を全く受け継がなくなりました。