そのノード本当に必要?Attribute Block Options

VFX Graph で Set Position などのアトリビュートブロックを使うとき、インスペクターの中にオプションが表示されているのはご存知でしょうか。
ブロックをクリックするとインスペクターに現れるこれらのオプションです。

これらのオプションを使いこなすことで、VFX Graph は更に使いやすくなります。

Set Attributeブロックのオプション詳細

まず、いちばん上の Attribute オプションは対象となるアトリビュートの種類を設定します。
アトリビュートの種類を間違えてしまった場合などにここから修正できます。

次にある Composition オプションは、値をどのように書き込むのかを設定します。
Overwrite は単純に値を変更するだけですが、Add で現在値に対して足し算を行ったり、Multiply で掛け算を行ったりできます。
さらにもうひとつ Blend というオプションも用意されています。
Blend を選択すると、ブレンド率を指定して現在値に対して値を混ぜ込むことができます。

Source オプションは、値をどこから取得するのかを設定します。
これは要するに Inherit Source Attributeブロックとの切り替えに使うオプションです。
Slot から Source に切り替えると、Inherit Source Attributeブロックに切り替わります。

最後の Random オプションは、アトリビュートの値を乱数で上書きします。
ここでは Per Component と Uniform のふたつのオプションを選べます。

Uniform では 値 A から値 B を結ぶ線の上からランダムに値を選びます。

これに対して Per Component ではX, Y, Z の各要素で独立した乱数を使うため、空間的あるいは面的な広がりが生じます。

Attribute from Curveのオプション詳細

今までは Set Attribute ブロックのオプションを見てきましたが、次に Attribute from Curve ブロックのオプションを見ていきましょう。
Attribute オプションや Composition オプションは、今まで見てきた Set Attribute ブロックと同様です。
その下にある Sample Mode はカーブをサンプルする方法、つまりカーブからどのように値を拾ってくるのかその方法を決める設定です。

このオプションにはOver Life、By Speed、Random、Random Constant Per Particle、Customの計5種類があります。
Over Life はパーティクルの時間軸に沿ってサンプルします。

By Speed はパーティクルの速度を基準にサンプルします。

Random は毎回カーブのランダムな位置をサンプルします。

Random Constant Per Particle もカーブをランダムにサンプルしますが、パーティクル毎に固定のサンプル位置を決めて毎回その値を返すようになっています。

最後の Custom ではサンプル位置をスロットから入力できます。

実用例:乱数に偏りを持たせてみる

解説したオプションには様々な使い方があります。
例えば僕がよく使うのは、カーブと Random の組み合わせで乱数に偏りを持たす、というテクニックです。

まず、偏りのない一様に分布する乱数で、パーティクルのサイズを決めるとどうなるのか見てみましょう。
ランダムにバラけているように見えますが、大きいサイズのパーティクルの方が目立つため、どちらかと言うと粒の大きなパーティクルが密集している、という印象を受けます。

このような場合、下図のように偏りのあるカーブを使って小さい値が多く選ばれるようにします。
そうすれば、このように小さな粒の存在を目立たせることができます。

このようにアトリビュートブロックのオプションを使いこなすことで、グラフを複雑化することなく表現を作り込んでいくことができます。
ぜひ使いこなしてください