【Unity】GPU Eventで花火を作る

投稿者: | 2021-05-16

特定のブロックから新しくパーティクルをスポーンできる「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にすると、速度を全く受け継がなくなりました。

Blend: 0.52
Blend: 0

コメントを残す

メールアドレスが公開されることはありません。