数百万個の個別粒子のアルゴリズム・シミュレーション——雨、雪、塵、爆発。計算負荷は大きいが、有機的な大量エフェクトの唯一の実用的解。
パーティクルシステム
撮影現場でもコンポジットでも、物理法則に従って動く無数の同一または類似のオブジェクトが必要になることがあります――雨、雪、塵、爆発の火花、鳥の群れなどです。一つ一つキーフレームを設定したりアニメーションさせたりする力任せの方法はすぐに破綻します。そこで登場するのがパーティクルシステムです。アルゴリズムが数千から数億個の微小なプリミティブ――ほとんどは単純なジオメトリやスプライト――を管理し、それらに速度、加速度、寿命、衝突、力場といったルールを適用します。各パーティクルは個別の指示ではなく、あらかじめ定義されたロジックに従います。
実際にはどのように機能するか:まずエミッター、つまりパーティクルが生まれる源を設定します。次にパラメータを設定します:放出レート(1フレームあたりのパーティクル数)、初期方向と広がり、重力、風、抵抗。各パーティクルは一定時間生存し、その間に色やサイズを変更したり、衝突オブジェクトと相互作用したりできます。Houdini、Maya nCloth、あるいはゲームエンジンといった最新のエンジンは、これをリアルタイムでレンダリングするか、キャッシュされたシミュレーションとして出力します。一つの爆発には500万〜5000万個のパーティクルが含まれることがあります。計算負荷は大きいですが、パーティクルシステムなしでは無数の個別のオブジェクトを手動で管理することになり、技術的に不可能です。
古典的な応用例:炎と煙は、流体ダイナミクス(ボクセルベースの流動)と組み合わせたパーティクルシミュレーションによってほぼ完全に機能します。雨と雪は最も簡単なケース――一定のエミッター、直線的な落下、抵抗係数です。爆発には多層的なシステムが必要です:インパルス用の速く明るいパーティクル、その後に続くデブリや煙用の遅いパーティクルです。砂や塵の雲は、風場や重力操作の恩恵を受けます。各ソフトウェアには独自のツールがあります:Nuke(3D Gizmos)、Cinema 4D(Thinking Particles)、Blender(Cycles統合)、RenderMan(最終的なプロダクションレンダリング用)。
コンポジットでのコツ:パーティクルの出力は、ほとんどの場合、ベロシティ、デプス、オブジェクトIDなどが個別のパスとして出力される生のレイヤーです。これにより、シミュレーション全体をやり直すことなく、モーションブラー、被写界深度、カラーコレクションなどを後から微調整できます。キャッシュはあなたの親友です:シミュレーションは一度実行され、ジオメトリシーケンスまたはbgeoファイルとしてバッファリングされ、その後何度でも読み込んでレンダリングできます。間違いは最終コンポジットでしか気づかない――だから早期プレビューを行うのです。間違ったパーティクルでテイクを台無しにするのは高くつきます。