パーティクル シェイプ(particle shape) ノードには、次の 2 種類のダイナミック アトリビュートを追加することができます。
パーティクル単位のアトリビュートを使用すると、オブジェクトの各パーティクルのアトリビュート値を個別に設定することができます。オブジェクト単位のアトリビュートを使用すると、オブジェクトの全パーティクルのアトリビュートに同じ値を代入することができます。
たとえば、パーティクル単位の不透明度 PP (Opacity PP)アトリビュートを使用すると、オブジェクトの各パーティクルごとに異なる不透明度を指定することができます。オブジェクト単位の不透明度(opacity)アトリビュートを使用する場合は、オブジェクトの全パーティクルを同じ不透明度に設定する必要があります。
パーティクル単位のアトリビュートには、オブジェクトの各パーティクルのアトリビュート値が保存されます。たとえば、パーティクル オブジェクトには単一の opacityPP アトリビュートしか存在しませんが、この opacityPP アトリビュートには各パーティクルの不透明度が保存されます。このアトリビュートは値を配列内に保持します。簡単に言えば、配列とはリストのことです。
複雑なエフェクトを作成するにはパーティクル単位のアトリビュートが最も適していますが、パーティクル単位のアトリビュートにキーフレームを設定することはできません。オブジェクト単位のアトリビュートにはキーフレームを設定することができます。
不透明度(opacity)やカラー(color)など、さまざまなエフェクトを実現するために、パーティクル単位のアトリビュートまたはオブジェクト単位のアトリビュートを追加することができます。
アトリビュート エディタ(Attribute Editor)でパーティクル シェイプ(Particle Shape)タブを調べると、パーティクル シェイプ(Particle Shape)ノードのアトリビュートが、パーティクル単位であるか、それともオブジェクト単位であるかがわかります。パーティクル単位のアトリビュートは、このタブのパーティクル単位(配列)アトリビュート(Per Particle (Array) Attributes)セクションにすべて表示されます。
オブジェクト単位のアトリビュートは、このタブの別の箇所に表示されます。多くのアトリビュートは、パーティクル単位(配列)アトリビュート(Per Particle (Array) Attributes)セクションの上部(パーティクル アトリビュート(Particle Attributes)、レンダー アトリビュート(Render Attributes)セクションなど)に表示されます。
なお、追加されたダイナミック アトリビュートの多くは、エクスプレッション エディタ(Expression Editor)に表示された名前からも、パーティクル単位であるかオブジェクト単位であるかを判断できます。名前の末尾が PP であればパーティクル単位のアトリビュートであり、それ以外のものは通常、オブジェクト単位のアトリビュートです。
ただし、位置、速度、加速度の各アトリビュートは名前の末尾が PP ではありませんが、パーティクル単位のアトリビュートです。
パーティクル シェイプ(Particle Shape)について、オブジェクト単位またはパーティクル単位のダイナミック アトリビュートを作成する最も一般的な方法は、アトリビュート エディタ(Attribute Editor)のダイナミック アトリビュートの追加(Add Dynamic Attributes)セクションにある不透明度(Opacity)ボタン、またはカラー(Color)ボタンをクリックすることです。
たとえば、不透明度(Opacity)ボタンをクリックして表示されるウィンドウでは、不透明度をオブジェクト単位のアトリビュートとして追加するか、パーティクル単位のアトリビュートとして追加するかを選択することができます。
パーティクル単位のアトリビュートを選択した場合は、エクスプレッション エディタ(Expression Editor)のアトリビュート(Attributes)リストに particle shape ノードの新しいアトリビュートとして Opacity PP が表示され、オブジェクト単位のアトリビュートを選択した場合は不透明度(opacity)と表示されます。
パーティクル単位のアトリビュートとオブジェクト単位のアトリビュートの両方を追加すると、パーティクル単位のアトリビュートの方が優先されます。たとえば、不透明度と不透明度 PP の両方を追加すると、オブジェクトのパーティクルの不透明度は不透明度 PP アトリビュートによって制御されます。
ランタイム エクスプレッションを使用して、数多くのパーティクルを含むパーティクル オブジェクトのオブジェクト単位アトリビュートの読み取りや書き込みを行う場合は、それらのアトリビュートを非パーティクル エクスプレッションで読み書きすれば、エクスプレッションの実行スピードを上げることができます。
非パーティクル エクスプレッションは、1 つのオブジェクトについて 1 回だけ実行されます。一方、パーティクル エクスプレッションはオブジェクトのパーティクルごとに 1 回ずつ実行されます。オブジェクト単位のアトリビュートをフレームごとに複数回操作するのは冗長なので、それらのアトリビュートを非パーティクル エクスプレッションで操作すると、処理時間を節約することができます。