母国カナダで開花した才能

スタンフォード大学で博士課程を終えたRobert Bridson(ロバート・ブリッドソン)氏は、母国カナダにもどり、ブリティッシュ・コロンビア大学のAssociate Professor(日本の大学における准教授)に就任して自らの研究室を開設した。前編で紹介したように、Bridson氏は恵まれたアカデミックな家庭環境のなか、少年時代から独学で物理シミュレーションを学習し、カナダの大学で数学的な技を磨いた後、アメリカに渡ってRonald Fedkiw(ロナルド・フィデキウ)氏のもとでCGシミュレーションに開眼した。そして、Bridson氏が生まれもった才能は、このような長期に渡る奥深く幅広い学習における蓄積を携えて、母国で開設した研究室において、開花することとなった。一国一城の主となり、まさに機が熟するのを待って開花した才能と言えそうだが、同氏の研究成果や実用面におけるその応用が、まるで堰を切ったように流れ出したところには、“時代の追い風”といったものも影響していたようだ。

Bridson氏が自らの研究室で本格的に流体シミュレーションの研究に取り組み始めた2005年頃は、Fedkiw氏らのようなパイオニアたちが活躍したCG流体シミュレーションの創世期から、成熟期へと移ってゆく境目にあたる時期だった。映画などの映像制作においても、CG流体シミュレーションなるものがある程度浸透し、リアルな流体表現において、流体シミュレーションがいかばかりか大きな効力をもっていることを多くの人々が認識するようになってきた。そして、CG流体シミュレーションの知名度や評価が高まるにつれて、人々はより広範囲に、より高い自由度で、およそこれまで用いようなどとは考えもしなかったところにまでも、CG流体シミュレーションを活用することを望むようになった。

創世期に構築されたCG流体シミュレーションのベースは、あくまでCFD(数値流体力学:Computational Fluid Dynamics)で用いられてきた方法を修正したものであり、基本的には現実世界の流体に極めて近い見え方を作り出すということが原則だった。したがって、前述のような要望に応えるためには、創世記にはなかった新たな要素を加えていく必要があった。そして、Bridson氏の資質や独自のバックグラウンドは、そのような新たな要素の開拓にベストマッチしていたのだ。

成熟期の流体シミュレーションに求められた

成熟期のCG流体シミュレーションにおいて、新たに必要とされるようになったものの代表が、“Art Directive”という要素だった。たとえば映画作品などで、シーンの主役となるような物体や現象を作成するために、流体シミュレーションが用いられるようになってくると、「この部分だけもう少し動きを変えて欲しい」といった要請が監督やアーティストから出される機会が多くなった。流体シミュレーションに限らず、このようなアーティスティックな視点からの微妙なコントロールは、シミュレーション技術が最も苦手とするところだ。創世記に構築されたCG流体シミュレーション技術を、このような方向性へと改善する努力は重ねられたものの、やはりそこには限界があった。

Bridson氏の大いなる功績は、まったく違った視点からこれを可能にする方法を考案したところにある。Bridson氏が着目したのは、流体シミュレーションが導入される以前に、CGの分野で流体表現に活用されていた方法論だった。具体的に言えば、ノイズ関数やパーティクルを用いた表現方法がこれにあたる。言うまでもなく、これらの表現方法を用いると、アーティスティックな視点からのコントロールを容易に行うことはできるのだが、一方で、こうして作り出された動きは、物理的に正確とは言い難い。したがって、これらの方法をそのまま流体シミュレーションと結び付けようとすると、せっかく流体シミュレーションを用いて算出された物理的に正確な計算結果にヒビが入ってしまう危険性が高い。そこでBridson氏は、ノイズ関数やパーティクルといった概念を、流体シミュレーションという視点から捉えて練り直し、より物理的に正確な表現方法へと生まれ変わらせた。

このように生まれ変わった方法は、単体でもかなりの活用性があるのだが、流体シミュレーションと結びつくことによって、より大きな威力を発揮し、従来のCG流体シミュレーションが抱えてきた数々の問題点を解決するための鍵となっていった。映像制作において流体表現に取り組む人々は、まずはノイズ関数やパーティクルなどの方法から始めて、流体シミュレーションへと移行していくケースが多い。しかしBridson氏は、その学習過程においてまったく逆の経緯をたどってきた。流体シミュレーションの成熟期を支える同氏の偉業は、そのような独自のバックグラウンドゆえとも言えるだろう。

Image Courtesy:Robert Bridson


静止した物体の周りの2Dの乱流の動きを、"Curl Noise"で作成したもの。流体が物体内部に流れ込まないように制御するRamp関数とPerlin Noise関数を用いて、ポテンシャル関数を作成し、この関数に演算子"Curl"を作用させることで、流体ベクトル場が生成されている。

Bridson氏が2007年に発表した“Curl Noise”は、流体シミュレーションならではのノイズ関数として、その後のCG流体シミュレーションの研究開発に大きな影響を及ぼした。これまでCGにおける流体表現で最も頻繁に用いられてきたのは、1980年代にKen Perlin氏によって考案されたPerlin Noiseというノイズ関数だった。だが、この関数を用いて流体ベクトル場を生成した場合、質量保存が成り立たないことが、物理的に正確な表現をするうえでのボトルネックとなっていた。そこでBridson氏は、Perlin Noiseを用いて直接流体ベクトル場を生成する代わりに、流体ベクトル場の前座ともいえるポテンシャル場というものを生成し、このポテンシャル場に“Curl”という演算子を作用させたものを流体ベクトル場とする方法を提案した。流体の質量保存とは、流体ベクトル場に“Divergence”という演算子を作用させた場合に、その値がゼロになることを意味している。数学的には、いかなる関数に対しても、まず“Curl”を作用させ、続いて“Divergence”を作用させると、その値はゼロになる。したがって、いかなるポテンシャル場を設定しても、これに“Curl”を作用させたものを流体ベクトル場と定義すれば、その流体では無条件に質量保存が成り立つことになるのだ。Bridson氏は、このような流体ベクトル場を“Curl Noise”と名付けた。

Image Courtesy:Robert Bridson


動いている物体の周りの3Dの乱流の動きを、"Curl Noise"で作成したもの。ここでは、まずPerlin Noiseの各レベル(Octave)の関数を用いて、個別にポテンシャル関数を作成し、別々にRamp関数でスケールをかけて、乱流が物体内部に流れ込まないように制御している。これらに重み付けをして足し合わせたものが、最終的な乱流を表すポテンシャル場となっている。

前述の方法は、ポテンシャル関数に制限がないことが、最大の利点となっている。たとえば、いったん表現的に満足できる流体ベクトル場のポテンシャル関数が見つかった場合は、これらのポテンシャル関数どうしをブレンドして新たなポテンシャル関数を作成し、この関数に“Curl”を作用させるだけで、物理的に正確な流体ベクトル場を新たに生成することができる。このような特徴は、流体の見え方や、物体と流体との相互干渉を高い自由度で直感的にコントロールするうえで非常に効果的だ。流体シミュレーションの普及によって、ともすると脇役に回りがちになったノイズ関数だが、流体シミュレーションを知り尽くした視点から考案された“Curl Noise”は、ノイズ関数を用いた流体表現を新たなポジションで蘇らせることになったのだ。