【Watch記事検索】
最新ニュース
【11月30日】
【11月29日】
【11月28日】
【11月27日】
【11月26日】

3Dゲームファンのための最新物理エンジン講座
〜3Dゲームのための物理エンジンアクセラレータ「PhysX」はブレイクするか?



AGEIAチェアマン兼CEOを務めるMANJU HEGDE氏。手にしているのは後述するPhysXチップ搭載カード
 北米時間、3月8日付けで、Ubisoft、セガ、そしてUnreal Engine3.0のEPIC GAMESがその採用をアナウンスしたのが、米AGEIAの物理エンジン「NovodeX」だ。Microsoftの次世代ゲーム開発フレームワーク「XNA」にもAEGIAはNovodeXテクノロジーでこれを支援することを表明している。

 物理エンジンと言えば、ゲーム業界では「Half-Life2」にも採用された「Havok」が有名だが、ここにきてNovodeXが急激にクローズアップされてきた。それは、どうも彼らの物理エンジンに対する考えが、かなり「次世代」であることから来ているようだ。

 GDC滞在期間中に、NovodeXの開発元であるAGEIA社の、チェアマン兼CEOを務めるMANJU HEGDE氏とお話する機会を得られたので、この時の会話の内容を元に、ゲームにおける「物理エンジンの次世代」について考えていきたいと思う。

■ 3Dゲームの不自然さ=映像と物理のクオリティの格差

「Half-Life2」の物理パズルシーンより。「HL2」も物理エンジンの使い方に定評のあるものだったが、やはりその使い方は局所的であった
 本題に入る前に、まずキーワードの整理をしておこう。

 「物理」というキーワードは広い意味を持つが、今回のテーマとする「物理」は、「ニュートン物理」を根幹とした運動「物理」を指す。ゲームにおける「物理」エンジン……といった場合も、一般的には3Dオブジェクトの運動/挙動を司るもの……ということになっている。有名なHavokも、今回取材を行なったAGEIAにしても、この運動物理のエンジンメーカーだ。今回特別な断りがない場合、「物理」という用語はこうした分野をさすもの……と思ってもらいたい(AGEIAは流体力学までをサポートするので、実際にはもうちょっと他の要素も入ってくるが)。

 それでは、本題へと移ろう。

 現在、PCにおける3Dゲームのグラフィックスはプログラマブルシェーダ時代へと突入し、次世代Playstation(仮称)や次世代Xbox(仮称)などの次世代家庭用ゲーム機もこの流れに乗ってくる。ハイダイナミックレンジ(HDR)レンダリング、光散乱シミュレーション、強力な影生成など、ビジュアルクオリティは年を経るごとに進歩しており、その進化スピードはすさまじい。ビジュアルクオリティに関しては、リアルタイムレンダリングCGでも、ある局面においては映画用などのオフラインレンダリングCGに肉迫したクオリティを持つものも出てきており、ビジュアルに関して言えば、リアルタイムとオフラインの“格差”はジリジリと縮まってきているといっていい。

 これに対し、ゲーム中の、AI処理や物理シミュレーションについては、確かに進歩こそしてきているが、最近でも「映像のクオリティと比較してやや見劣りする」、「動きと映像の品位がアンバランスだ」……といった印象を抱くことはよくあることだ。

AGEIAのロゴ。このAGEIAという社名は、(A)アメリカ人2人、(G)ドイツ人、(E)エジプト人、(I)インド人の創始者5人の国籍の頭文字をちりばめたものだそうで、それぞれが物理学、コンピュータサイエンス、半導体設計などのエキスパートなのだそうだ。ちなみに、今回お話しいただいたHEGDE氏はインド国籍である
 AI処理の高品位化と言うテーマには、別な世界が広がっているので、今回はおいておくが、対して物理シミュレーションという分野は、計算機にとっては3Dグラフィックスに近い分野だ。3Dグラフィックスは光が物に当たってどんな光が目に届くか……という物理現象を計算で求めているのだから、3Dグラフィックスはある意味、物理シミュレーションだともいえる。

 AI処理と違い、物理シミュレーションは、現実世界(もしくはそれに準じた世界)の現象をパラメータ駆動の計算式に置き換えて実装できるものなのだから、現在のコンピュータモデルとは相性は悪くないはずだ。なのにここまで、物理シミュレーションの進化が後回しになってきたのはなぜか?

 これは意外にも理由は単純だ。「ある決められた計算能力の予算があったとして、その多くを“見栄え”に割いた方が、多くのユーザーが満足できたからだ」(MANJU HEGDE氏)

 最近、よく感じる「違和感」は、この進化した映像に、動きの質感が付いてこれていないからなのだ。AGEIAはこのギャップを埋めることにビジネスチャンスを見出して設立されたのだという。

■ 現在の3Dゲームの物理は「イベント駆動型の物理」である

EPIC GAMESもNovodeX採用に名乗りを上げた。画面は同社の最新ゲームエンジン「Unreal Engine3.0」の物理テストユーティリティ「PhAT」より
 現在の、3Dゲームにおける物理エンジンは、その物理挙動制御を「局所的」にしか活用していない。どういうことかというと、構築されたゲーム世界に、基本的にはニュートン物理は働いておらず、一定の条件下が成立したときにのみ、物理エンジンの出番がやってくる…といった感じだ。

 例えば、3Dシューティングゲームにおける破壊可能な小道具や大道具について。銃撃するとまったく何の反応もないのの、ある一定以上の攻撃を受けると途端に壊れるというのは良く見かける。時速何百キロの質量弾を受ければ、その運動エネルギーは相当なものなので、現実であれば、一発被弾するたびに何らかの挙動を示すはずだ。そして、それまで全く動かなかったのに、ある一定量のダメージを受けた途端に、剛体物理の挙動で吹っ飛んだりする。

 人間キャラクタでも同様で、体力がある間は銃弾を浴びていても被弾ダメージを喰らうだけで、その衝撃の結果としての姿勢変化はない。ところが、体力がゼロとなった途端に、“死体”となり、Ragdoll物理(詳細は後述)制御でこれが吹き飛ぶ。

 まあ、いろんなタイプのゲームがあるので一概には言えないにしても、平均的に言って、多くの3Dゲームの物理エンジンは、「ハイ、これから物理法則に従って運動してください」……といった感じの、トリガーを受けてから活動開始するものが多いのは確かだ。いわば「イベント駆動型の物理」といった感じだろうか。

 映像は徹底してリアル(あるいはそれに準じた品位)なのに、挙動として非現実的な状態とリアルな挙動が断続的に発生するので、受け手側は全体としてなにやら不自然な印象を受けるのである。もちろん「ゲーム進行上の都合」とか「ゲーム性の都合上」という大義名分もあるので、ゲーム進行のすべてが正しく物理シミュレーションされた結果であるべき…ということはない。

 しかし、ゲームの進行に影響を及ぼさないまでも、プレーヤーの行動1つ1つがゲーム世界にインタラクトできれば新しいゲームの面白さが出てくるかもしれないし、それでなくても、ゲーム世界から得られる臨場感が倍増する事も多々あるのではないか。AGEIAは、ゲームにそうした可能性を提供するべくNovodeXを作り上げたのだそうだ。

■ 大局的な物理シミュレーション〜物理駆動型のイベントとは?

 現在の3Dゲームの物理エンジンの活用形は、「イベント駆動型の物理」と表現したが、AGEIAの考える……というか、目指している3Dゲームは、むしろその逆の形で、「物理駆動によるイベントの発生」の実現だという。つまり、物理シミュレーションの結果によってゲームとしてのなんらかの事象を生ませよう…というわけだ。

 まあ、それの究極形は「地球シミュレーション」的なものなので、いきなりそこに行き着くのは無理だとしても、AGEIAは、現在の「局所的な物理シミュレーション」を「大局的な物理シミュレーション」へ昇華させようとしている。「大局的な物理シミュレーション」とは何なのか。具体的な例で説明しよう。

 もっとも明解な例は「積んであるものの崩壊」だ。例えば3Dゲームに登場する背景としての石壁。これを構成している真ん中あたりの石ブロックの2、3個に衝撃が加わり、これらが吹き飛んだとする。すると、吹き飛んだ石ブロックのせいで、この石壁の上部は支えが不安定になり、ドドドっと一気に崩れ落ちる。現在の3Dゲームの多くが「壁が崩れましたんで、物理エンジンさん、出番ですよ。壁の破壊アニメーションお願いします」という感じだったのだが、AGEIAの物理エンジンの求めるところは、「石ブロックが吹き飛んだ」→「その上の石ブロックは上の重さを支えてられないから、下にずれる」→「あ、その上もダメだ」→「こっちも支え切れられない」……という形で崩壊に至るわけだ。

 さらに言えば、この石ブロックへの衝撃とは、実は銃弾を喰らって吹き飛んだキャラクタの体だったとすれば、上で例示した「流れ」の前にこの事象が入るわけで「死体が吹き飛んできた」→「石壁に当たる」→「石ブロックが吹き飛んだ」→(以下同)……という具合になる。さらに遡れば、「このキャラクタの死」という事象も物理シミュレーションの結果で起こったものかもしれない。

 つまり、ある1つの運動物理の事象がゲーム世界中の別のオブジェクトに影響し(相互に影響し合って)、連鎖反応的に伝播して行くのを面倒みようとするのがAGEIAの物理エンジンの目指すところなのだ。

 別の言い方をすれば、これまで「死亡」→「Ragdoll物理」、「破壊」→「剛体物理」というような、ゲームイベントがあって物理が走り出すという流れを「物理シミュレーションの結果」→「死亡に至る」、「物理シミュレーション結果」→「破壊に至る」というふうにできたらいいな、ということだ。これが、つまり、「物理駆動によるイベントの発生」というわけだ。

 もちろん、ゲーム世界には“進行”や“ゲーム性”といった絶対的な「神」の存在があるので、なかなか「100%物理駆動」というふうには行かないだろう。とはいえ、この「物理シミュレーション」が、その「神」の部下ではなく、せめて「腹心」くらいの存在に格上げされるといいな、というのが、当面のAGEIAの目標となっているのである。

■ NovodeXの物理エンジンとは実際にどんなものなのか?

 現在、AGEIAは、同社のWebサイトにて、フリー版のSDKや、デモソフトなどをアップロードしている(一般ユーザでもフォームに基本情報を入力するだけで入手可能)。その中で、特に興味深いものをいくつかピックアップして紹介したい。

 以下の画面は実際に筆者のノートPC(Pentium 4 2.6C GHz、MOBILITY RADEON9600PRO)で動作させたものを画面キャプチャしたものであり、“でっち上げ”ではない。また、物理エンジンの効果に主眼をおいたデモであるため、登場する3Dモデルの形状やテクスチャは非常に簡素的なものになっている。実際のゲームでは、ゲーム開発者側が自社のグラフィックスに彼らの物理エンジンを組み込むことになるため、このようにはならない(念のため)。

【車両物理(基本系)】
四輪車の車両物理とゲーム世界のインタラクティビティを例示したデモ。四輪車は自由に操作でき、町中を走り回れる。町の中には、ヒモにくくりつけられた籏、積み上げられたドラム缶などなど、いくつかの特有の物理属性が設定されたオブジェクトが配置されており、四輪車を操作してこれらのオブジェクト達に干渉を試みることができる


【Ragdoll物理(基本系)】
内部設定された骨格の可動範囲に配慮した形で衝突判定を行ない、さらには運動物理も計算するもの。「Ragdoll」は「ぬいぐるみ」の意。端的に言えばRagdoll物理とはぬいぐるみを吹っ飛ばしたときの状態をシミュレートするもの。デモでは、何体もの人体モデルを連続的に階段から転倒させる。頭部や肢体の存在に配慮しながら階段を跳ね、積み上がっていく


【車両物理vs.Ragdoll(応用系)】
無数の人体Ragdollを地面に配置、4方向に斜面を設置して、そこから四輪車を次から次へと走り降ろす。車両も重量物なので、人体はただ突き飛ばされるだけだが、車両同士の衝突はその衝突箇所の形状、進行方向、速度によって微妙なバランスの結果が生じ、複雑な挙動を見せる。その間で翻弄される人体の動きは、不謹慎ながらも、どことなくコミカルに見える


【様々なRagdoll(基本系)】
NovodeXのRagdoll物理は、人体形状に限っていない。内部骨格の各骨の自由度、骨格関節の曲がり制限、各部位の重量に配慮した動きをするし、衝突判定も同様だ。
 また、手足などの突き出た部位のの動きだけでなく、頭部と下顎のようなジョイント部に対しても配慮される。モンスターの下あごが、重力に引かれて開ききってしまったり、馬の下あごがずれてしまっている点に注目して欲しい


【重心(基本系)】
物体の形状や、または特定箇所に重量物を配置しているときには、重心というものが、運動特性に大きく関与する。加速度を伴った場合は加重の移動も発生するが、その際にも重心の位置は重要になる。NovodeXでは重心に配慮した物理運動もサポートするのだ。このデモでは、下に重心があって、ある程度の衝撃を喰らっても倒れず必ず起きあがるという、ダルマのような挙動を示す


【積み重なりと崩壊(基本系)】
 積み重なった積み木を崩さないように取り去ることを競う「ジェンガ」というゲームがあるが、アレと丁度同じ状態を作り上げて物理シミュレーションを行なうデモ。数十個の直方体状の棒が積み重なっている状態で、任意の箇所の棒を抜いてみると、何個か抜いたところでバランスが崩れてバラバラと連鎖反応的に上部が崩壊してしまう。
 棒を抜き去った箇所より上部のブロック達は、その場に居続けようとする慣性力が働く。そして積み重なっている関係上、下部の方が上段よりも多くのブロックが載っていて重いため、その慣性力が強い挙動を示している点が興味深い


【積み重なりと崩壊1(応用系)】
360個のブロックでジェンガを……という、現実ではあり得ない、コンピュータならではの状況を設定しての実験。この例でも、あえて下部のブロックを抜き去ってみる。衝突と慣性が複雑に入り組みながら崩壊していく様が面白い


【積み重なりと崩壊2(応用系)】
今度は直方体ではなく、牛の形をしたものを積み重ねてみる。足や首などが突起しており、背中は丸みを帯びているが、こうした形状を正確に配慮しながら衝突し、なおかつ重心までもを考慮しながら崩れ去る


【積み重なりと崩壊3(応用系)】
丸みを帯びた筒状の物体によるジェンガ。これまでのと違うのは、物が転がる際の摩擦係数である「転がり係数」が関与してくる点だ。バランスを崩すと構成している棒筒が転がるので、直方体ジェンガとは異なった崩れ方になる


【衝突と破壊(基本系)】
積み重なったピラミッドにボールが激突するデモ。衝撃により台座部のブロックが吹っ飛び、慣性を維持しながらも崩れ去っていく。ボールが衝突した場所とは反対側の台座部分にも衝突の衝撃が伝わっている様が見える


【衝突と破壊(応用系)】
投石機(カタパルト)で、人体モデルや球モデルのような質量弾を投げつけて、ブロックで積み上げられた塔を破壊するデモ。RTSの戦闘シーンを彷彿とさせる。簡略化された耐久値ベースのダメージ管理でなく、このように物理的なパラメータで兵ユニットの耐久力が管理できればRTSに新しい面白さを提供できそうだ


【歯車(基本系)】
NovodeXでは、歯車の歯と歯がかみ合う様までがシミュレーションされる。1つが回転するとその運動エネルギーが歯車の“歯”同士の衝突で伝搬して次の歯車を回す。歯車に掛かる力が、歯車の重さに伴う慣性力を上回るとき、すべての歯車は連鎖反応的に回転をし始める。デモでも、実際に1つの歯車に力をかけて(マウスでドラッグして)回すと、全ての歯車が回り出すことを確認できる。歯車の噛み合い方のジオメトリを工夫することで回転運動の方向の変換に成功している点も興味深い。アドベンチャーゲームの謎解きにもこうした仕組みが提供されると面白いかもしれない


【剛体のバネ接続による仮想的な布シミュレーション(複合系)】
小さい剛体(堅い物)オブジェクトを目に見えないバネのようなパラメータで相互接続することで、仮想的に布のようなオブジェクトの挙動を作り出している例。全体としてマットレスのように見える白い物体も、実は1個1個がブロックのような物になっている。いわゆる多関節キャラを立体で再現しているようなイメージだ


【キャタピラ(複合系)】
 前出の「歯車」と「仮想的な布シミュレーション」を組み合わせてキャタピラを構成した場合のデモ。NovodeXでは基本的な物理シミュレーションを組み合わせて、複雑な別な運動系を作り出せる。これも、連鎖反応的な物理シミュレーションがなければなしえない“技”だ


■ 物理エンジンアクセラレータ「PhysX」を年末に発売する

 上で示したものは、それこそ、現行のCPU、例えばPentium 4やAthlon64でなんとかリアルタイムに処理できるものだ。これ以上、複雑になってくると、現行CPUでリアルタイム処理をするにはきつくなってくる。

【衝突と破壊(基本形)】
積み上げられた400個のブロックに対して球体を衝突させるデモ


 このあたりまではなんとかリアルタイムで動作できるが、

【衝突と破壊(応用系)】


 このように積み重ねられたブロックの個数が16,000個にもなると、その破壊の物理シミュレーションはPentium 4 2.6C GHz程度では1秒間に1フレーム出るかでないかといったところにまで落ち込んでしまう。HEGDE氏に言わせれば「これが現在のCPUの能力の限界だ」そうで、「次なるステップに行くためには別のソリューションが必要になるのだ」と熱く語る。

 かつて「DOOM1」('93年)時代から「QUAKE1」('96年)時代まで、3DグラフィックスがCPUベースのソフトウェアレンダリングエンジンによって描き出されていたことを思い出して欲しい。「QUAKE1」時代中期、ソフトウェア3Dグラフィックス表現が限界に到達したことを実感した業界は、3Dグラフィックスアクセラレータ(GPU)を市場投入した。

 「今我々は、丁度、あの“Voodoo”が登場した時と同じ局面にいると思えないだろうか。映像に見合う物理をCPUベースでやるのはもはや難しい。何らかのブレークスルーがないと3Dゲームの次なる進化への道が開かれない。」(HEGDE氏)

世界初のPPU「PhysX」チップを搭載した物理エンジンアクセラレータ。価格は100ドル〜400ドルの範囲で考えているが、出荷量が見えていないので最終決定はまだ先の事になると言う。発売時期は年内を予定しているが正確なところは未定
 そこで、AGEIAが開発したのは、世界初の物理エンジンアクセラレータチップ「PhysX」だ。基本的にはSIMDベースの浮動小数点実数ベクトル演算器の塊(アレイ)のようだが、ここまで述べてきたような連鎖反応的に発生する物理計算に特化したアーキテクチャになっているという。

 製造プロセスルールは0.13μm。トランジスタ数は1億2,500万。製造FABはTSMCだそうだ。動作クロックは現時点では非公開としている。ワークメモリとしてGDDR3メモリを128MB搭載する。試作基板は両端にPCI-Express(x4)とレガシーPCIの両コネクタを設け、リバーシブルカードの形態をとっていたが、最終的にこのデザインが採用されるかどうかはわからないとのこと。HEGDE氏は、ビデオカードやサウンドカードに一緒に搭載する、マルチファンクションカード形態での提供の可能性も否定しなかった。

 上で示した、1fpsもいいところの「衝突と破壊」のデモも、このPhysXチップでアクセラレーションすると60fpsがコンスタントに出せるという。HEGDE氏によれば、現時点で、その約2倍の32,000個のブロックでも同レベルのフレームレートが出せるとのことで、「物理エンジンアクセラレーション」の名に恥じないものとなっているようだ。

 CPUやGPUという用語に対して、このPhysXチップは、物理プロセッシングユニット(Physics Processing Unit)の頭文字をとってPPUという略称で呼んでいる。今回発表された第一世代PhysXチップによってアクセラレーションされる物理演算としては、

PhysXチップによってアクセラレーションされる物理シミュレーション項目
●剛体物理→大規模な爆発とその破片の挙動計算など
●有限要素解析→自動車の衝突などにおけるボディのめくれ上がり
●軟体物理→スライムのような生物など
●流体物理→水のような液体や溶岩のような半液体のようなものまで
●毛髪シミュレーション→風になびくようなボリュームとしての毛髪の動き
●布シミュレーション→なだらかに舞い落ちる布。
●総合的な当たり判定→1対1ではなく、周囲全体に相互干渉できるシステムとして。

 ……などを挙げている。アクセラレーションに対応するのは当面は自社の物理エンジンであるNovodeXのみとなる見込み。まぁ、これは、現在、物理エンジンに関する標準APIがないので、仕方がないことだといえる。

 ゲームの作り方としては、NovodeXエンジンを利用する際、PhysXチップがある場合はその物理エンジンの演算規模を大きくし、PhysXチップ無しの場合はその演算規模を小さくする……といったスケーラブル設計にする必要がある。ゲーム性の根幹に関わる部分でのスケーラブル設計はなかなか難しいので、当面は、ゲームコンテンツに関わってこない背景周りのリアルさの演出(背景物同士がぶつかり合って壊れるとか)に使われることだろう。

米Microsoft General Manager Windows Graphics & Gaming Technologies担当、Dean Lester氏
 今回のGDC2005では、このAGEIAの取材とは別に、DirectXのWindows Gamingのトップを務めるDean Lester氏とも会談した際にも、物理エンジンのアクセラレーションについての話題が出た。Microsoftの立場としては、この物理エンジンのアクセラレーションという問題についてどう動くべきかは、現在検討中であり、具体的な方針は打ち出せる状況にないと説明する。という理由の1つには、GPUが高性能化し、高度なプログラマビリティを備えるようになってきており、GPUのプログラマブルシェーダを使った物理エンジンのアクセラレーションについての議論も出てきているからなのだという。

 「GPUで物理」というのは夢物語ではなく、2004年8月にロサンゼルスで開催された「Workshop on General Purpose Computing on Graphics Processors(GPUを汎用目的で活用する研究報告会)」という学会で実際に議論が行なわれている。

 AGEIAのPPUと言う考え方が、業界標準となりえるかは、今からではなんとも言えない。とにかく、1つ言えるのは、物理エンジンが、これまでの「ゲームだから」という“あきらめ”や“妥協”のような檻から飛び出したいと、もがいているということだ。

■ 最後に〜次世代ゴルフゲームでは芝の1本1本に当たり判定を持つようになる?

 最後に、NovodeXの物理エンジンデモの1つを見せていただいた後に、HEGDE氏と盛り上がった次世代のゲームの1例を取りあげて終わりたい。

【剛体による草の表現(応用系)】
細い棒状の直方体をジョイントして作り出した草を無数に配置してそこにボールを落としてその運動が見られるデモ。草一本一本が当たり判定を持っており、ボールの動きに影響する。ボールが草に潜ったときには、草一本一本の元の姿(直立姿勢)へ戻ろうとするバネの力が働き、さらに複雑な運動エネルギーをボールに与えている。このデモは、衝突判定が複雑なこともあり、Pentium4 2.6C GHz+Mobility RADEON9600PRO程度では10fpsもままならないほど遅くなる


 現在の多くのゴルフゲームのコースは画一的な「平面としてのパラメータ」……例えばその地面の斜面、硬度などのパラメータしか持っていない。このデモのように、NovodeX物理とPhysXチップを用いて芝生の草一本一本に当たり判定を持たせて、ゴルフゲームを実現したら凄そうだ。まさに「物理駆動によるイベントの発生」を体現したゲームになりそうな予感がする。特にグリーンでのパットにおける局面では、文字通り「芝目を読む」テクニックが要求されることだろう。

□ageiaのホームページ
http://www.ageia.com/
□havokのホームページ
http://www.havok.com/
□GP2のホームページ
http://www.cs.unc.edu/Events/Conferences/GP2/
□関連情報
【2005年3月9日】Microsoft、チームベースでゲーム制作の効率化をアップさせる
「XNA Studio」発表
http://game.watch.impress.co.jp/docs/20050309/xna.htm
【2005年3月8日】セガ、次世代家庭用ゲームソフト開発で
米AGEIAの物理シミュレーション技術を採用
http://game.watch.impress.co.jp/docs/20050308/sega.htm

(2005年3月18日)

[Reported by トライゼット西川善司]


Q&A、ゲームの攻略などに関する質問はお受けしておりません
また、弊誌に掲載された写真、文章の転載、使用に関しましては一切お断わりいたします

ウォッチ編集部内GAME Watch担当game-watch@impress.co.jp

Copyright (c)2005 Impress Corporation, an Impress Group company. All rights reserved.