お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
[CEDEC 2007]鉄拳6に採用された国産物理エンジン「OctaveEngine」とは
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2007/09/28 23:37

ニュース

[CEDEC 2007]鉄拳6に採用された国産物理エンジン「OctaveEngine」とは

画像集#022のサムネイル/[CEDEC 2007]鉄拳6に採用された国産物理エンジン「OctaveEngine」とは
 CEDEC最終日,プロメテック・ソフトウェアによる「リアルタイムシミュレーションを可能にする次世代物理エンジンの開発」と題した講演が行われた。プロメテック・ソフトウェアは,国産の物理エンジン開発会社ということで希有な存在であるが,代表的な物理エンジンの部分でHavok,PhysXと併記して名を連ねるなど,なかなか強気の姿勢である。
 同社では,インタラクションを重視した物理エンジンを目指しているようで,現在発表されている「OctaveEngine 1.0」では,特定の用途に特化したエンジンを揃えている。バンダイナムコゲームスの「鉄拳6」に採用された実績を持つ実力派である。現在サポートされているのは,水面,砂,空の3種類のシミュレーションだ。今回は水面と砂についての解説が行われた。

画像集#001のサムネイル/[CEDEC 2007]鉄拳6に採用された国産物理エンジン「OctaveEngine」とは 画像集#003のサムネイル/[CEDEC 2007]鉄拳6に採用された国産物理エンジン「OctaveEngine」とは
画像集#004のサムネイル/[CEDEC 2007]鉄拳6に採用された国産物理エンジン「OctaveEngine」とは 画像集#005のサムネイル/[CEDEC 2007]鉄拳6に採用された国産物理エンジン「OctaveEngine」とは


OctaveEngineの水面表現

画像集#010のサムネイル/[CEDEC 2007]鉄拳6に採用された国産物理エンジン「OctaveEngine」とは
 HavokやPhysXなど,現状で見られるほとんどのゲームエンジンでは,水をパーティクルで扱っている。そのため,水面も粒子の運動をメタボール化したような境界生成を行っており,ちょっとボコボコ感のある水面が多い。
 OctaveEngineでは,水面専用のモジュールが作られており,パーティクルベースのものよりははるかに自然な水面が実現されている。ただ,ここで扱われるのは「水」ではなく,「水面」であり,格子状の点の変移で波などを表しているシステムに対する改良版という位置付けのようである。
 これまでの水面を表現する方法では波動方程式やベルヌーイの法則をもとに水面を解くのだそうだが,OctaveEngineでは,質量と運動量の推移を直接解くことで物理演算を行っているという。そのため,厳密なシミュレーションではないが,制約が少なく,水位が大きく変わったり,流速が激しくても対応できるほか,ほかの方法では実現しにくかった水底の影響を表現することもできる。粘性などを考慮することで,さらに多彩な表現も可能になる。さまざまな力を直接扱っているので,水飛沫などの表現も自然にできるという。

 このあたりはムービーを見ていただいたほうが分かりやすいだろう。解像度が低くて申し訳ないが,だいたいの動きの特徴は確認できるはずだ。

 → OctaveEngineによる水面表現 (43秒:5MB,MPEG-1)


 → 鉄拳6での水面処理 (46秒:5.4MB,MPEG-1)




画像集#006のサムネイル/[CEDEC 2007]鉄拳6に採用された国産物理エンジン「OctaveEngine」とは 画像集#007のサムネイル/[CEDEC 2007]鉄拳6に採用された国産物理エンジン「OctaveEngine」とは
画像集#008のサムネイル/[CEDEC 2007]鉄拳6に採用された国産物理エンジン「OctaveEngine」とは 画像集#009のサムネイル/[CEDEC 2007]鉄拳6に採用された国産物理エンジン「OctaveEngine」とは


業界初の砂のシミュレーション

画像集#012のサムネイル/[CEDEC 2007]鉄拳6に採用された国産物理エンジン「OctaveEngine」とは
 続いて紹介されたのは,砂をシミュレートするモジュールだ。砂というか砂の面,砂浜や石庭のような砂を敷き詰めた部分に対するさまざまなインタラクションが可能になっている。熊手で模様を付けたり,足跡を残したり,風の影響で風紋ができたりといった具合だ。砂山に名前を書いても大学に苦情が殺到することもない。こういった「砂」表現は,これまでの物理エンジンではサポートされていない分野で,業界初のものになるという。
 砂は,一般的な流体とは違い,安息角というものがあって,ある程度以下の角度になると流れが止まってしまうという性質を持っている。

 →砂のシミュレーション (1分22秒:7.73MB,MPEG-1)


画像集#011のサムネイル/[CEDEC 2007]鉄拳6に採用された国産物理エンジン「OctaveEngine」とは 画像集#013のサムネイル/[CEDEC 2007]鉄拳6に採用された国産物理エンジン「OctaveEngine」とは


水と砂の複合処理

画像集#014のサムネイル/[CEDEC 2007]鉄拳6に採用された国産物理エンジン「OctaveEngine」とは
 さらに示されたのは,水と砂のコンボ処理だ。実際には,空のシミュレーションも同時に行っていて,昼と夜で明るさが変わっている。砂場に水を注いで池を作ったり,砂を崩して埋めてみたり,地面を掘って水路を作ったりと,さまざまな操作が可能になっている。これもムービーを見てもらうのが分かりやすいだろう。
 砂の「濡れ」表現は入ってないようで,見ているとちょっと違和感のある部分もあるが,地形をダイナミックに操作しても破綻しない処理が実現されていることが分かる。

 →水と砂の複合処理 (1分16秒:7.15MB,MPEG-1)


GPGPUとCell SPUでの展開

 物理演算というのは,やり始めると膨大なものとなり,CPUによる処理では追いつかなくなってくる傾向がある。Havok FXやPhysXではGPUによる演算や,専用アクセラレータの開発が行われている。OctaveEngineでも,GPUによる処理とPLAYSTATION 3のSPUによる並列化を進めている。物理エンジンを実用的なものとするためには,必須の選択といってよいだろう。
 セッションでは,GPGPU(General Purpose GPU)とSPUでの実装についての注意点などが解説された。GPUでの処理は,元々の目的の特性から,データなどはテクスチャとして用意してGPUでアクセスすることになる。また,計算結果の出力もテクスチャへの書き出しとなる。これにはレンダーターゲットの指定で任意のテクスチャに書き込むようにする。GPUの世代にもよるが,シェーダモデル3.0世代では,レンダーターゲットは4か所しか指定できないので,入力データは多数用意できるものの,出力先は4か所に制限されることに注意が必要になる。
 また,処理の特性上,演算を細かく分けて何回も回すよりも,複雑な演算にまとめてでも,レンダリングパス数を少なくすると処理効率が上がるという。
 PLAYSTATION 3のSPUを使用する場合は,SPUで扱えるローカルメモリが非常に小さいので,それに合せた最適化が必要になる。並列処理の管理は,SPURS(SPU Runtime System)に任せているようだ。処理は,演算領域単位で分割してスレッド化されている。
 これは,先ほど挙げた鉄拳6用に実装されたもので,SPUを1〜6個使用できる専用筐体で動作するという。

画像集#015のサムネイル/[CEDEC 2007]鉄拳6に採用された国産物理エンジン「OctaveEngine」とは 画像集#016のサムネイル/[CEDEC 2007]鉄拳6に採用された国産物理エンジン「OctaveEngine」とは


将来的な展開:OctaveEngine Next

画像集#017のサムネイル/[CEDEC 2007]鉄拳6に採用された国産物理エンジン「OctaveEngine」とは
 最後に,OctaveEngineの未来形と今後の展開が示された。
 現在実装されている水面にしても砂にしても,基本的な処理は2次元平面上の格子点の制御を基本としている。このため,限られた部分にしか適用できなかったのだが,3次元化すればさまざまな部分に応用がきき,ゲーム全体に適用できるものとなる。
 2次元から3次元に移行するには,制御点を格子から,位置の自由な粒子にしてラグランジュ法で立体的に展開していくことになる。さらに剛体,流体,布など複数の物理モデルを同時に適用し,複雑な状態の物体の挙動も表現できるようになるという。
 最近のGPUはストリームプロセッサが大量に用意されているので,それらを活用することで,複雑な処理も可能になると見ているようだ。
 粒子法を採用する場合,いくつかの問題点があるという。格子だと近傍の点は固定されていたので,力の伝播などを扱いやすかったのだが,位置の自由な粒子では,近くにあるほかの粒子を知ることが難しいということだ。これはBSPなどの空間分割法によってある程度効率化できるのだが,GPUで処理する場合には,1ピクセルの範囲に複数の点を入れることができないので問題になるのだという。プロメック・ソフトウェアでは,RGBAの画素コンポーネント単位で点を記録することでこの問題を回避しているという(特許出願中だそうだ)。

画像集#018のサムネイル/[CEDEC 2007]鉄拳6に採用された国産物理エンジン「OctaveEngine」とは 画像集#019のサムネイル/[CEDEC 2007]鉄拳6に採用された国産物理エンジン「OctaveEngine」とは
画像集#020のサムネイル/[CEDEC 2007]鉄拳6に採用された国産物理エンジン「OctaveEngine」とは 画像集#021のサムネイル/[CEDEC 2007]鉄拳6に採用された国産物理エンジン「OctaveEngine」とは


 これにより,粒子法の完全GPU処理が可能になり,次世代国産物理エンジンの基本部分が確立されている。次世代版の技術デモでは,液体と剛体の混在したシーンでの相互作用などが示されていた。ムービーを見れば,単なる水面ではなく,水としてさまざまな使い方ができそうな液体の様子が確認できるだろう。

 →次世代版のデモ映像 (36秒:3.45MB,MPEG-1)


 現状のOctaveEngineは,Havokのようなゲーム全体に関わる物理エンジンではなく,特定部分の物理的表現に留まっているが,今後はさまざまな部分にも適用できるものとなるだろう。
 プロメック・ソフトウェアは,物理エンジンはあくまで道具にすぎないので,優れたゲームに組み込んで活用してほしいと語っていた。国産物理エンジンの今後に期待したいところだ。
  • この記事のURL:
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
企画記事
スペシャルコンテンツ
注目記事ランキング
集計:11月22日〜11月23日