ニュース
[CEDEC 2011]シリコンスタジオが紹介するゲームの未来。次世代型弾性体表現技術「Shape Matching」とは
本稿では,CEDEC初日に行われた田村尚希氏&安田 廉氏による「コンピュータグラフィックス関連の最新論文紹介 〜Shape Matching法とその周辺技術〜」の概要を紹介してみたい。
Shape Matchingとは
ポリゴンメッシュで作られた物体というのは,基本的には固定された形状なのだが,頂点シェーダを使ってプルプル揺らしたりといった変形も広く行われている。今回紹介された手法は,そういった技術の次世代型といえるものだ。
これまで出てきている弾性体の表現は,大半が「頂点間にばね係数を適用して,動きに対してある程度の変形を行う」といったものだった。ゲーマーなら,すでに多くの実装を目にしていると思うが,これらの処理は制御点が表面しかないため風船的な挙動になりがちだったり,(局所的な変形ならともかく)オブジェクト全体で変形させると計算量が大きくなりすぎたりするという問題があった。
Shape Matchingは,これとは根本的に異なる手法となる。
基本的なアイデアは,「ポリゴンの頂点をパーティクルとして扱う」ところから始まる。ポリゴンメッシュ単位で言うなら,「それぞれの頂点をパーティクル化しておく」のだ。
そのうえで,力学的に変形したあとのメッシュに対し,「元のメッシュを回転させたもの」を用意し,元のメッシュに戻ろうとする力を加えたうえで,メッシュの再計算を行うというアプローチのようである。
ただ,それでもここがキモになるのは,変形時には,回転以外に拡大/縮小や剪断(せんだん)といった要素が絡んでくるため,そのままでは適用できないためだ。そこで,変形から回転要素だけを取り出して処理する「極分解」という処理を行って回転行列だけを取り出す。
そのあたりの計算手法は下に示したスライドを見てほしいが,途中で3×3行列――元の点へ向かおうとするベクトルの総和みたいなもののようだ――を導き出し,それを極分解の関数に渡すという流れになっている。このようにして物体を変形させようというのがShape Matchingというわけだ。
そんなShape Matchingの特徴は,高速であることと,必ずしも物理的に正確ではないながらも“それっぽい”動きになること,そして,固さを調整できることなどだ。ポイントベース(=頂点の情報だけ)で処理できるため,ポリゴンなどより面倒が少ないというのもメリットのようである。
欠点は,やっぱり物理的に正確ではないこと。そしてポイントベースなので,衝突判定が難しいということだ。
Shape Matchingの実用化に向けて
応用的な部分で最初に紹介されたのが,上でその名を挙げたクラスタリングだ。これは「オブジェクトを構成するメッシュなりパーティクルなりを計算するときに,どのような単位で計算を行うか」に関するもの。オブジェクト全体で1個の回転行列を扱うようでは,たいした変形は期待できない。そこで,複数の部分をつないだ構造を扱えるようにしたのがクラスタリングの手法だと思っておけばよいだろう。
下の図の例だと,クラスタリングなしでは斜めにズレるだけのものが,クラスタリングすることによって,曲線的に曲がるようになるのが分かる。クラスタリングを細かく取るほど柔軟な物体の表現が可能になるため,Shape Matchingを実際に使う段では,クラスタリングがほぼ前提となってくるようだ。
これは右の図を見てもらったほうが分かりやすいだろう。「重複している部分が多いと,変形が緩やかになる」傾向があるため,重複を多く取れば取るほど,物体が固そうな表現になるのである。
まず,両方の高速化アルゴリズムで共通なのが,「物体をボクセルで分割し,(メッシュそのものではなく)メッシュを囲むボクセルの変形を行って,そこで出てきた変形をメッシュに適用しようというアプローチである。
空間を再帰的に2分割していく構造体はゲームでも多用されているが,ASMでは,最小単位のボクセルの側から2倍単位で大きくなるようなデータ構造になっている。単位空間を倍・倍にしていって,8個分(2×2×2)の立方体を親ノードとし,さらにその上のノードなども設定したうえで,子ノードの構成要素に対する総和処理の値(先ほどの3×3行列となるもの)が当該ノードの値となるように設定されている。
この考えをうまく使って計算量を減らしていこうというアプローチなのである。
2方式それぞれの利点や欠点などは表にまとめられているが,どちらが実装しやすいかというと「圧倒的にASM」だそうで,Fast LSMのほうは,隣に要素があるかないかなどの判定が煩雑で,デモ作成はあきらめたとのことだった。
Shape Matchingにおけるコリジョン
続いて,Shape Matchingでは難しいとされる当たり判定について。今回のシリコンスタジオのデモでは,当たり判定は球体で近似したものが使用されている。下の図を見れば大体の雰囲気は分かってもらえると思うが,当たり判定をボクセルの内径そのものに設定すると「めり込み」が起きやすいので,ちょっと大きな球を使用しているとのこと。セルフコリジョンは判定していないそうだが,判定球自体が最初からめり込みあっているわけだから,これはいたしかたない。
球での近似で大丈夫なのかという疑問も出てくるのだが,実際のデモを見てもほとんど不自然には見えなかったので,かなり現実的な手法のように思われた。
ここは意外と落とし穴のある部分のようで,「Shape Matchingの計算途中に使った行列を流用しても,変形後の座標そのものが算出できるわけではない」とのこと。この問題を解決するために,「Position Based Dynamics」という手法を用いているそうだが,今回,細かい解説は行われていない。
以上の処理をCompute Shaderを使いつつ実装した様子をムービーで紹介しておこう。
「現状のコンシューマゲーム機では,(負荷的に)ほぼ無理」とのことで,これは次世代機待ちということになる。ただ,現行世代機においても2Dでの実装は十分可能だそうなので,2Dで実装した画像変形などを含むゲームが登場する可能性はありそうだ。
弾性体を150体落としているところ。右の図で色の濃い部分がボクセルで,明るい部分が親ノード | |
お堅そうな都庁もグニャグニャに |
それにしても,恐ろしく難しいことを平易に解説し,発表されたばかりの論文で実働デモを作るという,相変わらずの離れ業を披露してくれたシリコンスタジオは,やはり素晴らしい。気は早いが,来年の講演にも期待したいところだ。
シリコンスタジオ
CEDEC 2011レポート記事一覧
- この記事のURL: