VisualEffectGraphのノードを見てみる

実際どういった使い方をするものなのかを理解するべきだと思うので、サンプルとかで得た情報を元に自分なりにまとめてみようと思いました。

ノード毎にだらっと書いていきます。

順不同。Unity2019.1。VisualEffectraph 5.16.1。

自分で使ってみながら書いてるのと、ソースコードまでは読んだり読まなかったりなので正確な情報ではないかも。


用語
  • コンテキスト---中にブロックを含むメインのかたまり。Spawn,Initialize,Update,~~Outputのこと。 スクリプトでいったらUpdateとかAwakeみたいな決まった時期に処理されるやつというか。
  • ブロック---コンテキストに含まれるもの。Positionとか色とかを設定する。UpdateとかAwake内の詳細な記述というか。
  • ノード---ブロックへとつなげる処理の塊。パーティクルの生成された時間とか加減乗除を参照できたりする。ブロックに値を返す、用意されたメソッド的なやつというか。

Transform Position

transformを出力します。ブロックのSetPositionにつなげると、そのPositionでパーティクルを発生させます。

ブロックのSetPositionだと、スケールとかRotationを設定できない? と思うので、このノードを使ってTransformの値を詳細に設定します。Positionにつなげればスケールとかも反映される。

totaltimeとかにつなげてY軸に動くようにしてみたり。

コンテキストの種類によってはRotationとか設定しても意味なかったりものもある。LineOutputではスケールとか変えても見た目は変わらないはず。

これ単体で使うものではなく、それぞれのX,Y,Zへ別なノードをつなげてブロックに出力するようなもの。

Total Time

VFXが生成されての経過時間。シーン開始からの経過時間とかではないよ! 最初勘違いしてました。VFXをもったオブジェクトをノンアクティブにしたらリセットされる時間。

Perticle ID

パーティクルに割り振られたIDを取得できます。何気に使える。

生成された順番にidが割り振られている(多分)ところが使えます。

上画像のようにModulo(余りを出す)とCompare(分岐,IF)を通すと特定のパーティクルだけ違った数値を出したりすることが可能。

VFXサンプルにあったレーダのDial(目盛り盤)もこれを使ってました。5個おきに長くなるようにLineOutputの「TargetOffsetブロック」につないでました。

Rotate3D

回転させる。Positionに入れられた座標をCenterを中心にAxis軸にAngle度回転させるものだと思います。

PositionはGetAttributePositionノードから入力することが多いかもしれません。粒子一粒ごとの座標を取得して、それをSetPositionブロックにつなげると良いかと。

https://gentome.com/gentomeblog/wp-content/uploads/2019/06/66c19942ab4ba346fdb64ccc04cde373-3.png

↑の例では、Position(Torus)で輪っかの形に粒子を発生させて、その位置をさらにRotate3Dを使って回転させています。Angleを変更させてます。

ただ回転させたいだけならSetAngleブロックの値を変更しても可能。