最新ニュース
【11月30日】
【11月29日】
【11月28日】
【11月27日】
【11月26日】

CESA Developers Conference 2010(CEDEC 2010)レポート

カプコン、PC版「ロスト プラネット 2」のDirectX 11機能を詳説
テッセレーションとDirectComputeの実装技術


8月31日〜9月2日開催

会場:パシフィコ横浜



 8月31日からパシフィコ横浜にて開催されているゲーム開発者向けカンファレンス「CEDEC 2010」。会期1日目のプログラミングトラックでは、株式会社カプコンのプログラマー石田智史と松宮雅俊氏が登壇して「LostPlanet2 DirectX11 Features」と題する講演を行なった。

 この講演で題材となったのは、10月14日に発売が決定したばかりの「ロスト プラネット 2」PC版。本作において実装された最新のDirectX 11技術である、テッセレーションと演算シェーダーによる映像表現の技術的側面が詳しく解説された。




■ 複数のテッセレーションアルゴリズムを取捨選択した「ロスト プラネット 2」

カプコンの石田智史氏
テッセレーションの1手法、プロシージャルなポリゴン分割について

 「ロスト プラネット 2」は、カプコンの最新世代機向け開発フレームワーク「MT-Framework 2.0」をベースとして開発された作品だ。ここ数年のCEDECでは、この「MT-Framework」がらみの講演が毎年行なわれており、多くの聴講者を集める人気セッションのひとつとなっている。

 「ロスト プラネット 2」のPC版ではDirectX 11の新機能であるテッセレーション(ポリゴンの高詳細化技術)と演算シェーダー(GPUを用いた並列演算機能)を駆使した絵作りが行なわれている。いずれも国内のデベロッパーによる実装例はまだ非常に珍しいという機能であるため、特に技術面において興味深い事例だ。

 セッションでは、まずはじめに「MT-Framework」のメインプログラマーである石田氏がテッセレーションについて解説。ポリゴンを分割して高詳細な3Dモデルを実現するという技術を「ロスト プラネット 2」のためにいかにして使いこなしたか、その詳しい技術解説が行なわれた。

 DirectX 11で実現したテッセレーション機能は、3Dポリゴンを任意の方法で分割、変形させ、本来の3Dモデルよりも高詳細な立体形状を表示するという技術。石田氏はまずポリゴンをプロシージャルに分割するための代表的なアルゴリズムとしてPN Triangles(N-Patch)、Phong Tessellation、Approximating Catmull-Clarkの3例を挙げた。

 PN-Trianglesは、座標と法線から制御点を生成してポリゴンをなめらかに分割するアルゴリズム。従来の非DirectX 11ハードウェアであるRadeon 8000シリーズなどでハードウェア実装されていた方式だ。もうひとつのPhong Tessellationは、座標、法線、重心座標を元に直接補完する、シンプルで高速な方式。最後のApproximating Catmull-Clarkは各種の3Dコンテンツ制作ツールがサポートする高品位な方法で、計算負荷が高いという。


ポリゴン分割。3つの代表的なアルゴリズムの中から、最もバランスの取れたものを選択した

そのまま適用すると各所にスキマが生じてしまう
スキマ対策のためにエッジ部分に特殊ルールを適用するなど、様々な工夫を適用

 石田氏はこれらのアルゴリズムの中から、分割具合を制御しやすく見た目も高品質にできるPN-Trianglesを「ロスト プラネット 2」で採用したことを明かした。しかし、そのまま実装したのでは曲面と平面が接触するような位置で「クラック」と呼ばれるスキマが生じたり、本来直線的である場所まで丸くなってしまう、モデルが膨らんでしまうなどの問題があることも指摘。このままでは使えない。

 クラック現象への対策としては、ポリゴン分割の基準となる法線にエッジが出ないよう「丸める」方法、クラックが発生するエッジ部分にフラグを設定して利用する法線を決定する方法が紹介され、これらのテクニックによりスキマのないなめらかな表面が生成できることが示された。また、直線的なままにしておきたい部位のために特別なパラメーターを用意するなど、グラフィックスデザインを損なわないための調整機能も披露。

 「ロスト プラネット 2」で用いられたもうひとつのテッセレーション方式は、ディスプレースメントマッピングだ。この方式ではハイポリゴンで作成した3Dモデルから生成するディスプレースメントマップを用い、本来の形状を忠実に再現できる。ところが石田氏によれば「『ロストプラネット2』には正確なハイポリゴンモデルが存在しない」ため、PC版のために改めてモデルを作り直したという。

 そのほかテッセレーションにまつわる様々な問題点や、最適化の手法に触れた石田氏は、ここまで解説しておいて「『ロストプラネット2』のモデルは元々高詳細なので、実際のところテッセレーションの効果がわかりにくい」とバッサリ。

 確かに、巨大ボスキャラクターを除けば、テッセレーションの効果がよくわかるほどキャラクターが画面いっぱいに表示されることは稀だ。石田氏は「将来的にはテッセレーションを前提としたコンテンツ制作が重要になるだろう」と、まだ見ぬ次世代機に期待を寄せつつ解説を終えた。


次から次に出てくる問題に知恵を絞って対応し、ようやく実用化にこぎつけたポリゴン分割アルゴリズム。テッセレーションの奥は深い
ハイポリゴンモデルをベースとするディスプレースメントマッピングだが、「ロスト プラネット 2」では元々モデルが十分に高詳細であるため「効果が薄い」と石田氏。より効果的に活用するためには、開発当初からテッセレーションを前提とする必要を感じているようだ
開発環境のデモでは、解説中で紹介されたほとんどのアルゴリズムを実際に切り替えつつ、その効果を表示していく様子が示された。理論だけでなく、あくまで実際に確かめられるようになっているのが凄い



■ 水面や巨大ボスの皮膚表現のために使われた演算シェーダー

演算シェーダーの活用方法について語った松宮雅俊氏
細かな波動シミュレーションにWave Particleという手法を採用

 続いて登壇したプログラマーの松宮氏は、「ロスト プラネット 2」PC版に実装されたもうひとつのDirectX 11機能、演算シェーダー(ComputeShader)について詳細な技術解説を行なった。

 演算シェーダーが活用されている表現のひとつは、水面が波打つ動きだ。DirectX 9バージョンでは平らな水面にテクスチャーのみで水の運動を表現しているが、DirectX 11版では実際の凹凸を伴ってリアルに波打つようになっている。

 これを実現するために松宮氏が「ロスト プラネット 2」で用いたのは、Wave Particlesと呼ばれる、近似的に波動を計算するためのアルゴリズム。波を直進する粒子の集合としてシミュレーションし、反射や合成を表現するものだ。

 本来のWave Particles手法では波を表す粒子が分割しながら増えていくことになっているが、そのままではメモリーの消費量が予測できなくなってしまうため、「ロスト プラネット 2」で採用されたのは粒子が分割されない簡易版。これをもとにハイトフィールドを生成して、水面のポリゴンにディスプレースメントマッピングを施すというのが基本的な仕組みだ。


DirectX 11バージョンにおける水面表現。大量の粒子シミュレーションを演算シェーダーで高速に行なうことでリアルな波動を実現している

ソフトボディの概念

 これをDirectX 11の演算シェーダーで実装したことで、「ロスト プラネット 2」の水面は実物さながらに波打つようになった。さらに、もうひとつの演算シェーダーの使い道として、巨大ボスの表皮に用いられたソフトボディという表現手法も紹介された。

 これは、クリーチャーの体表を柔らかく見せるためのテクニック。体表のポリゴンを骨格につながる一種の「バネ」として扱い、振動をシミュレーションしつつテッセレーションを適用する。これにより巨大ボスの体表の一部が、地面に足を付く度などにブルンブルンと生々しく振動する様子が描かれる。このように表現される体表の「柔らかさ」は、専用のテクスチャーによってアーティストが調整できるようになっていることもポイントだ。

 総評として松宮氏は、適切なアルゴリズムを選択しさえすれば、演算シェーダーは非常に使えるものであると評価。良い点として記述が容易であることや、頂点バッファを直接制御できることなど描画パイプラインとの連動が可能であることを挙げている。将来さらに活用が進んでいけば、これまでにない映像効果が実現するかもしれない。そんな予感を感じさせる技術だ。

 本セッションを通じて、DirectX 11の機能がもつ奥の深さが印象づけられた。ただ使えばいいというものではなく、適切なアルゴリズム、発想、ノウハウを組み合わせることで初めて効果的に新しい絵作りが可能になる枠組み。10月に発売予定の「ロスト プラネット 2」は、最新の技術デモとしても面白い存在になりそうだ。



骨格から皮膚表面まで、3種類のバネ運動を組み合わせることでブヨブヨ感をシミュレート
表皮のシミュレーションはジオメトリのバッチ(集合)単位で行なわれ、並列処理により高速に演算できるようになっているという

(2010年 8月 31日)

[Reported by 佐藤カフジ ]