パーティクルのライフスパンを設定する

 
 
 

パーティクルと nParticle にライフスパンを設定することによって、指定した存続期間が経過した後にパーティクルをシーンから消滅させることができます。パーティクル ツール(Particle Tool)または nParticle ツール(nParticle Tool)で作成したパーティクルまたは nParticle にライフスパンを設定することはできますが、一般にライフスパンは、放出されるパーティクルに対して使用します。たとえば、ライフスパンを使用して、放出された煙や火をフェード アウトさせることができます。ライフスパンは、すべてのパーティクルについて一括に、またはパーティクル単位で設定できます。

注:

パーティクルのライフスパンに関する以下のセクションは、nParticle オブジェクト、nParticleShape ノードのアトリビュート エディタ(Attribute Editor)にも該当します。

すべてのパーティクルと nParticle オブジェクトは、以下のアトリビュートを持っています。

オブジェクト単位のライフスパン アトリビュート

パーティクル単位のライフスパン アトリビュート

これらのアトリビュートを組み合わせてライフスパンを制御します。

オブジェクト単位のライフスパンを設定する

オブジェクト単位のライフスパンを設定すると、パーティクル オブジェクト内のすべてのパーティクルに同一のライフスパンが割り当てられます。パーティクルを際限なく存続させることも、すべてのパーティクルを同じ存在時間で消滅させることもできます。

パーティクルを際限なく存続させるには

  1. パーティクル オブジェクトを選択し、アトリビュート エディタ(Attribute Editor)を表示します。
  2. ライフスパン アトリビュート(Lifespan Attributes)セクションで、ライフスパン モード(Lifespan Mode)不滅(Live forever)に設定します。

同じ存在時間でパーティクルが消滅するようにするには

  1. パーティクル オブジェクトを選択し、アトリビュート エディタ(Attribute Editor)を表示します。
  2. ライフスパン アトリビュートセクションで、ライフスパン モード定数(Constant)に設定します。
  3. ライフスパンに目的の値を設定します。

    ライフスパンの値は、パーティクル オブジェクトが生成されてから消滅するまでの秒数です。パーティクル ツール(Particle Tool)を使用して作成したパーティクル オブジェクトは、シーンの最初のフレームの開始直後に作成されたとみなされます。エミッタ パーティクルは、それが放射されるときに作成されます。既定値は 1 です。この場合、1 秒が経過するとパーティクル オブジェクトは消滅します。

    ヒント:

    パーティクルが消滅しない場合は、ライフスパンが大きい値(そのシーンのタイム スライダ(Time Slider)の時間を超える数)に設定していないかを確認してください。

パーティクル単位のライフスパンを設定する

パーティクル単位のライフスパンを設定すると、パーティクル オブジェクト内のそれぞれのパーティクルにそれぞれ異なるライフスパンが割り当てられます。パーティクルを任意の存在時間で消滅させたり、個々のパーティクルにライフスパンを割り当てたり、エクスプレッション(式)を使用してライフスパンを制御したりできます。

ランダム存在時間でパーティクルが消滅するようにするには

  1. パーティクル オブジェクトを選択し、アトリビュート エディタ(Attribute Editor)を表示します。
  2. ライフスパン アトリビュート(Lifespan Attributes)セクションで、ライフスパン モード(Lifespan Mode)ランダム範囲(Random range)に設定します。
  3. ライフスパンに目的の値を設定します。
  4. ランダム ライフスパン(Lifespan Random)に希望する値を設定します。

    ライフスパンは、ライフスパンを平均値とし、ランダム ライフスパンを分布の幅として、均一に分布されます。

    たとえば、ライフスパンが 3 で、ランダム ライフスパンが 2 の場合は、それぞれのパーティクルのライフスパンは 2 から 4 までです。

    ライフスパン モード(Lifespan Mode)がランダム範囲(Random range)の場合の乱数列は、パーティクル オブジェクト内に維持され、リワインドしたときに自動的に再シードされます。乱数列を自分で再シードする必要はありません。

  5. 乱数列を変更したい場合は、一般シード(General Seed)の値を指定します。

    通常、この値を変更する必要はありません。外観が同じ 2 つのパーティクル オブジェクトが必要な場合は、他方のパーティクル オブジェクトの一般シード値と一致するように、この値を設定できます。

    注:

    ライフスパン(Lifespan) = 4、ランダム ライフスパン(Lifespan Random) = 2 の場合、数学的にはエクスプレッション(式) $lifespanPP = 3 + rand(2); と等しくなりますが、ライフスパンを設定するこれらの 2 つの方法を使用した場合の結果は、乱数列どうしが異なるため等しくなりません。

個々のパーティクルのライフスパン を制御するには

  1. パーティクル オブジェクトを選択し、アトリビュート エディタ(Attribute Editor)を表示します。
  2. ライフスパン アトリビュートセクションで、ライフスパン モード(Lifespan Mode)ライフスパン PP のみ(lifespanPP only)に設定します。
  3. パーティクル単位(配列)アトリビュート(Per Particle (Array)Attributes)セクションで、PP ライフスパン(Lifespan PP)フィールドを右クリックし、ポップアップ メニューでコンポーネント エディタ(Component Editor)を選択します。
  4. (コンポーネント タイプで選択します(Select by component type)アイコン)をクリックします。
  5. ワークスペースで、編集したい特定の複数のパーティクルを選択し、コンポーネントのロード(Load Components)をクリックします。

    コンポーネント エディタの使用法については、コンポーネント エディタを使用してパーティクル アトリビュートを設定するを参照してください。

  6. PP ライフスパンの入力フィールドをクリックし、値を入力します。

エクスプレッションを使用してライフスパンを制御するには

  1. パーティクル オブジェクトを選択し、アトリビュート エディタ(Attribute Editor)を表示します。
  2. ライフスパン アトリビュート セクションで、ライフスパン モードライフスパン PP のみに設定します。
  3. パーティクル単位(配列)アトリビュートセクションで、PP ライフスパンフィールドを右クリックし、作成時のエクスプレッション(Creation Expression)またはダイナミクス前のランタイム エクスプレッション(Runtime Expression Before Dynamics)またはダイナミクス後のランタイム エクスプレッション(Runtime Expression After Dynamics)を選択します。
  4. 作成時のエクスプレッションまたはランタイム エクスプレッションを作成し、固有の値をそれぞれのパーティクルに割り当てます(『MEL とエクスプレッション』マニュアルを参照)。

    このアトリビュートやその他のパーティクル単位のアトリビュートをキー設定することはできません。

ライフスパンの定義方法

finalLifespanPP はパーティクル単位の読み取り専用のアトリビュートで、使用しているモードに関わらずライフスパン計算の最終結果を保存します。particleShape は、パーティクルを消滅させる場合とランプを参照する場合に finalLifespanPP を使用します。

どのような方法であっても(たとえば、エクスプレッション、ランプ、またはコンポーネント エディタ(Component Editor)を使用して)、自分で finalLifespanPP の値を設定することはできません。finalLifespanPP は、存在時間と同様に、particleShape が内部的に計算するアトリビュートです。しかし、エクスプレッションを使ってこの値を読み込むことはできます(その値を代入することはできません)。

ランダム範囲モードでは、ライフスパンは、それぞれのパーティクルが作成されたときにそれぞれのパーティクルについて決定され、finalLifespanPP に保存されます。ライフスパンまたはランダム ライフスパンを変更した場合、その変更は、新規のパーティクルには適用されますが、すでに作成されているパーティクルには適用されません。巻き戻しまたは再生した場合は、すべてのパーティクルに影響を与えます。