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

 
 
 

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

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

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

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

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

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

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

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

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

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

    注:

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