パーティクル単位のアトリビュートには、パーティクル オブジェクトの各パーティクルのアトリビュート値が保存されます。たとえば、rgbPP アトリビュートには各パーティクルの rgbPP 値が保存されます。
各パーティクルには、固有のパーティクル識別子(数値)があります。パーティクル識別子は、パーティクル オブジェクトのパーティクル単位アトリビュートであるパーティクル ID(Particle Id)に保存されます。パーティクル オブジェクトを作成すると、0 から始まる連続したパーティクル ID が各パーティクルに自動的に割り当てられます。
たとえば、パーティクル ツールを使用してワークスペース内のポイントをクリックし、5 つのパーティクルからなるパーティクル オブジェクトを作成したと仮定します。最初にクリックした位置にパーティクル ID 0(Particle Id 0)のパーティクルが作成され、2 番目にクリックした位置にパーティクル ID 1(Particle Id 1)のパーティクルが作成され、3 番目にクリックした位置にパーティクル ID 2(Particle Id 2)のパーティクルが作成され、以下同様です。
エミッタからパーティクルが放出される場合は、最初に放出されるパーティクルから順番に連続したパーティクル ID が割り当てられます。最初に放出されるパーティクルはパーティクル ID 0、2 番目のパーティクルはパーティクル ID 1、3 番目のパーティクルはパーティクル ID 2 になり、以下同様です。
パーティクル ID アトリビュートを使用して、特定のパーティクルにパーティクル単位のアトリビュート値を代入することができます。
パーティクル ツールを使用して、9 つのパーティクルからなるグリッド(名前は ColorGrid)を作成します。アトリビュート エディタ(Attribute Editor)で、パーティクルのパーティクル レンダー タイプ(Particle Render Type)を球体(Spheres)に設定します。パネル メニューからシェーディング > すべてをスムース シェード(Shading > Smooth Shade All)を選択して、パーティクルをシェーディング モードで表示します。
パーティクルのパーティクル ID に基づいて、各パーティクルに異なったカラーを割り当てることができます。
particleId に基づいてパーティクルのカラーを指定するには
rgbPP というパーティクル単位のアトリビュートが追加されます。このアトリビュートは各パーティクルの RGB カラー要素(赤 / 緑 / 青)を制御します。
パーティクルが選択されていない場合は、RGB PP アトリビュートを追加すると、パーティクルのカラーが黒に変わります。RGB PP アトリビュートを追加すると、パーティクルのデフォルト カラーがオフになり、各パーティクルに <<0,0,0>> というカラー値(黒)が割り当てられます。
球体の代わりに各パーティクルのパーティクル ID(Particle Id)が表示されます。
if (particleId <= 2) rgbPP = <<1,0,0>>; else if ((particleId > 2) && (particleId < 6)) rgbPP = <<1,1,1>>; else rgbPP = <<0,0,1>>;
作成エクスプレッションは、アニメーションを巻き戻すたびに実行されます。パーティクルにカラー割り付けの効果はまだ現れません。数値(Numeric)パーティクル レンダー タイプは rgbPP へのカラー割り当てを無視します。
左側、中央、右の列のパーティクルがそれぞれ赤色、白色、青色で表示されます。
上のエクスプレッションの最初の文は、パーティクル ID が 2 以下であるパーティクルのカラーを赤に設定します。ベクトル <<1,0,0>> は RGB カラー方式で赤色を表します。
2 番目の文は、パーティクル ID が 2 より大きく、かつ 6 より小さいパーティクルのカラーを白に設定します。ベクトル <<1,1,1>> は RGB カラー方式で白色を表します。
3 番目の文は、上記の条件を満たさないパーティクルのカラーを青色に設定します。すなわち、パーティクル ID が 6 以上であるパーティクルが青色になります。ベクトル <<0,0,1>> は RGB カラー方式で青を表します。
if ((particleId % 2) == 0) rgbPP = <<1,0,0>>; else rgbPP = <<0,0,1>>;
アニメーションを再生すると、フレームごとにランタイム エクスプレッションが実行されます。パーティクル ID が偶数のパーティクルは赤色になり、パーティクル ID が奇数のパーティクルは青色になります。
最初の文は剰余演算子(%)を使用して、パーティクル ID を 2 で割った余りを計算し、この余りを 0 と比較します。余りが 0 である場合、このパーティクルに赤色が割り当てられます。RGB カラーの <<1,0,0>> は赤色です。
2 番目の文では、剰余演算の余りが 0 でない場合に、パーティクルを青に設定します。RGB カラーの <<0,0,1>> は青色です。たとえば、パーティクル ID 0 を 2 で割ると商は 0 で余りは 0 です。余りが 0 なので、パーティクル ID 0 を持つパーティクルは赤を受け取ります。
パーティクル ID 1 を 2 で割ると商は 0 で余りは 1 です。余りが 1 なので、パーティクル ID が 1 のパーティクルは青に設定されます。
パーティクル ID 2 を 2 で割ると商は 1 で余りは 0 です。余りが 0 なので、パーティクル ID 1 を持つパーティクルは青を受け取ります。エクスプレッションはオブジェクトの各パーティクルについて実行されます。
その結果、パーティクル ID が偶数であるパーティクルは赤色になり、パーティクル ID が奇数であるパーティクルは青色になります。
フレームごとにランタイム エクスプレッションが実行されます。アニメーションを再生すると、パーティクルが赤色または青色になります。