ICE パーティクルの寿命

 
 
 

パーティクルの寿命は、発生時点から消滅するまでの時間を秒単位で設定します。

デフォルトでは、パーティクルの存続期間はシミュレーション全体の長さになります。エフェクトの設定時にパーティクルのパラメータを調整しているときには、パーティクルを常に使用できる状態にしておくと便利です。また、星、雲、霧など、パーティクルの静止クラウドが必要なエフェクトを作成できるように、パーティクルをシーンに残しておくこともできます。

ただし、パーティクルはいずれ寿命に達して、消滅します。ほとんどのエフェクトで、いずれかのポイントでパーティクルを消滅させる必要があります。これには、パーティクルの寿命を設定し、その期限に従って削除されるようにする必要があります。

注:パーティクルは、フレーム内で正確に同じ時間に発生するわけではありません。これは、パーティクルにはそれぞれ異なる発生時間があることを意味します。つまり、パーティクルの経過時間や寿命までの経過時間の割合を使用している場合、各パーティクルの発生時間がフレーム内でずれるので、ノイズやクランプエフェクトは発生しません。

ここでパーティクルは、その時系列のパーセントに基づいて、カラーが変更されます。

パーティクルの寿命の属性

パーティクルの寿命を定義するためのパーティクルの属性には、[Age]と[AgeLimit]の2つがあります。これらの属性は、このセクションで説明されているように複数のコンパウンドで使用されますが、ICE パーティクル属性を使用するで説明されているように、[Get Data]および[Set Data]ノードで指定してICEツリーで単独で使用することもできます。

属性の一般情報と使用可能なICE属性のリストについては、ICE 属性を参照してください。

パーティクルの時系列制限を設定する

パーティクルの存続期間を一定量に制限したい場合は、[Set Particle Age Limit]コンパウンドを使用する必要があります。このコンパウンドでは、[Age Limit]を設定して、パーティクルが放出後に存続する最長寿命(秒単位)を制御できます。

コンパウンドの中には、値を適切に計算できるように、パーティクルに時系列制限を必要とするものがあります。たとえば、次のように記述します。

  • パーティクル時系列のパーセントを使用するノードまたはコンパウンドには、パーティクルの寿命のパーセントが計算できるように、時系列制限値を設定する必要があります。たとえば、[パーティクルの値を時系列 % で修正](Modify Particle Value by Age %)コンパウンドを使用してパーティクルの値を変更するには、時系列制限を設定する必要があります。詳細については、「ICE パーティクルの値を修正する」を参照してください。

  • パーティクルの[State]システムを使用している場合は、パーティクルの寿命をトリガとして使用して、特定のエフェクトが発生されるようにすることができるため、寿命を設定する必要があります。たとえば、パーティクルが寿命に達すると、新しいパーティクルのセットが放出されます(花火など)。状態の使用については、「ICE パーティクル状態」を参照してください。

  • [Particle Gradient]シェーダでグラディエントを使用したパーティクルのカラーを定義している場合は、寿命を定義し、パーティクルの経過時間をカラーグラディエントの設定方法を定義するための属性として使用する必要があります。詳細については、「[Particle Gradient]シェーダ」を参照してください。

注:パーティクルの寿命を設定することはできますが、パーティクルを実際に除去するために[Delete Particles at Age Limit]コンパウンドを使用する必要があります。次のセクション(寿命に達したパーティクルの削除)を参照してください。

パーティクルの時系列制限を設定するには:

  1. パーティクル放出を作成します。「基本的なパーティクル放出の作成」を参照してください。

  2. [ICE]ツールバーから[パーティクル](Particles) [エミッション時](On Emission) [時系列制限の設定](Set Particle Age Limit)コマンドを選択します。

    このコマンドは[Set Particle Age Limit(パーティクル時系列制限の設定)]コンパウンドをICEツリーに追加し、放出コンパウンドの[Execute on Emit]ポートに接続します。

    次の例では、[Modify Particle Size]コンパウンドおよび[Modify Particle Color]コンパウンドも接続されています。これらのコンパウンドでは、寿命によって決定される時系列%を使用して、パーティクルの存続期間におけるパーティクルサイズおよびカラーの変化について定義できます。

  3. [Set Particle Age Limit(パーティクル時系列制限の設定)]プロパティエディタで、パーティクルの寿命を設定します。この値は、パーティクル放出後の存続期間を秒単位で指定したものです。

    ヒント:ICEツリーでパーティクルの経過時間などの時間を操作している場合は、[ツール]タブの[Seconds to Frames]グループにある[Frames to Seconds]コンパウンドを使用できます。

    たとえば、パーティクルが正確に67フレーム分存続するようにしたい場合は、[Frames to Seconds]コンパウンドの[Seconds]出力を[Set Particle Age Limit]コンパウンドの[Age Limit]ポートをに接続し、寿命として67を指定します。この変換コンパウンドによって、67フレームが2.24秒(または設定されているフレームレート)に変換されます。

パーティクルの寿命のランダマイズと乱流化

[タスク]>[Particles]タブには、寿命の値にランダムさや乱流(ノイズ)を追加して、フレームがちらついたようなエフェクトなどで、複数のパーティクルの存続期間が同時に終了しないようにするいくつかのコンパウンドがあります。ランダマイズしたりノイズを追加すると、特定のタイプのエフェクトで、パーティクルがより自然に見えるようになります。

これらの各コンパウンドについては、「パーティクルの値をランダマイズする」を参照してください。

ここで、パーティクルの時系列制限は、フレームがよりランダムに見えるように乱流化されます。

寿命に達したパーティクルの削除

寿命を設定しても、寿命に達したパーティクルを削除することはできません。寿命に基づいて意図的に削除する必要があります。この操作は、[パーティクルの削除]コンパウンドを使用して行うことができます。このコマンドを使用すると、指定した寿命に達した時点で各パーティクルを削除できます(映画『2300 年未来への旅』をご覧になった方は、あのパーティクルを思い出してください)。

[パーティクルの削除]コンパウンドを使用してパーティクルを削除するには

  1. パーティクル放出を作成します。「基本的なパーティクル放出の作成」を参照してください。

  2. [ICE]ツールバーから[パーティクル](Particles) [エミッション後](After Emission) [パーティクルの削除](Kill Particles)コマンドを選択します。

    このコマンドは[Kill Particles]コンパウンドをICEツリーに追加し、[Simulation Root]コンパウンドの[PostSimExecute]ポートに接続します。

  3. [Kill Particles(パーティクルの削除)]プロパティエディタで、[Age Limit(寿命)]の値を希望する長さに設定します。

パーティクルを削除する

パーティクルの削除機能は、通常は状態システムまたはビヘイビア設定の一部として使用されます。たとえば、特定の場所に到達したときやオブジェクトと衝突したときに、パーティクルを消滅させることができます。

状態については、「ICE パーティクル状態」を参照してください。ビヘイビアコンパウンドについては、「ICE パーティクルサーフェイスインタラクションの動作」を参照してください。

パーティクルを削除するには

  1. パーティクル放出を作成します。「さまざまなICE パーティクル放出の設定」を参照してください。

  2. ICEツリーのPreset Managerから[Delete Particles]コンパウンドを選択し、ICEツリーにドラッグします。

  3. [Execute]出力を、[State]コンパウンドの[Execute on Trigger]または[Execute Once on Enter State]ポート、[Bounce Off Surface]コンパウンドの[Execute on Collide]ポートなど、任意の実行タイプのポートに接続できます。

    このコンパウンドの[Execute]出力を[ICETree]ノードのポートに接続した場合、パーティクルは生成時にすべてのフレームで削除されます)。

障害物との衝突時にパーティクルを削除するには

  1. パーティクル放出を作成します。「さまざまなICE パーティクル放出の設定」を参照してください。

  2. [ICE]ツールバーから[パーティクル](Particles) [衝突](Collision) [衝突時に削除](Delete on Collision)コマンドを選択します。詳細については、「衝突時におけるパーティクルの削除」を参照してください。

ボリュームによるパーティクルの削除

オブジェクトのボリューム内にパーティクルがある場合に、そのパーティクルが削除されるようにできます。オブジェクトのボリューム内の減衰を設定して、パーティクルが削除されるときのシェイプを定義できます。

ここで、パーティクルは、球のボリューム内に入ったときに、定義済み減衰距離内で削除されます。

ボリュームによってパーティクルを削除するには

  1. 内部でパーティクルが削除される1つまたは複数のボリュームオブジェクトを作成します。

  2. パーティクル放出を作成します。「基本的なパーティクル放出の作成」を参照してください。

  3. [ICE]ツールバーから[パーティクル](Particles) [衝突](Collision) [ボリュームで削除](Delete by Volume)コマンドを選択します。

    このコマンドはDelete Particles by Volume(ボリュームによるパーティクルの削除)コンパウンドをICEツリーに追加し、[Simulation Root]コンパウンドの[Execute]ポートに接続します。

  4. パーティクルの削除に使用する1つまたは複数のボリュームオブジェクトを選択します。続けて、各オブジェクトの[Get Data]ノードを[Delete Particles by Volume]コンパウンドの[Volume]ポートに接続します。

    オブジェクトを後からICEツリーに追加することもできます。その場合、各オブジェクトの名前をICE Treeビューにドラッグし、その[Get Data]ノードを作成してから、追加のオブジェクトとして接続します。

  5. [Delete Particles by Volume(ボリュームによるパーティクルの削除)]プロパティエディタで、減衰距離などのパラメータを設定します。