パーティクル オブジェクト(シェイプ ノード)に対して作成可能なエクスプレッションには、ランタイム エクスプレッションもあります。デフォルトでは、再生中にランタイム エクスプレッションにより、各フレームが実行されます。開始時間に移動した場合や、パーティクルが放出されている時間には、ランタイム エクスプレッションは実行されません。
パーティクル オブジェクトに対して両方の種類のエクスプレッションを作成することはよくあります。つまり、先頭フレームでアトリビュート値を初期化する作成エクスプレッションと、それ以降のフレームでアトリビュート値を制御するランタイム エクスプレッションがあります。
ここでは、ランタイム エクスプレッションを作成して、再生中にパーティクル カラーを変更する方法について説明します。
BubblesShape.rgbPP = sphrand(1);
アニメーションを再生すると、パーティクルのカラーがランダムに変化します。ランタイム エクスプレッションは、再生時の rgbPP アトリビュートを制御します。rgbPP はパーティクル単位のアトリビュートなので、ランタイム エクスプレッションは各フレームのオブジェクトにあるパーティクルごとに実行されます。各パーティクルの rgbPP アトリビュートに、引数に 1 を指定した sphrand 関数の実行からの出力が割り当てられます。sphrand は、エクスプレッションで使うのに便利な、Maya に多数組み込まれている数学関数の 1 つです。
引数に 1 を指定した sphrand 関数では、各パーティクルの rgbPP カラーにランダムなベクトルが割り当てられます。ベクトルは、半径 1 の球状領域のランダムなポイントを表します。rgbPP カラーの左側、中央、右側の要素は、-1 以上、1 以下の値を取得します(0 未満の R、G、B 値は 0(黒)として扱われます)。
sphrand 関数は実行ごとに、異なる、ランダムなベクトルを返すので、各パーティクルは異なる、ランダムな rgbPP 値を受け取るため、カラーが異なってきます。カラーはフレームごとに変化します。
開始時間に移動すると、パーティクルは赤くなり、再生中にはランダムなカラーになります。