メタルギア・ライジングは「ソリッド」?

メタルギアソリッドのことではなくて、モデリングのお話です。ゲーム中にあるモノ(オブジェクト)をプレイヤーが好き勝手に斬ることができる「自由切断」というコンセプトで、MGRではいろいろなモノがバラバラになり、小さな欠片になります。現実的には(いや鉄鋼とかコンクリートの塊が切断されてる時点で現実的じゃないんだけどw)普通のことなんですが、3Dの世界ではちょっと難しいことしてるんじゃないかな、とふと思ったんですよね。

あまりゲームの技術には詳しい方じゃないけど興味はあるので、ちょくちょく技術系の記事を読んだりしてるんですが、ずっと形状が変わらないもの、例えばキャラクターとか空間内の壁とか天井とかは、いわゆるハリボテ、3D的にはサーフェスSurface:表面)で構成していることがあると思います。これは中身が空っぽなので保持する情報量が少なくて済みます。他のモノにぶつかったりする時も、面と面の交差をチェックすればいいので楽です。

でも、工業系の設計図、例えば精密機械や、そうそうプラントのあのにょきにょき立ってる塔のようなあれも、中にいろいろ内容物を撹拌するものや、蒸留したりする棚が入ってるはずです。(って工場萌えのケヴィンが言ってましたよねw)そういうものを3Dで細かくモデリングした後で、断面を出したい時があるんですね。そういう時サーフェスでは役に立ちません。中身をみっちり詰め込んだ3Dモデルをサーフェスに対してソリッド(Solid:固形)モデルと言います。中身もきっちりモデリングされているので、どこから斬っても大丈夫。なんですが、現実世界のハリボテと中身みっちりしたモノの違いと同じように、ソリッドモデルはサーフェスモデルよりも計算コストが多くかかります。要するに重いんですね。普通の工業設計ではリアルタイムに断面図を出すということはまずなくて、どんなにお客さんに急かされても数分もあれば要望通りの断面図を出力することはできると思うんですが、こういうアクションゲームの場合、数秒のラグも致命的ですよね。しかもそのモノじたいも常に動いていて、モノの角度も断面の角度も常に変化しています。モノの数も多いし。当たり判定もぶつかる外向きの面がどれかを先に計算しなきゃいけないだろうし。そうするともしかしたらソリッドモデルではちょっと厳しいんじゃないかなあ、と思うんですよね。

私が知らないだけで、断面処理の効率的なアルゴリズムがあるのかもしれません。それに当たり判定ももっといいメソッドがあるのかも。それにもう一つ、断面にはテクスチャが貼ってあると思うんですよね。リアルタイムで、断面処理してさらにテクスチャ貼って、というとかなり大変そうです。でも、サーフェスモデルだと断面じたいが判断できないし。うーん、こういうのって開発者さん向けの情報であんまり詳細は出回らないんだろうけど、ゲームやってて「お、これはソリッドじゃない?」みたいに思えたらちょっと楽しいですよね(笑)