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

西川善司の3Dゲームファンのための物理エンジン講座
~AGEIA PhysX編~
物理エンジンアクセラレータの真実

AGEIAのPhysXを学ぶプログラミングトラックセッション
3月20日~25日(現地時間) 開催

会場:San Jose McEnery Convention Center

AGEIAのPhysX物理エンジン
 商業物理エンジンとしては老舗のHAVOKと、新興のAGEIAが二大巨頭として認知度を上げており、今年のGDCでは、この2社のどちらかの名前が入った技術関連セッションが目立っているように思える。

 執り行なわれたいくつかの物理関連セッションのうち、AGEIAの「The Unlimited Potential of Advanced Game Physics」の内容をレポートしたい思う。


■ AGEIAのPhysXチップとは

Director of Worldwide Developer Relations,Tom Lassanske氏
 現在の3DゲームはGPUの進化によって、かなり「リアルに見える」ようになってきた。ただし、ゲームプレイ時に「リアルに感じられる」かどうかというとこれには「?」マークがつく局面が多い。そう、これはゲーム内でのリアクション、すなわち物理シミュレーションの部分がまだまた洗練されていないことが多いためだ。

 こうした状況に革新をもたらすべく、AGEIAが開発してきた物理シミュレーション・ミドルウェアが「PhysX」(旧NovodeX)だ。

 そもそも物理シミュレーションとは何か。

 AGEIAでは物理とは「動的な運動制御」と「動的な相互作用(Interaction:インタラクション)」であると考え、自然界にある様々な運動と相互作用をモデル化して「入力に対して出力が得られる」ようなソフトウェアモジュールとし、それらをシステマティックに集積して「物理エンジン」というソフトウェアパッケージを形成した。これが彼らの「PhysX」だ。

AGEIAの物理演算プロセッサ(PPU)
 PhysXは、その物理エンジン部が独立性の高いソフトウェアブロックで、ハードウェアアクセラレーションまでを可能にしているところが特徴だ。そのハードウェアアクセラレーションを実現するのが昨年発表された(ただし未発売の)、世界初の物理演算プロセッサ(PPU:Physics Processing Unit)「PhysX」チップだ。

 PhysXチップは0.13μmプロセスルールでTSMCにて製造され、トランジスタ数は1億2,500万、動作クロックは非公開とした、SIMDベースの浮動小数点ベクトル演算器のアレイからなるプロセッサだ。

 ワークメモリとしてGDDR3を採用。標準モデルの容量は128MBで、上位モデルとして256MB版も用意される。

PhysX物理エンジンアクセラレータカード。ついに量産モデルが完成。レガシーPCIバス接続
 PhysXチップを搭載したカードの接続バスは、レガシーな32bit PCIバスに対応。ただし、PCI-Express “x1”版も2006年末ごろに発売を予定している。PCI-Expressの“x4”や“x8”、“x16”のデザインは技術的に可能とするが、近い将来の製品予定としての企画はないとしている。

 カード自体はマザーボードやVGAカードのメーカーとして著名な台湾ASUSTeKが製造と販売を予定しており、128MB版が250ドル~299ドルで2006年5月の予定。そして価格は未定だが256MB版の上位版もほぼ同時期にリリースされる予定だ。

 なお、PhysXカードの製品バリエーションは搭載メモリ容量の違いだけで、動作クロックの違いによるバリエーション展開の予定は今のところないという。


■ PhysXチップはノンリニアメモリアクセスを得意とするFP-SIMDプロセッサ・アレイである

ARTIFICAL STUDIOS、IMMERSION GAMESが開発中の「CELLFACTOR」より。PhysXは、これまでの3Dゲームにおける「非リアリズム的要因」であった、決め打ちアニメーションや事前計算のインタラクションを、リアルタイムシミュレーションの結果に置き換えることを目的としている
 PhysXチップは物理演算に特化したアーキテクチャを採用しているとし、超並列な動的タスク実行を可能にしたアーキテクチャとなっているという。

 オンボードの128MB/256MBのGDDR3メモリは物理シミュレーション用のサブシステムを取り扱うための専用ワークエリアとして用意されたもので、GPUのようなシーケンシャルメモリアクセスだけでなく、ノンリニアなランダムアクセスパターンにも対応したアーキテクチャとなっていることを強調する。PhysXチップ内部のバス帯域は2TBit/sec、すなわち256GB/secというから、かなりユニークなものになっていそうだ。なお、現在最も高速なビデオメモリと多ビットメモリインターフェイスを採用したNVIDIAやATIのハイエンドGPUでも50GB/sec前後であるから、この帯域は桁違いに広い。

 Physicsが提供する物理シミュレーションは、最も基本となる剛体物理(Rigid Body Physics)の他、柔体物理(Soft Body Physics)や流体物理(Fluid Physics)などで、APIレベルではソフトウェア版PhysXとハードウェア版PhysXとでは全く透過的に利用することができる。現時点でPC、Xbox 360のPX-CPU、PS3のCELLプロセッサのSPUに対応したバージョンが用意されており、APIレベルでは完全に透過的なクロス開発を提供できるとしている。


■ PhysXチップの動作の仕組み

AGEIAのチェアマン兼CEOを務めるManju Hedge氏
 PhysXチップはどのような仕組みで何をどうアクセラレーションするのだろうか。

 この点についてはAGEIAのチェアマン兼CEOを務めるManju Hedge氏は以下のような解説をしてくれた。

 まず、PhysXチップに接続されるメモリには物理シミュレーションソフトウェアがロードされるほか、そのシーンで使用される3Dモデルの衝突形状モデルやその位置情報や変移状態、速度などを表すパラメータなどを全て転送しておく。

 グラフィックス処理を行なうわけではないのでテクスチャなどの転送は不要だ。

 また、物理衝突形状モデルはグラフィックスとしての3Dモデルよりは大幅に頂点を削減したモデルでも見た目的に問題ないとされ、(ゲームエンジンやゲームデザインにも依存するが)一般に物理シミュレーション用の形状モデルはグラフィックスの3Dモデルの数分の1から数十分の1の頂点数を用いる。よって多量の物理衝突形状モデルを取り扱うにしても、グラフィックスほどメモリを占有しない。

 いまやGPU用のメモリとして128MBや256MBは大容量とは言えなくなってきたが、物理シミュレーションプロセッサ用のメモリとしてこの容量は必要十分だと言うことらしい。

 メモリ容量の違いによって物理シミュレーションの精度は変わらないが、一度に取り扱える物理シミュレーションの種類や、取り扱える物理衝突形状モデルの数に差異が出てくる。すなわち、少ないメモリでは、シーンの切り替わりやゲームの進行に応じて、PhysXサブシステムへの更新頻度が多くなるため、結果としてパフォーマンスは256MBの方が上になる。これはPCに例えるとわかりやすい。PCはメモリを増設すると(最大性能は変わらないが)パフォーマンス低下の頻度が減るが、あのイメージだ。

 物理シミュレーションの処理自体はPhysXチップと専用メモリの中で処理されるので、この時点でレガシーなPCIバスを利用していることのデメリットは生じない。

 また、ほぼ完全に物理エンジン処理部をPhysXチップ内で完結できるため、同時にCPU側でレンダリングのための準備を行なったり、AI処理を並列に走らせることが出来る。

 バス速度が問題となるのは、物理シミュレーションの結果をCPU(ゲームエンジン側)に戻す時と、ゲームエンジン側から次のフレーム分のシーンのアップデートをPhysXに行なうときだ。これらのデータ量は物理シミュレーションのシーンセットアップと比較すると大部少ないためにPCIバスで全くまかなえる範囲であるとHedge氏は語っていた。

 ただし、大量の結果戻しや大量のアップデートが頻発する、たとえば数千に及ぶパーティクルを物理制御するような場合にはここがボトルネックになることがあるかもしれない。その場合は、PhysXサブシステムとの入出力同期サイクルを毎フレームではなく、複数フレームごとに行なったりといった対応が必要になることだろう。

 ところで、PhysXは、その実体をソフトウェア化して実装したものもあり、この場合はPS3やXbox 360のような家庭用ゲーム機に最適化したバージョンも用意される。当然、PS3はマルチSPU、Xbox 360は3コアのPX-CPUに対応したものになる。PS3やXbox 360ではUMAを採用しているために、物理結果戻しやアップデート時の物理サブシステムとCPU側のやりとりは内部バスでフルスピードで行なわれるので、バス帯域条件的にはPCの場合よりも大部いい。

物理エンジンPhysXを活用したゲーム風インタラクティブ・デモ。奥からかわいいアヒルが障害物を避けつつ迫ってくるのでこれを撃って撃退するか背景を破壊して経路を塞ぐのが基本ルール。小道具類の爆発時の挙動に注目!
「Hanger of DOOM」のムービー
(WMV形式、ZIP圧縮、15.9MB)


■ PhysXがもたらす新しいゲーム性

 実際にPhysXチップに対応させた開発中のゲームタイトルの紹介も行なわれた。

 1つはARTIFICAL STUDIOS、IMMERSION GAMESが開発中の「CELLFACTOR」だ。

 シーン内の構造物は強度パラメータ付で物理シミュレーションが効いていて銃撃などの衝撃によって崩壊するような仕掛けが盛り込まれている。デモでは“いかにもくずれそう”というかんじで積み上げられた土管に銃撃を加えて期待通りに崩壊させていた。威力の低い直接的な銃撃では倒せなさそうな強敵を、周囲の重量物を崩壊させて攻撃する……といったゲームアイディアに結びつけられそうだ。

 そして崩壊だけでなく、爆発エネルギーの伝搬のシミュレーションも披露。大爆発によってシーン内の無数のアクティブキャラクタ達が相互に衝突し合いながら吹っ飛ぶ様はなかなか感動的だ。これも直接的な爆発エネルギーで敵を撃ち倒すのではなく、爆発で吹っ飛んだシーン内の小道具や大道具を敵に命中させて間接的かつ広範囲に攻撃するというアイディアに使えるだろう。

ゲーム内にリアルな大規模崩壊を導入するのは今後流行しそうだ
爆発によってシーン内のものが吹っ飛んで連鎖反応的に損害が大きくなっていく様
「CELLFACTOR」のムービー
(WMV形式、ZIP圧縮、39.7MB)

 PhysXの布シミュレーションでは自己衝突考慮の折れ曲がりや変形だけでなく、耐性パラメータに配慮した「破れ」までがサポートされる。CELLFACTORでは銃撃して穴を開けてていくと、ちゃんと(?)ちぎれる表現を導入。重いものを布にぶら下げて行なっても重量に耐えきれなくなるとちぎれたりする。

 布の破壊(?)というのは、ゲームプレイ物理の表現としては目新しいのでユニークなゲームルールの生み出しにも結びつきそうだ。

「CELLFACTOR」より。PhysXの布シミュレーションの一例

 PhysXでは3Dスプライト(パーティクル)ベースのリアルタイム流体物理がサポートされる。シーンの凹凸に配慮した動きをするのはもちろん、その動きの粘度もパラメトリックに調整が出来る。CELLFACTORでは、キャラクターが死亡したときの流血表現にこの流体物理を利用している。

体物理を流血表現に利用。「いかにもパーティクル感」が強いが、実際の映像ではどろどろとした感触が上手く表現されていて面白い

 KYLOTON ENTERTAINMENTが開発中の「BET ON SOLDIERS」では、流体物理を盛り込んだユニークな武器表現をPhysXにて実現している。

 毒薬のような液体を吹き掛ける武器ではシーンの凹凸に適合する形で染み込んだり、シーン内を流れたりする。斜面の上流に吹き掛ければ、斜面をこの毒液が流れ出して下流にいる敵を撃破したりすることも可能。

 BET ON SOLDIERSでは火炎放射器の表現もこのPhysXの流体物理シミュレーションを利用することで面白いビジュアルが表現できている。吹き出される炎にパーティクルベースの流体物理が適用されているのはもちろん、火炎が衝突した部分からも溶解した金属が流れ出るのだ。デモでは、コンテナに閉じこもった敵を、そのコンテナごと火炎放射器で攻撃し、コンテナの壁を溶解させて液化した金属で焼き殺すという攻撃方法を披露して見せた。残虐表現ではあるが、流体物理のゲーム表現としては斬新だ。

流体物理による火炎放射器の表現 流体を利用したパズルなどもアイディアとして面白そうだ
「BET ON SOLDIERS」のムービー
(WMV形式、ZIP圧縮、11MB)

 セッションの最後では、PhysXのライセンス形態についてもふれた。

 PCについては、PhysXチップによるハードウェアアクセラレーションに対応すればライセンス料は無料となる。あるいは商業利用でなければ無料としている。そして、すでにソニーとの提携でライセンスを交わしているので、PS3用のPhysXライセンスは無料としている。その他のケースでは約50,000ドルで開発ドキュメントに開発サポートが付属する。

 なお、回を改めては、もう一つの物理ミドルウェア、HAVOKの最新動向をお伝えしたいと思う。

□Game Developers Conference(英語)のホームページ
http://www.gdconf.com/
□Game Developers Conference(日本語)のホームページ
http://japan.gdconf.com/
□関連情報
3Dゲームファンのためのグラフィックス講座
http://game.watch.impress.co.jp/docs/backno/rensai/3dg.htm

(2006年3月25日)

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



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

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

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