FLIP ~パーティクルベースのソルバー

成熟期のCG流体シミュレーションにおけるBridson氏の大きな功績として、忘れてはならないのが、FLIP(Fluid-Implicit-Particle)とよばれるナビエ・ストークスの方程式の解法を導入して、パーティクルベースのCG流体シミュレーションのソルバーを確立したことだ。

FLIPそのものは、1980年代のCFD分野において、おもに密度が変化するようなダイナミックな流体の動き(Compressible Flow)を算出する方法として活用されていた。基本的に、計算精度を重視するCFD では、物理的に正確なグリッドベース(流体全体を一律のグリッドセル~六面体の場合にはボクセルとよばれる~に分割する方法)のナビエ・ストークスの方程式の解法を用いて、あらゆる流体の動きを視覚化しようとする。しかし、密度が大きく変化するような激しい流体の動きの場合には、この方法では解が発散してしまうケースが多い。ナビエ・ストークスの方程式を解くプロセスのなかでも、最も解が発散しやすいのが、Advection(移流)とよばれる流体らしい動きを作り出す工程だ。そこでFLIPでは、Advection以外の工程はグリッドベースで方程式を解き、その結果算出されたグリッドの速度の変化量を、あらかじめグリッド内に仕込んでおいたパーティクルに割り振る。そして、割り振られた速度でパーティクルを動かすことによって、ちょうどAdvectionの工程を解いて算出されるような流体らしい動きを作り出す。

Advectionの工程にパーティクルの概念を持ち込んだ方法としては、前編で紹介したJos Stam(ヨース・スタム)氏考案のセミ・ラグランジアン法(Semi-Lagrangian Scheme)がよく知られている。しかしこの方法におけるパーティクルは、あくまでこの工程をグリッドベースで解くためのガイド役を果たしていたに過ぎなかった。これに対してFLIPでは、実際にAdvectionの工程を解くという計算を行わずに、この計算処理を“パーティクルを動かす”という処理で置き換える。物理的に正確な流体シミュレーションにおいて、パーティクルならではの利点をよりダイレクトに生かすことができる方法ともいえる。Bridson氏は、FLIPのこのような特徴が、CG流体シミュレーションにおいて発揮するであろう潜在能力の高さに着目したのだった。

(C)Robert Bridson,2006


FLIPでは、あらかじめ各グリッドセルに8つほどのパーティクルを仕込んでおき、ナビエ・ストークスの方程式を解く際の各タイムステップで、次の①~⑤の計算を行う。
①:パーティクルがもっている速度をルックアップする(捜し出す)。
②:グリッドセル内に含まれる①のパーティクルの速度を平均化して、そのグリッドセルの速度とする(CG流体シミュレーションの一般的なグリッドセルでは、6面体の各面の中心点で速度が定義されている)。
③:ナビエ・ストークスの方程式のAdvection以外の工程をグリッドベースで解いて、グリッドセルの速度をアップデートする。
④:③のアップデートによるグリッドセルの速度の変化量を、パーティクルがもっている①の速度に足し合わせる。このパーティクルの速度が、次のタイムステップにおける①の パーティクルの速度となる。
⑤:③でアップデートされたグリッドセルの速度を補間して速度ベクトル場を生成し、この速度ベクトル場に沿ってパーティクルを移動させる。この"移動" がAdvectionの計算工程に相当する。

FLIP着目のきっかけから、発表まで

Bridson氏がFLIPに着目することになったきっかけは、2004年にユタ大学で開催されたACM(Association for Computing Machinery:アメリカ計算機学会)のワークショップだった。このワークショップは、ビジュアル・エフェクツ(VFX)分野の人々と、ビジュアライゼーションの研究分野の人々とのコミュニケーションを目的にしたものだったそうだ。ここで行われたプレゼンテーションを通して、MPM(Material Point Method)とよばれる、FLIPに極めて近い方法が、CSAFE (Communications Specification for Fitness Equipment:フィットネス機器のデータ通信規格) の研究に活用されていることを知ったのだ。

CG流体シミュレーションでは、流体のサーフェース表現が非常に重要である。それゆえに、前編で紹介した創世記のNick Foster(ニック・フォスター)氏やFedkiw氏の研究でも見られたように、流体シミュレーションとパーティクルを用いたシミュレーションを融合させる数々の試みが続けられてきた。しかし、これらの方法は、基本的に流体シミュレーションの基盤となっているナビエ・ストークスの方程式を解く工程と、パーティクルシミュレーションの工程とが別々のプロセスになっていたため、パーティクルを扱う工程が煩雑になりがちだった。

これに対してFLIPでは、ナビエ・ストークスの方程式を解く工程が、グリッドセルとパーティクルの両者を用いて構築されているため、パーティクルを扱うための別処理を加えずとも、流体シミュレーションそのものを実行するだけで、パーティクルがもつ利点をより物理的に正確に生かすことができる。ただし、CFD分野で考案されたオリジナルのFLIPは、密度の変化する流体を対象として、そのアルゴリズムが構築されていた。これに対してCGの分野で扱うのは、密度が変化しない流体(Incompressible Flow)がほとんどだ。そこでBridson氏は、オリジナルのFLIPのアルゴリズムを、密度が変化しない流体にも対応できるように書き換え、CG流体シミュレーションに適したパーティクルベースのソルバーとして生まれ変わらせた。

この方法は、SIGGRAPH2005でBridson氏の研究室から発表された“Animating Sand as a Fluid”という論文において、初めて紹介された。タイトルどおり、この論文の直接的な目的は、流体シミュレーションを用いてリアルな砂の動きを作り出すところにあったのだが、実質的にはFLIPの考え方を導入したパーティクルベースのソルバーの利点をアピールしたものとなっていた。以後、このソルバーはCG流体シミュレーションの研究分野に着実に浸透してゆくことになった(本リポートの第1回で紹介した水の音のシミュレーション“Harmonic Fluids”でも、アコースティック・バブルの動きを作り出すために、このソルバーが活用されていた)。

"Animation Sand as a Fluid"
(Yongning Zhu,Robert Bridson,SIGGRAPH2005)(C)ACM2005


下段:FLIPの考え方を導入したパーティクルベースのソルバーを用いて、砂のアニメーションを作成したもの。
上段:下段の砂のパーティクルを、水のパーティクルに置き換えて実行したもの。

理論と映画VFXとの融合

新しいCG理論やCG技術の実用面への浸透は、往々にしてその理論や技術を考案した本人によってもたらされる場合が多い。FLIPソルバーの場合も同様で、その実用化は、Bridson氏本人によってもたらされた。そのきっかけとなったのは、スタンフォード大学時代にILM社で共に作業をした、Marcus Nordenstam(マーカス・ノルデンスタム)氏だった。スウェーデン出身のNordenstam氏は、『スター・ウォーズ』新シリーズのシミュレーション技術開発のため、ILM社に加わったのだが、その後母国に近いイギリスのDouble Negative社に籍を移した。ヨーロッパでの生活が恋しかったこと、アメリカでの経験を生かしてヨーロッパの映画VFXに新たな動きを作り出したかったことがその理由だったそうだ。Nordenstam氏は、Double Negative社で新たな流体シミュレーションのソルバーを開発することになり、その技術支援をBridson氏に求めたのだった。

依頼を受けた2006年には、Bridson氏の研究室はすでにSIGGRAPH論文の常連として知られるまでに成長しており、ちょうど自ら考案したFLIPソルバーの実用性を試したいと考えていた時期でもあった。加えて、1LM社との共同作業は非常に思い出深いものであり、とりわけNordenstam氏とは、共通ビジョンを分かち合うことができた間柄だっただけに、その依頼を快く引き受け、自ら現地に赴いてDouble Negative社の新しいソルバーを開発することになった。Bridson氏はFLIPソルバーを中核に、VFXに役立ちそうな要素を数多く盛り込んだシステムを開発した。こうして誕生したのが、Double Negative社が世界に誇る“Squirt”という流体シミュレーション・システムだった。