パーティクル シェイプ ノードにカスタム アトリビュートを追加し、そのアトリビュートの値をエクスプレッションで制御することができます。
アトリビュートの追加(Add Attribute)ウィンドウが表示されます。
最小と最大は、アトリビュート エディタまたはチャネル ボックス(Channel Box)に入力できるアトリビュート値の最大値と最小値を設定します。既定値は、アトリビュートの既定値を設定します。アトリビュート値はエクスプレッションで制御できるため、これらのオプションに値を入力しなくても構いません。
エクスプレッションは、最小と最大の値によって制限されるわけではありません。エクスプレッションで指定する値が、アトリビュートに代入されます。エクスプレッションでは、アトリビュート エディタまたはチャネル ボックスに入力されたアトリビュートの値あるいは既定(Default)値を読み取ることができます。
スカラーを選択した場合は、初期状態アトリビュートの追加(Add Initial State Attribute)をオンに設定して、初期状態アトリビュートを作成することはできません。
新しいアトリビュートは、アトリビュート エディタの追加のアトリビュート(Extra Attributes)セクションに表示されます。アトリビュート エディタではアトリビュート名は常に先頭が大文字で表示されますが、入力する場合は、大文字 / 小文字の区別も含めてエクスプレッション エディタに表示されるとおりのスペルを使用する必要があります。
10 個のパーティクルからなるオブジェクト(名前は sunspot)を作成し、そのオブジェクトのパーティクル シェイプノードに浮動小数点型のオブジェクト単位のアトリビュート(名前は glow)を追加します。グロー(glow)アトリビュートに浮動小数点型の値を代入するには、次のような作成時のエクスプレッションを使用します。
sunspotShape.glow = 11.5; print (sunspotShape.glow + "\n");
アニメーションを巻き戻すと、sunspotShape の glow アトリビュートに値 11.5 が渡されます。この値は、print 文によりスクリプト エディタ(Script Editor)に表示されます。このエクスプレッションはオブジェクトのパーティクルごとに 1 回ずつ実行されるため、値は 10 回表示されます。
10 個のパーティクルからなるシェイプ ノード(名前は sunspot)に、ベクトル配列のパーティクル単位アトリビュート(名前は heat)を追加します。各パーティクルの熱(heat)アトリビュートに異なる値を代入するには、次のような作成時のエクスプレッションを使用します。
float $randomNumber = rand(1); sunspotShape.heat = <<$randomNumber,0,0>>; print(sunspotShape.heat + "\n");
アニメーションを巻き戻すと、エクスプレッションがパーティクルごとに 1 回ずつ、全部で 10 回実行されます。
最初の文は $randomNumber 変数に 0 から 1 の範囲に含まれるランダムな数値を設定します。次の文では、1 つのパーティクルの熱アトリビュートにベクトルを代入します。熱アトリビュートに代入されるベクトルの一番左側の要素は、文の実行ごとに異なる値を取る乱数です。真中の要素と右側の要素は常に 0 です。
熱アトリビュートに代入されるベクトルは、<<0.57, 0, 0>>、<<0.32, 0, 0>>、<<0.98, 0, 0>> などになります。