値 > MAXWrapper > ノード > GeometryClass > パーティクル システム |
3ds Max には従来のパーティクル システム オブジェクトを操作する 5 つの <node> 関数があり、個々のパーティクル情報を取得または設定できます。これらの関数は、「at time」コンテキスト句によって設定されるときのパーティクルに関する情報か、または時間コンテキストが有効になっていない場合には、現在のタイム スライダによって設定される時点のパーティクルに関する情報を返したり設定したりします。
3ds Max 6 以降 の パーティクル フロー システムは、MAXScript から広範にアクセスできます。
パーティクル フロー関連の MAXScript メソッドについては、「パーティクル フローと MAXScript」を参照してください。
これらの関数を使うときの参考として、以下に 3ds Max における従来のパーティクル システムの働きについて簡単に説明します。
パーティクル システムは、大きなパーティクルの配列を維持することによって、ある任意の時に存在するパーティクルのすべてを保持します。
この配列の中では、個々のパーティクルがインデックスで識別されます。ある 1 つのパーティクルが消滅すると、そのパーティクルが後になって再生され、別のパーティクルのように見えることがあります。
アニメーションの過程では、配列におけるパーティクルのインデックスで指定されるスロットが再利用されながら、同じパーティクルが生成と消滅を繰り返します。
ここで説明する関数の中には、このインデックスを使ってパーティクルを識別するものがあるので、アニメーションの過程で、パーティクルのスロットが再利用されるにつれて、「同じ」パーティクル(インデックスで同一と識別されるパーティクル)が新しいパーティクルになるという状況が発生することがあります。
このことを確認するための方法として、パーティクルの「エージ」を調べる方法があります。エージがゼロ(または時間の解像度によっては小さい値)に戻る場合は、「新しい」パーティクルになったことがわかります。
たとえばアニメーションが始まるときや、ユーザが「爆発的」放出をセットアップするときのように、ある任意の時にパーティクルが実際にはない場合、位置、速度、およびエージをとるこれらの関数は、 undefined を返します。
これは、このパーティクルが現在存在していないことを示します。
システムにおける現在のパーティクル スロットの数を整数値で返します。この値は、シーンが現在レンダリング中である場合を除き、ビューポート内に描画されるパーティクルの数です。シーンをレンダリング中の場合は、パーティクルがレンダリングで評価されたかどうかによって、返される値がレンダリング回数かビューポート内の数のどちらかに決定されます。
このサイズは、パーティクル システムのパラメータロールアウトで設定されます。サイズは、特定のパーティクル システムで、すべてのパーティクルにつき 1 つです。これらの関数を使ってパーティクルにオブジェクトをアタッチする場合は、個々のオブジェクトを任意のサイズに設定できます。
インデックスで指定されたパーティクルについて、現時点での座標位置を point3 型で返します。インデックスの基数は 1 です。座標は、現行の作業座標系における座標が返されます。現時点でこのパーティクルが存在していない場合は、 undefined を返します。
インデックスで指定されたパーティクルについて、現在の速度ベクトルを point3 型で返します。返されるベクトルは、現行の作業座標系で回転されます。現時点でこのパーティクルが存在していない場合は、 undefined を返します。
インデックスで指定されたパーティクルの現在のエージを、そのパーティクルが最後に生成されたときから経過した時間の値として返します。パーティクルは循環するので注意してください。これは、循環するエージの値を調べることで確認できます。現時点でこのパーティクルが存在していない場合は、 undefined を返します。
パーティクルの存続時間(パーティクルが「生存」する時間的長さ)を返します。現時点でこのパーティクルが存在していない場合は、undefined を返します。
3ds Max 2008 以降 で使用可能です。従来、Avguard 機能拡張として提供されていた機能です。
パーティクル ジオメトリ(メッシュ)の存在位置を(パーティクルの位置に相対的に)表す値を返します。現時点でこのパーティクルが存在していない場合は、undefined を返します。
これは、たとえば、パーティクル モーション ブラーなどによって使用されます。シェーディングしているポイントのワールド空間におけるポイント、ParticleSize() からのパーティクルのサイズ、および ParticleCenter() からのメッシュの位置を取得します。これらの情報を元にポイントの所在を認識して、ヘッドとテールをより透明にします。
PARTCENTER_HEAD - パーティクル ジオメトリは、パーティクルの位置の背後にあります。
PARTCENTER_CENTER - パーティクル ジオメトリをパーティクルの位置にセンタリングします。
PARTCENTER_TAIL - パーティクル ジオメトリはパーティクルの位置の正面にあります。
3ds Max 2008 以降 で使用可能です。従来、Avguard 機能拡張として提供されていた機能です。
指定されたパーティクルのワールド空間サイズを返します。現時点でこのパーティクルが存在していない場合は、undefined を返します。
3ds Max 2008 以降 で使用可能です。従来、Avguard 機能拡張として提供されていた機能です。