ニュース
[CEDEC 2006#05]物理演算エンジンは新世代ゲームの必須科目
2006/08/30 23:55
Havok地域ゼネラルマネージャー ショーン・ボナム氏
 今年のCEDECでは物理演算に関するセッションがいくつも設けられ,ゲーム業界での注目の高さを感じさせる。まず,初日のセッションでは物理演算の本家ともいえるHavokのセッションが行われた。
 物理エンジンの代表として語られることの多いHavokだが,日本でちゃんと紹介されたのはおそらく初めてのことではないだろうか(ちなみに昨年のCEDECでは,ライバルとなるAGEIA Technologiesがセッションを行っていた)。

 現在のHavokは,以下の4種類の製品で構成されている。

 Havok Physics
 Havok Animation
 Havok Behavior
 Havok FX


 セッションでは,それぞれの製品の特徴が示された。ここでは,基本となるHavok Physicsから順に,どのような機能を持つものなのかを紹介してみよう。



■物理エンジンとは?

 さて,物理エンジンと一口にいっても,具体的にどんな処理を行っているのだろうか?

 Havokの中心となるのは衝突判定エンジンである。物理的な挙動は基本的に衝突を中心として動いていると思っていいだろう。
 なおHavokの衝突判定エンジンは,物理エンジンとは切り離されており,衝突判定エンジンだけ使われることもあるという。それほど優秀なエンジンと認められているわけだ。

 物体同士の衝突が発生すると,衝突した点(コンタクトポイント)を介して,力のやり取りが発生し,それぞれの物体の挙動に影響してくる。そこで伝わった力がどのようになるかは,物体の特性によっても変わってくる。人体などを考えれば分かりやすいと思うが,多関節であったり,回転の自由度が制限されていたりと,単純な物理法則だけで成り立っているわけではない。いろいろなものを正確に動かすには,それぞれの特性にあったさまざまなルールを入れなくてはならない。そのルールは,コンストレント(制約)と呼ばれる。
 物理現象の基本的な法則と,設定されたコンストレントから物体の挙動を導き出すのが物理エンジンの仕事である。これはコンストレントソルバーと呼ばれるエンジンが担当することになる。そこから出てきた力や外力などを含めて積分してやることで,その瞬間の物体の動きが決定できる。そして,これを繰り返していけば,物理シミュレーションが完成する。Havok Physicsは,このような基本的な物理演算を担当するエンジンである。

 ゲームで多く使われているエンジンだけにいくつか特徴があり,まず,連続的衝突判定をサポートしている。
 例えば,物体がもの凄く高速で移動する場合を考えよう。拳銃で窓ガラスを撃ったとすると,だいたい2cmくらいの長さの弾丸が1フレーム(60fps時)に5mくらい移動することになる。ちょうど処理しているタイミングで5mm厚のガラスと交差している確率はかなり低いといわざるをえない。瞬間の位置だけ見ていると,大抵の弾丸は素通りしてしまうだろう。これではゲームにならない。
 これを解決するのが連続的衝突判定である。これを使えば,どんな高速な物体でも衝突していたはずの軌道を移動していれば衝突処理が行われる。
 連続的衝突判定を使用すれば判定精度は上がるのだが,当然ながら,離散的に判定する場合よりも負荷がかかってくる。そこでHavokでは,対象となる物体ごとに判定方法を設定できるようになっている。

右:3枚重ねのブロック塀の2枚をすり抜けてしまった例


■HydraCore

 これはHavok Physicsの基本部分だが,分散処理対応になってHydraCoreという名前が与えられている。
 物理演算では,扱う物体数が増えれば増えるほど多くの演算が必要となってくる。大規模処理でこそ醍醐味の見せられる分野でもあり,物理演算の並列処理は必須の項目となっている。次世代のゲーム機や,最新のPCでは,CPUのマルチコア化が進んだり,GPUなども大規模ベクトル演算器として使用することが流行してきており,並列化の基盤も整ってきた。Havokの内部処理を並列処理する際の中心的な役割を果たすのがHydraCoreである。
 Havokの並列化の考え方はシンプルで,相互干渉などソルバーの必要な部分では,処理単位を区切って,2物体同士だけの関係に帰着する衝突判定は逐次並列化を行っていく。
 デモでは,相互に影響が及ぶ範囲をIslandとして識別し,分散処理する様子を可視化しており,衝突などを繰り返す多くのオブジェクト群がリアルタイムにグループ化されていく様子がよく分かる。また,プレイステーション3の構造をモデルに,演算器へ処理が分配されていく様子もシミュレートして解説するなど,分散処理に対する自信がうかがわれた。同じ仕組みなら,PCでもマルチコアCPUは即座に恩恵を受けることができそうだ。

ラグドール処理にはローポリゴンの専用モデルが使われる
■Havok Animation

 キャラクターアニメーションなどで物理演算を導入するためのパッケージがHavok Animationである。というと,ラグドール処理などを思い浮かべる人が多いと思うのだが,それ以外にも,デザイナーが作成した/モーションキャプチャで記録したキャラクターの動きを,地形などに合わせて再生したりできる。
 最近のPCや家庭用ゲーム機では,実写に近い品質の映像が出力可能になってきている。リアル系の絵柄では,キャラクターにもリアルな動作が要求され,モーションキャプチャは必須のものとなってきた。しかし,モーションキャプチャなどを行うと,各関節などの制御用データが膨大になり,複雑な動きを行おうとすると膨大なメモリが必要になってくる。Havokでは,データをウェーブレット変換することで1/15〜1/20くらいに圧縮している。精度を落とせば1/50くらいまで圧縮することも不可能ではないという。

Havok Bihavior用のツール。モデルごとに戦闘や死んだときの動きなどを割り当てている。階層構造で複雑な挙動も管理しやすい
■Havok Behavior

 Havok Animationから一歩進んで,キャラクターの挙動に特化したツールとなっている。アニメーションのブレンドやいろいろな動作の取りまとめなどを行う。

■Havok FX

 Havok FXは,特殊効果専用の物理エンジンシステムである。これまでのHavokはいわゆる「ゲームプレイ物理」というゲームの根本と密接に絡んだ処理系だったため,ON/OFFできる性質のものではなかったのだが,Havok FXは,ゲームの本質には影響を与えないところで,画面を派手にするものだといっていいだろう。多くはGPUなどで行われることになるので,高性能GPUを持っていない人でもゲーム自体はできるが,より派手な画面を楽しみたかったら,物理エンジンを動かせるShader Model 3.0対応のGPUが必要になる。GPUを1基しか搭載しない次世代ゲーム機ではちょっとつらいようだが,今年度末にはXbox 360版やプレイステーション3版が用意されるという。

PS3とPCでのラグドール処理負荷の比較。……と思っていたのだが,PCの3コアってもしかしてPowerPCの3コアのことだろうか?
 多くの映像とともに各種機能が紹介されたが,基本的に物理シミュレーションの動きは楽しそうだ。リアルなモデルをさらにリアルに動かしたり,ゲームのインタラクティビティを上げたりなど,いろいろな方向に使用されており,現在まさに旬の技術といえるだろう。会場のゲーム開発者達の関心も高かったようで,今後はさまざまなゲームに登場することを期待したい。(aueki)


ミドルウェア/開発ツール
■開発元:各社
■発売元:各社
■発売日:-
■価格:製品による

【この記事へのリンクはこちら】

http://www.4gamer.net/news/history/2006.08/20060830235515detail.html