2006年度 システム情報科学特別演習(イントロダクトリセミナー)関連技術調査レポート

ゲームソフトウェア開発のための物理エンジン


 物理エンジンとは仮想空間内における3Dオブジェクトが振る舞う物理法則をコントロールし、物理法則のシミュレーションを行うものです。 つまり、仮想空間内での動きを実世界(またはそれに準する世界)での物理パラメータに当てはめて演算を行い、仮想空間内において物体に力を加えた場合に、 物体が種々の力学の法則に従った動きを再現します。これは主にゲームや各種シミュレータに使われています。

 特にゲームでは、3Dグラフィックスの美しさだけでなくその「挙動のリアルさ」についても注目されるようになりました。 物理エンジンを用いることで物が破壊されて飛び散ったり、崩れ落ちる演出は、アニメーションで描き起こすよりもリアルなものになることから、 ゲームの開発メーカから物理エンジンに注目が集まっています。しかし現在多くのゲームではその物理挙動制御を「局所的」にしか活用していません。 つまり、構築されたゲーム世界には基本的にニュートン物理は働いておらず、一定の条件下が成立したときにのみ、物理エンジンが機能するのいうことです。

具体的にこれを説明すると、プレイヤーキャラクターが体力がある間は銃弾など物理的なダメージを浴びていても体力にダメージを喰らうだけで、 その物理的衝撃の結果としてのけがによる姿勢変化や、状態変化がない。しかし、体力がゼロとなった途端に、“死体”となり吹き飛ぶようなものを 経験したことはありませんか?
また、ゲーム内で破壊できる物体に力や衝撃を与えた場合、物体がしばらくの間はまったく何の反応もないのの、ある一定以上の力や衝撃を受けると 途端に壊れるというものは良く見かけるのではないでしょうか。実世界であれば力や衝撃を受けるたび変形ないしは何らかの挙動を示すはずです。

 このように現在の3Dゲームでは物理エンジンは「イベント駆動型の物理現象」として活用されているのです。 物理エンジンは今後大局的な物理シミュレーション、つまり物理シミュレーションの結果によってゲームとしてのなんらかのイベントが発生する 「物理駆動によるイベント発生」へと推移していくと考えられています。つまり運動物理の事象がゲーム世界中の別のオブジェクトに影響し (相互に影響し合って)、連鎖反応的に伝播して行くものとなります。

ここで物理シミュレーションの例を挙げるとすると、積み重なった積み木を崩さないように取り去ることを競うジェンガというゲームを行うことを考えます。



図1 基本的なジェンガ

 図1のような基本的なジェンガでは数十個の直方体状の棒が積み重なっている状態で、任意の箇所の棒を抜いてみると、 何個か抜いたところでバランスが崩れてバラバラと連鎖反応的に上部が崩壊してしまいます。 棒を抜き去った箇所より上部のブロック達は、その場に居続けようとする慣性力が働く。そして積み重なっている関係上、 下部の方が上段よりも多くのブロックが載っていて重いため、その慣性力が強い挙動を示してます。



図2 筒状の物体によるジェンガ

 図2のような筒状の物体によるジェンガでは、これまでのとは物が転がる際の摩擦係数である「転がり係数」が関与してくる点において違いが見られます。 バランスを崩すと構成している棒筒が転がるので、基本的な直方体ジェンガとは異なった崩れ方になります。

 物理エンジンを用いるとこのように同じジェンガでも積むものの形状によって、異なった崩れ方をするのです。

 これらの複雑なシミュレーションは全て次のような物理演算の複合的な結果として求めることができます 。

このような演算のすべてをコンピュータのCPUのみで行うには能力の限界があり、映像に見合う物理演算を行うのに物理エンジンアクセラレータというもの が提案されています。そこで「PhysX」という世界初の物理エンジンアクセラレータチップがAGEIA社で開発されました。

図3 世界初のPPU「PhysX」チップを搭載した物理エンジンアクセラレータ。

これによって物理シミュレーションに必要な計算をCPUではなく、物理プロセッシングユニット(Physics Processing Unitの頭文字をとってPPU)で行う ことでCPUやGPUにおける処理を軽減するといったものです。また、汎用の物理エンジン"システム"としては、高度な物理処理は視点に近い位置のオブジェクトに限定し、遠くのオブシェクトに対しては物理処理頻度を減らしたり簡略処理を施したりすることができるスケーラビリティの実装は重要であり、動作させるプラットフォームのポテンシャル(実質的にはCPU性能)に見合う 動作が出来なければならないし、ゲーム仕様が求めてくる様々な物理シミュレーションに対し、スケーラビリティを持って対応できなければなりません。

 またこれとは別に、2005年にNVIDIA社とHAVOK社の両社の研究開発チームがGPUを高速な物理アクセラレータとして利用する同開発プロジェクトを立ち上げ、 GPUを汎用プロセッサとして活用する「GP GPU(General Purpose GPU)」として利用するという流れがあります。

 これらの内のどちらかが主流になるかはまだわかりませんが、今後のゲームにおいては「物理エンジン」といったものが 一つのキーワードになるということです。

 また、物理エンジンによる正確な物理シミュレーションがゲーム性を損なうといった問題も指摘されています。たとえばプレイヤーキャラクタが空き缶を投げる場合を考えます。プレーヤーのレスポンスに答えるためにプレイヤーキャラクタをかなり高速で向きを変えると、プレイヤーキャラクタが投げる空き缶は速度によりとてつもないエネルギーを持ち、自動車をも吹き飛ばしてしまうことがあるのです。

 このような問題は「スーパーマン問題」とよばれ、「リアリティ」と「ゲーム性」の兼ね合いの問題の代表となっています。 ゲームにおいてはリアルでない方がリアリティーを生み出す”場合もあり、「リアリティ」だけにこだわると、 シミュレーションのための演算処理が多くなりより多くのマシンパワーを必要とし、またゲーム性の低い物になってしまうかもしれません。

 <参考URL>
watch impress 3Dゲームファンのための最新物理エンジン講座
watch impress Game Developers Conference 2006現地レポート
Mycom ジャーナル CEDEC2005 - 物理エンジンの現状と仕組みを理解する


調査担当: システム制御情報学研究室 見延 盛臣 (提出年月日:2006年5月23日)