(続)水って丸い?四角い? CG の水はどっちもだった!(笑)
2016年2月 2日 (火) 投稿者: メディアコンテンツコース
本ブログをご覧の皆さん,こんにちは.
メディア学部准教授 菊池 です.
2015 年 4 月(もうすぐ 1 年前ですね...w)に本ブログで,「おもしろメディア学 第 79 話 水って丸い?四角い? CG の水はどっちもアリ!」という話を書きました.
簡単に言うと,CG において水流のような流体を表現する(シミュレーションする)場合,計算手法は大きく分けると 2 種類あり,流体を「粒子」の集合体と仮定して,各粒子の振る舞いを追跡する「ラグランジュ型」の計算方法と,シミュレーション空間を格子状に分割し,各格子内の物理量の変化(たとえば,速度の向きと大きさなど)を設定された時間間隔ごとに求める「オイラー型」の計算方法があるという話でした.
さて,上記の回には書かなかったことがあります.
それは,それぞれの手法には「欠点」があるということです.
(上記に限らず,コンピュータ科学のアルゴリズムのほとんどには長所と短所があります.完璧というものはありません.)
たとえば,「ラグランジュ型(粒子法)」には「粒子個々を追跡するための空間分割を流体が動くたびに行わなければならない煩雑性,シミュレーションの精度が粒子数に依存する」などという問題点があり,「オイラー型(格子法)」にはシミュレーションの精度が空間分割に依存するため,「格子生成の仕方,メモリ要件,複雑なオブジェクトとの境界面設定」などの問題点が存在します.
そこで開発されたシミュレーション手法に,FLIP(FLuid-Implicit-Particle)と呼ばれる,格子と粒子を用いたハイブリッドなものがあります.
FLIP は 2005 年に Zhu と Bridson らによって発表された手法 [1] で,流体の運動を記述するナビエ・ストークス方程式に基づき,移流項と圧力項に分離して順々に計算します.
移流項の計算には粒子を使ってラグランジュ的に,圧力項の計算には格子を使ってオイラー的に解きます.したがって,移流項は流速値を持った粒子を流れに沿って移動させるだけで計算できる上,粒子の分布をそのまま液体表面の追跡として利用できるので,レベルセット法などの界面追跡法を別途導入する必要がありません.
また,圧力項は格子法で離散化するので,完全な粒子法ですべてを計算する手法と比べて未知数の行列のバンド幅が小さく,高速に圧力場を求めることができます.
いわば,「粒子(ラグランジュ)」と「格子(オイラー)」のいいとこ取りな手法ですね(笑).
FLIP シミュレーションの流れを下図に示します.
FLIP では,最初に圧力項を計算します.圧力項は,① 粒子の流速場を格子に転写し,② いったん格子上で圧力を計算します.粒子での圧力勾配は ③ 格子で計算された圧力の勾配を粒子位置で補間して求めます.移流項は圧力項のあとに ④ 粒子の位置で格子の流速を補間し,その流速に従って粒子位置を移動して計算します [2].
図.FLIP シミュレーションの概要
FLIP シミュレーションを実装した結果を,以下に示します(菊池研究室での実装結果です).
映像:FLIP シミュレーションの例(菊池研での実装)
FLIP そのものは,1980 年代の CFD(Computational Fluid Dynamics 数値流体力学)分野において,おもに密度が変化するようなダイナミックな流体の動きを算出する手法として活用されていました.それを 2000 年代中盤に CG 分野でも応用するようになり,現在の流体シミュレーションの代表的な手法のひとつとなっています(ただし,FLIP にも欠点はあることを断っておきます).
このように,異分野で活用されている手法を新しい分野でも改良・拡張しながら利用していくということは,意外と珍しいことではありません.
これからの研究者には,広く様々な領域に目を向け,日々勉強を続けながら精進していくことが求められます.
文責:菊池 司
「おもしろメディア学」カテゴリの記事
- 【研究紹介】お城を数値で作り上げる!:日本城郭のプロシージャルモデリング(2019.01.22)
- 【研究紹介】プロジェクションマッピングはエンタメだけじゃない!プロジェクションマッピングによる動作支援(2019.01.15)
- 高大連携企画・映像制作ワークショップを開催しました(2019.01.14)
- 【再掲】世にも恐ろしい本当にあった話...(からぁ~の,エール!)(2019.01.09)
- 【研究紹介】”匂い”で季節感を感じさせることはできるか?(2019.01.06)