


パーティクルシステムとは、ゲーム物理学、モーショングラフィックス、コンピュータグラフィックスにおける技術の一つで、多数の微小なスプライト、3Dモデル、またはその他のグラフィックオブジェクトを用いて、従来のレンダリング技術では再現が非常に困難な、ある種の「ぼやけた」現象(通常は、非常にカオス的なシステム、自然現象、または化学反応によって引き起こされるプロセスなど)をシミュレートするものです。
1982年の映画『スター・トレックII カーンの逆襲』で架空の「ジェネシス効果」として導入された[ 1 ]他の例としては、火、爆発、煙、流れる水(滝など)、火花、落ち葉、落石、雲、霧、雪、塵、流星の尾、星や銀河などの現象の再現、または光る軌跡、魔法の呪文などの抽象的な視覚効果などがあります。これらは、すぐに消えて効果の発生源から再放出される粒子を使用します。毛皮、髪、草など、多くの繊維を含むものには別のテクニックを使用できます。これは、粒子の寿命全体を一度にレンダリングし、それを問題の物質の単一の繊維として描画および操作することを含みます。
粒子システムは、動作と外観を定義する一連の規則によって導かれる空間内の点のグループとして定義されます。粒子システムは、確率過程を使用して、アフィン変換では表現が難しい動的システムと流体力学の定義を簡略化することで、現象を粒子の雲としてモデル化します。[ 2 ]
粒子システムは通常、以下のモジュールを実装します。
エミッターは、生成率(単位時間あたりに生成されるパーティクルの数)とパーティクルの初期速度ベクトル(生成時に放出される方向)を設定します。メッシュオブジェクトをエミッターとして使用する場合、初期速度ベクトルはオブジェクトの各面に垂直になるように設定されることが多く、パーティクルが各面から直接「噴出」しているように見えますが、これはオプションです。
シミュレーション段階では、生成レートと更新間隔に基づいて新規パーティクルの数が計算され、各パーティクルはエミッターの位置と指定された生成領域に基づいて3D空間内の特定の位置に生成されます。各パーティクルのパラメータ(速度、色など)は、エミッターのパラメータに従って初期化されます。更新のたびに、既存のパーティクルがすべて寿命を超えているかどうかがチェックされ、超えている場合はシミュレーションから削除されます。そうでない場合は、パーティクルの位置やその他の特性は物理シミュレーションに基づいて更新されます。物理シミュレーションは、現在の位置を移動するだけの単純なものから、外力(重力、摩擦、風など)を考慮した物理的に正確な軌道計算を実行する複雑なものまであります。パーティクルとシーン内の指定された3Dオブジェクトとの衝突検出を実行して、パーティクルが環境内の障害物に跳ね返ったり、障害物と相互作用したりするようにすることは一般的です。パーティクル間の衝突は、計算コストが高く、ほとんどのシミュレーションでは視覚的に重要ではないため、あまり使用されません。
更新が完了すると、各パーティクルはレンダリングされます。通常はテクスチャ付きビルボード四角形(つまり、常にビューアの方を向いている四角形)の形式でレンダリングされます。ただし、ゲームでは必ずしも必要ではありません。解像度が低い、または処理能力が限られている環境では、パーティクルは単一のピクセルとしてレンダリングされることがあります。逆に、モーショングラフィックスでは、パーティクルは高解像度でも忠実度を確保するために、完全だが小規模でレンダリングしやすい3Dモデルになる傾向があります。パーティクルはオフラインレンダリングでメタボールとしてレンダリングできます。パーティクルメタボールから計算された等値面は、非常に説得力のある液体になります。最後に、3Dメッシュオブジェクトがパーティクルの「代わり」になることがあります。吹雪は、1つの3D雪片メッシュを複製して回転させ、数千または数百万のパーティクルの位置に合わせることで表現されることがあります。[ 3 ]
1983年、リーブスはアニメーションポイントのみを定義し、火花、雨、火などの動く粒子シミュレーションを作成しました。これらの実装では、アニメーションの各フレームには、ライフサイクルの特定の位置にある各粒子が含まれており、各粒子は空間内の単一の点位置を占めます。消散する火や煙などの効果の場合、各粒子にはフェードアウト時間または固定寿命が与えられます。一方、吹雪や雨などの効果では、通常、粒子が特定の視野から外れると、粒子の寿命が終了します。[ 1 ]
1985年、リーブスは、各パーティクルのライフサイクル全体を同時にレンダリングするという概念を拡張しました。その結果、パーティクルは点ではなく、全体の軌跡を示す静的な物質のストランドに変換されます。これらのストランドは、髪、毛皮、草、および同様の物質をシミュレートするために使用できます。ストランドは、アニメーションパーティクルが従うのと同じ速度ベクトル、力場、生成率、および偏向パラメータで制御できます。さらに、レンダリングされたストランドの厚みを制御でき、一部の実装ではストランドの長さに沿って変化させることができます。さまざまなパラメータの組み合わせにより、硬さ、しなやかさ、重さ、剛毛性、またはその他のさまざまな特性を与えることができます。ストランドは、テクスチャマッピングを使用して、エミッタ表面全体でストランドの色、長さ、またはその他の特性を変化させることもできます。[ 4 ]
1987年、レイノルズは群れ行動、牧畜行動、または学校行動の概念を導入した。ボイドモデルは粒子シミュレーションを拡張し、目標探索、衝突回避、群れの中心化、限定的な知覚などの外部状態相互作用を含める。[ 5 ]
2003年、ミュラーは粘性、圧力、表面張力をシミュレートすることで粒子システムを流体力学に拡張し、その後、平滑化粒子流体力学で離散位置を補間することで表面をレンダリングした。[ 6 ]
ゲームエンジン、デジタルコンテンツ作成システム、エフェクトアプリケーションに組み込むことができるパーティクルシステムコードは、ゼロから作成することも、ダウンロードすることもできます。Havokは複数のパーティクルシステムAPIを提供しており、特にHavok FX APIはパーティクルシステムエフェクトに特化しています。現在Nvidiaの子会社であるAgeiaは、 Unreal Engine 3ゲームを含む多くのゲームで使用されているパーティクルシステムやその他のゲーム物理APIを提供しています。GameMaker StudioとUnityはどちらも、インディー、趣味、または学生のゲーム開発者によく使用される2次元パーティクルシステムを提供していますが、他のエンジンにインポートすることはできません。他にも多くのソリューションが存在し、標準以外のエフェクトや動作が必要な場合は、パーティクルシステムをゼロから作成することがよくあります。