2010/12/01更新

前回は、グローバル・イルミネーションやサブサーフェース・スキャタリングといったCGレンダリングの分野で最もシミュレーション的要素を多く含む手法の研究開発と、これらの手法がどのように映画や市販ツールなどの産業分野に浸透しつつあるかを紹介した。CGの研究分野では年を追うごとに、このようなシミュレーション的要素を多く含む手法の数が増えてきている。それらのなかでも、とりわけ産業と密接な関わりをもって発展してきているのが、流体シミュレーションだといえる。

流体シミュレーションとは、流体力学をベースにして(より正確にはナビエ・ストークスの方程式:Navier-Stokes Equationを解いて)水・煙・霧などといった流体の挙動を視覚化することを目的にしたものだ。CG流体シミュレーションのルーツは、CFD(数値流体力学:Computational Fluid Dynamics)とよばれる学術分野にある。CFDでは、すでに1960年代から3Dのナビエ・ストークスの方程式を解いて流体のメカニズムを視覚化する研究が進められてきた。その研究成果は、気象学・海洋学・航空工学などの分野で応用されている。だが、これらの分野における流体シミュレーションの目的は、あくまで流体の特定の物理的特長を表すデータを視覚化することであり、決して人間が知覚するような流体の見え方をリアルに復元しようとすることではなかった。CG流体シミュレーションでは、まさに後者のような目的を達成する必要があった。そのため1990年代半ばから後半にかけて、CFDで培われてきた技術が、グラフィックスという視点から練り直され、CGの分野へ導入されていった。

1990年代半ばから後半にかけてというのは、CG全体の歴史から見ると遅いスタートだったといえるのだが、興味深いのは、理論の考案から実用化までの道のりが極めて短かったことだ。理論の考案と実用化が、ほぼ同時に行われてきたといっても過言ではない。その大きな要因の1つとして、CG流体シミュレーションの基礎を確立した研究者らの姿勢が反映されたことがあげられる。加えて、映画のビジュアル・エフェクツ(VFX)などの産業分野では、水・煙・爆発・炎などをCGでリアルに描き出すことへの需要が非常に高かったことがある。

CG流体シミュレーション理論の基礎は2002年あたりまでに確立され、現在はそれを受け継いだ成熟期にあたるといえる。理論の確立という側面からも、理論の実用化という側面からも、成熟期には創世記とはまた違ったアイディアや独創性が必要とされる。今回紹介するRobert Bridson(ロバート・ブリッドソン)氏の挑戦は、まさにこの成熟期ならではのCG流体シミュレーションの研究開発を象徴するものといえるのだ。

創世記を支えた研究者たち①:Foster氏による基礎の確立

前述したように、CG流体シミュレーション理論と、その実用化が足並みを揃えて進化している現在の状況には、その創世記を支えた研究者らの姿勢が強く反映されている。そこで、Bridson氏の歩みを追ってゆく前に、まずCG流体シミュレーションの基礎を築き上げた代表的な研究者らの歩みを手短に紹介しておきたい。

3Dのナビエ・ストークスの方程式を解いて流体を表現するというアプローチを最初にCGの分野にもち込んだのは、1996年にペンシルベニア大学のNick Foster(ニック・フォスター)氏らによって発表された論文だった。Foster氏はペンシルベニア大学で研究を開始する以前に、フランスの核開発研究所に勤務しており、そこで原子炉の美しい光景を目にしたことが、流体のビジュアライゼーションに興味を抱くきっかけとなった。前述したようにCFDの分野では、すでに1960年代に3Dのナビエ・ストークスの方程式を解いて流体の動きを視覚化するコンピュータ・アルゴリズムが編み出されていた。Foster氏らはこのようなアルゴリズムをグラフィックスという視点から見直して、CGに適したアルゴリズムを導き出した。

"Practical Animation of Liquid"
(Nick Foster, Ronald Fedkiw, SIGGRAPH2001)
Image courtesy:Nick Foster


美しい"境界面"の生成はCG 流体シミュレーションの恒久のテーマともいえる。Foster氏は1996年の論文にて、境界付近で算出されている流体ベクトル場に沿ってパーティクルを動かし、これらのパーティクルを用いて境界面を生成する手法を提案した。その後、2001年にはFedkiw氏と共著の論文で、前述のパーティクルを用いたアプローチとレベルセットの考え方を導入したアプローチの2種類をうまく組み合わせた手法を発表した(上画像)。この手法はのちにFedkiw氏の研究室の学生らによって水面の表現に特化した手法へと進化し、映画『ポセイドン』(2006)などで活用された。

CG流体シミュレーションとCFDとの大きな違いは、前者では数値的精度よりもビジュアル的精度が重視されるという点にある。たとえば数値的に多少のエラーがあっても、できあがった映像が人間の目から見て不自然でなければ問題とはならない。何度もシミュレーションを繰り返して納得のいくようなビジュアルを作り出すためには、数値的精度よりもむしろ高速なフィードバックが必要とされる。したがってCG流体シミュレーションでは、ナビエ・ストークスの方程式を極力単純化し、許容範囲内の数値的エラーは容認することで、できる限り高速にこの方程式を解くことが目標とされる。逆に流体の“境界部分”(水であれば“水面”)を美しく表現するといったような要素は、CFDにはなかったCG流体シミュレーションならではの重要な要求だといえる。Foster氏の論文は前述のようなCG流体シミュレーションのベースとなる特徴を築き上げたものといえ、その方向性は以後のCG流体シミュレーションに引き継がれていった。

また、Foster氏は前述の論文を発表したのちにPDI/DreamWorks社に参画した。映画『アンツ』(1998)のクライマックスの洪水シーンで、映画史上初めてCG流体シミュレーションの手法を導入した功績により、アカデミー科学技術賞を受賞した。映画『シュレック』(2001)に登場する泥や炎の動きの作成にも、Foster氏がのちに発表した論文の手法が反映された。

創世記を支えた研究者たち②:Stam氏による実用化への架け橋

映画のVFXなどのエンタテインメント分野におけるCG流体シミュレーションの本格的な幕開けは、1999年にAlias|Wavefront社のJos Stam(ヨース・スタム)氏が発表した論文によってなされた。

"Stable Fluids"
(Jos Stam, SIGGRAPH1999)
Image courtesy:Jos Stam


CG シミュレーションでは"意図したとおりの見え方"を作り出すという要素が重要で、そのためには何度もシミュレーションを繰り返すことができる高速なフィードバックが必要とされる。流体シミュレーションの分野でこれを可能にしたのが、1999年にStam氏が発表した論文だった。この論文の手法では、ナビエ・ストークスの方程式を解く工程のなかで最も解が発散しやすい工程(Advection)に対して、パーティクルの概念を導入して時間軸とは逆向きの考察を行えるようにした。これによって大きなタイムステップを用いても解が発散することがなくなり、安定した状態で高速にシミュレーションを進行させることができるようになった。今日、映画やゲームなどの分野でごくあたりまえのように流体シミュレーションが用いられるようになったのは、この手法の考案があったからこそだといえる。もっとも、Stam氏がCG流体シミュレーションに託したのは、決して現実の世界で見られる流体の見え方そのものを復元することではなく、流体がもつ神秘的なメカニズムを用いて、人間の手作業では難しいアートワークを可能にすることだったそうだ。論文の手法で作成されたサンプル画像は、1999年度のSIGGRAPH論文集の表紙絵ともなった(上画像)。

ナビエ・ストークスの方程式を解くためには、暫定的に与えられた初期値を時間軸に沿って(方程式の値がよりゼロに近づくように)アップデートする処理を繰り返す。この繰り返しを行う時間の幅(シミュレーションのタイムステップ)を大きくとるほど解は速く求まることになり、シミュレーションは高速化する。しかし、逆にタイムステップを大きくとり過ぎると方程式がゼロになる地点を通り過ぎてしまい、解が求まらなくなってしまう(解が発散する)危険性が出てくる。とりわけエンタテインメント分野におけるCGでは、現実世界ではありえない極端な流体の動きを視覚化しなければならないことも多い。どのようなタイプの流体に対しても、大きなタイムステップを用いながらも安定して解が求まるようにすることが、エンタテインメント分野におけるCG流体シミュレーションの実用化の鍵となるのだ。

Stam氏の論文では、ナビエ・ストークスの方程式を解くプロセスを複数の段階に分け、そのなかで最も解が発散しやすいプロセスに対してパーティクルの概念を用いた解法(セミ・ラグランジアン法:Semi-Lagrangian Scheme)を導入した。これは、乱流のような極端に動きの変化が激しいケースを除いては、前述の要望を達成した画期的なものだった。

通常流体シミュレーションでは、流体の領域全体をボクセルとよばれる六面体に分割し、ナビエ・ストークスの方程式を解いて各ボクセルの速度ベクトルを算出する。このようにして領域の各地点で流れの向きと速さが定義されたものは、流体の速度ベクトル場とよばれる。セミ・ラグランジアン法では、パーティクルをこの速度ベクトル場に沿って動かして、その軌跡をバックトレースする。たとえば、あるタイムステップのパーティクルは、このパーティクルの軌跡をタイムステップ1つぶんバックトレースした地点にあるボクセルにおいて、1つ前のタイムステップで(ナビエ・ストークスの方程式を解いて)算出された速度ベクトルによって、現在の地点に運ばれてきたことになる。つまり、あるタイムステップのナビエ・ストークスの方程式を解くプロセスにおいて、1つ先のタイムステップの情報を用いることができるのだ。このように1つ先のタイムステップの状態を予測しながら方程式を解くことができれば、大きなタイムステップを用いても解が発散することなく、シミュレーションを進行させることができる。

現在エンタテインメント分野で用いられている流体シミュレーションのほとんどすべてが、ナビエ・ストークスの方程式を解くために、セミ・ラグランジアン法を用いているといっても過言ではない。Stam氏が目指していたのは、アーティストがあたかもPhotoshopを使うような感覚で流体シミュレーション・ツールを用いて、独創性の高い映像作品を作り出せるようにすることだったそうだ。Stam氏が考案した、前述の論文をはじめとする流体シミュレーション手法の数々が、エンタテインメント分野で重宝がられるのは、同氏のこういった姿勢にも由来しているといえそうだ。