イベント
[CEDEC 2014]剛体から流体まで,セガのプログラマーが語る「位置ベース物理シミュレーション」の最前線
CEDEC 2014では,セガでソニックシリーズなどの開発に携わり,同シリーズの技術的な部分を担当してきた中川展男氏によるPBDの紹介セッション「Position Based Dynamics Omelette コンピュータグラフィックス関連の最新論文紹介」があったので,本稿ではその内容をレポートしたい。
位置ベースの物理シミュレーションとは何か
ゲームにおけるグラフィックスは,連続時間ではなく,毎秒60コマなどといった更新時間単位で1フレームごとに描画する仕様であることから,あるフレームの時刻と前フレームの時刻の差分で表される離散時間「Δt」で管理される。
そして,(連続時間ではない)一定リズムのΔtベースで質点の挙動を管理していると,計算の結果,衝突などにおいては衝突対象のオブジェクトがめり込んでしまうことがある。物体の移動が,Δtできっちり衝突する確証はなく,衝突してからもそのまま行き過ぎてしまうことがあるからだ。
その場合は,めり込み量に応じて,めり込んだオブジェクト達が押し出される力(F)を質量(m)で割って,Δtにおける加速度を求め,そこから速度を求めることで,「次のフレームで描画される,めり込んでいない状態のオブジェクト位置」を決定することになる。
それに対してPBDは速度を持たないのが大きな特徴で,「位置ベースの物理シミュレーション」という表現のとおり,位置を基軸として計算していくものとなる。
PBDもΔtで管理している以上,めり込むこともあり得るのだが,そのときにはめり込みを解決できるまで衝突対象と自身の位置を修正を繰り返す。なぜ繰り返す必要があるかというと,衝突したオブジェクトは点ではなく,実際には形状を伴っており,破壊が起きない限りは形状を維持したうえで衝突を解決する必要があるからだ。
また,あるオブジェクトの位置を修正すると,その修正に伴って,これと接触している別のオブジェクトの位置もずれる可能性がある。そして,その位置の修正を何度か繰り返すと,各オブジェクトは挙動が安定方向に導かれていく。「暴れているオブジェクトを押さえつけて,少しずつ静かにしていく(締め落としていく!?)」ようなイメージであり,こうした挙動を特定方向に導いていく物理的な制約パラメータは「拘束条件」と呼ばれる。人間の膝関節が鳥のように前方向に曲がらないのも拘束条件で,人間の足の挙動を計算・決定する際の大きな要因となる。
そのため,拘束条件を工夫することで,より多彩な物理シミュレーションを行うことができるようになる。たとえば流体であれば,密度に関する拘束条件を与えたり,ヒモやロープのようなものであればねじれ関連の拘束を与えたりすることで,リアルな挙動を作り出せるようになるのだ。
その最新事例として中川氏は,梅谷信行氏らによってSCA 2014(SCA:Symposium on Computer Animation)で発表された論文「Position-based Elastic Rod」を紹介していた。
氏はPBDの長所として,シンプルで破綻しにくい堅牢性があり,リアルタイム実装向きである点を挙げていた。氏は同時に「繰り返し回数によって挙動が変わる」「物理的な正確さに欠ける」という短所も挙げつつ,「最新事例ではこうした問題も解決の方向に動きつつある」と補足している。
流体に利用しやすいスムーズドパーティクルハイドロダイナミクス
PBDの現状説明に続けて中川氏は,煙や液体といった流体(Fluid)の挙動をシミュレーションする必要のあるゲームで利用しやすいPBDの事例として,「スムーズドパーティクルハイドロダイナミクス」(Smoothed Particle Hydrodynamics,以下 SPH)を紹介した。
SPHは,流体を無数のパーティクル(Particle,粒子。簡単にいえば3Dスプライト)で表現して挙動計算し,レンダリング時には何らかの方法で3D的な表面を持ったものとして可視化させるという流れで処理されるものだ。
空間を格子で区切って管理して計算するグリッドベースのオイラー(Euler法とは異なり,SPHでは3D空間を移動するパーティクルで流体を表現するため,空間におけるパーティクルの疎密感が生まれる。そのため,流体の「界面」を美しく生成するためには,何らかの方法で平滑化しなければならない。
実は,この要件こそがSPHにおける「Smoothed」を指しているのだが,では何を用いるか,曲線――3Dならば曲面――補間するカーネル関数ということになる。
オイラー法(格子法,左)と,パーティクルの疎密と移動を見る方法(右)の違い |
2つの谷があるように見える界面をなだらかな山にしたり,尖り過ぎた山を自然にしたりする効果をこのカーネル関数で与える |
SPHで採用された,現実的な近傍粒子探索法 |
SPHのビジュアル化アプローチ |
パーティクルの挙動計算後は,これを可視化するプロセスが必要になるが,その最もベーシックな手法は「マーチングキューブ」(Marching cubes)と呼ばれるポリゴン面生成手法だ。ただ,マーチングキューブは“重い”処理なので,ゲームグラフィックス用途では,パーティクルを適当な球体形状等で深度バッファに書き出して,これをボカして滑らかにしたうえでライティング&シェーディングを行い,カラーバッファに書き出すというテクニックがしばしば用いられる。
実際,Gearbox Softwareの「Borderlands 2」では,モンスターの流血表現や水面表現等にこの方法が採用された(関連記事)。また,スクウェア・エニックスの新世代ゲームエンジンである「Luminous Studio」ベースの技術デモ「AGNI'S PHILOSOPHY」でも,水や血液の表現にこのアプローチが採用されている(関連記事)。
中川氏は,そんなSPH法による流体表現の最新研究事例として,Markus Ihmsen氏らによってCGI 2012(CGI:Computer Graphics International)で発表された「Unified Spray, Foam and Bubbles for Particle‐Based Fluids」という論文を紹介した。
この論文では,SPHによって流体シミュレーションを行って「界面」としての水面を生成する以外に,水動の衝突や飛散によって起こる「飛沫」(Spray)や「泡沫」(Foam),「気泡」(Bubble)をも再現した実装例が公開されている。海辺に押し寄せる「巻き込む波」(Rolling Waves)なども,この手法ならば相当リアルに実現できそうである。
中川氏は,SPHの長所として「格子法と比べると形状表現の自由度が高い」「計算量と品質がスケーラブルな関係で調整しやすい」「剛体を拡張したような概念なので剛体物理との相互干渉表現なども現実的に実装できる」点を挙げていた。
短所としては「計算量が相対的には多め」などがあるものの,やはり改善策は徐々に出てきているという。
PBDとSPHで実現される「位置ベースの流体物理」
中川氏は最後に,最新世代のゲーム向けとなり得る流体物理シミュレーションとして,「位置ベースの流体物理」(Position Based Fluid,以下 PBF)を紹介した。
概念的にいうと,PBFは,SPHにPBDの概念を組み合わせた手法となる。
前述のとおり,SPHはパーティクルベースでの処理となるため,総質量は変わらなくても,空間的に圧縮されてしまう状況が出てくる。流速が極端に高い流体であればそれでも許容できるが,流速の遅い気体や水のような液体では現実世界における振る舞いとは異なる挙動となり,許容しづらくなってしまう。そこで,非圧縮性の流体として扱う必要が生じるのだ。PBFはある意味で,非圧縮性の流体を扱えるようにPBDの概念を導入して拡張したSPHということができる。
具体的な拡張内容は,「SPHで圧縮が起こりうる箇所において,密度と圧力の計算をする部分が生じたら,『圧縮が起こらない拘束条件』で反復計算することによって圧縮を回避する」というものになる。
もっとも,PBDの概念を導入することによってパーティクルがばらけがちになると,今度は流体と言うよりも砂粒のような感じに見えてしまう可能性が生じる。そこでPBFでは,液体の集まりなどで観察される表面張力的な,互いに引っ張られ合う分子間力を再現する人工圧力の概念も導入してある。このあたりは,物理的に正しくするための配慮というよりも,プロシージャル的な工夫に近いものといえるかもしれない。
とはいえ,その効果は大きく,パーティクルがバラバラにはならず,パーティクル同士がなだらかな丸みを持った集まりを形成するようになり,よりリアルな液体表現ができるようになったそうだ。
PBD概念を導入することによるデメリットはもう1つ挙げられる。それは,パーティクルの挙動が安定方向に行きがちで,SPHの特長ともいえた,水面(=界面)からちぎれて分離するような“水らしい”表現がPBFで起こりにくくなってしまうことだ。
そこでPBFでは,この問題を回避するために,やはりプロシージャル的な対処として,界面付近のパーティクルの挙動に対して乱流の影響を加えるということを行っている。
このPBFの最新事例として中川氏は,NVIDIAのMiles Macklin氏がSIGGRAPH 2014で発表した「Unified Particle Physics for Real‐Time Applications」を紹介している。
Unified Particle Physics for Real-Time Applications - SIGGRAPH 2014 from Miles Macklin on Vimeo.
「PBFはSPHの弱点をうまく克服しており,制約条件の与え方や拡張の工夫次第で流体以外の表現にも応用できそうだ」と中川氏はまとめていた。
Sofien Bouaziz氏がSIGGRAPH 2014で発表した「Projective Dynamics: Fusing Constraint Projections for Fast Simulation」はその好例で,PBFに有限要素法的な拡張を導入し,自己変形するオブジェクトの表現を実現したものになる。
現在,ゲームにおける物理シミュレーションは,剛体物理だとある程度のリアリティを感じられるようになっているが,流体だとまだまだの部分が多い。今回紹介されたような最新技術の数々が,今後,実際のゲームで活用されていくような未来を期待したいものだ。GPGPUを現実的に活用できるPS4&Xbox One世代のタイトルなら,それは決して夢物語ではないのだから。
CEDEC 2014公式Webページ
- この記事のURL: