ランタイム エクスプレッションを使用する
 
 
 

パーティクル オブジェクト(シェイプ ノード)に対して作成可能なエクスプレッションには、ランタイム エクスプレッションもあります。デフォルトでは、再生中にランタイム エクスプレッションにより、各フレームが実行されます。開始時間に移動した場合や、パーティクルが放出されている時間には、ランタイム エクスプレッションは実行されません。

パーティクル オブジェクトに対して両方の種類のエクスプレッションを作成することはよくあります。つまり、先頭フレームでアトリビュート値を初期化する作成エクスプレッションと、それ以降のフレームでアトリビュート値を制御するランタイム エクスプレッションがあります。

ここでは、ランタイム エクスプレッションを作成して、再生中にパーティクル カラーを変更する方法について説明します。

ランタイム エクスプレッションを作成するには

  1. アトリビュート エディタパーティクル単位(配列)アトリビュート(Per Particle (Array) Attributes)セクションで rgbPP フィールドを右クリックし、ポップアップ メニューでダイナミクス前のランタイム エクスプレッション(Runtime Before Dynamics Expression)を選択します。
  2. 次のランタイム エクスプレッションを入力します。
    BubblesShape.rgbPP = sphrand(1);
  3. 作成(Create)ボタンをクリックし、エクスプレッションをコンパイルします。
  4. アニメーションを再生します。

    アニメーションを再生すると、パーティクルのカラーがランダムに変化します。ランタイム エクスプレッションは、再生時の rgbPP アトリビュートを制御します。rgbPP はパーティクル単位のアトリビュートなので、ランタイム エクスプレッションは各フレームのオブジェクトにあるパーティクルごとに実行されます。各パーティクルの rgbPP アトリビュートに、引数に 1 を指定した sphrand 関数の実行からの出力が割り当てられます。sphrand は、エクスプレッションで使うのに便利な、Maya に多数組み込まれている数学関数の 1 つです。

    引数に 1 を指定した sphrand 関数では、各パーティクルの rgbPP カラーにランダムなベクトルが割り当てられます。ベクトルは、半径 1 の球状領域のランダムなポイントを表します。rgbPP カラーの左側、中央、右側の要素は、-1 以上、1 以下の値を取得します(0 未満の R、G、B 値は 0(黒)として扱われます)。

    sphrand 関数は実行ごとに、異なる、ランダムなベクトルを返すので、各パーティクルは異なる、ランダムな rgbPP 値を受け取るため、カラーが異なってきます。カラーはフレームごとに変化します。

  5. アニメーションを巻き戻して、もう一度再生します。

    開始時間に移動すると、パーティクルは赤くなり、再生中にはランダムなカラーになります。

    注:シーンにあるパーティクル オブジェクト(シェイプ ノード)1 つにつき、1 つのランタイム エクスプレッションと、1 つのランタイム エクスプレッションしか使用できません。1 つのパーティクル オブジェクトにある複数のアトリビュートを制御するには、1 つの作成エクスプレッションと 1 つのランタイム エクスプレッションでこの作業を行う必要があります。ほかのタイプのオブジェクトでしているように、アトリビュートごとに異なるエクスプレッションを作成することはできません。したがって、エクスプレッション エディタ(Expression Editor)アトリビュート(Attributes)リストからアトリビュートを選択する必要はありません。