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

3Dゲームファンのための「DeusEx 2」エンジン講座
ステンシルシャドウボリューム技法によるリアルな影生成に注目



 久々となる3Dゲームファンのための3D講座では、Warren Spector率いる米国のデベロッパーIon Stormが発売した「Deus Ex:Invisible War」(以下、前作と混同しないように「Deus Ex 2」と呼ぶ)のグラフィックス表現にスポットをあててみたい。

取材に協力して頂いたIon Storm「Deus Ex 2」リードデザイナーのHarvey Smith氏
 「Deus Ex 2」のゲームエンジンは、意外なことに「Deus Ex」と同じ、今やクラシックエンジンといってもいい初代「Unreal」エンジンがベースとなっている。とはいえ、Unreal1エンジンがそのまま使われているのではなく、大規模なチューニングが施されており、特にレンダリングエンジン部分に「Unreal」エンジンのコードはほとんど残っていないと言われている。

 3Dグラフィックスエンジン部分は、ほぼ完全にIon Stormオリジナルな物に差し替わっており、ベースが「Unreal」エンジンなだけで、実質的に「Deus Ex 2」エンジンと呼んでも差し支えない。

 それでもなぜ「Unreal」エンジンベースかというと、「3Dゲーム制作に用いる各種ツール類が「Unreal」エンジンフォーマット向けに開発されているため。ION STORM内製の「Unreal」エンジン向けの過去資産(各種オブジェクトデータ、支援プログラム)を継承できるため。また、エンジンそのものをスケーラブルに改良、改造が出来るため」(ION STORM/リードデザイナHarvey Smith氏)だからだそうだ。


■ 物理エンジンにHavokをコアにしたカスタムエンジンを採用

「Deus Ex 2」エンジンは、2004年内発売予定の「Thief 3」にも活用されている
落ちているボールなどのアイテムは投げたりすることができ、空き缶などに当てれば大きな音が出る。敵もその音に反応する
 最近の3Dゲームエンジンを語る上で避けることのできない物理エンジン。「Deus Ex 2」エンジンでは、定番のHavok製エンジンを採用している。

 ゲーム中に存在するオブジェクトは、一部の例外を除いては基本的に物理パラメータが設定されており、ゲーム世界内で相互に干渉する物理挙動を行なうようになっている。落ちているアイテムに銃弾を当てれば吹っ飛んでその他のオブジェクトに連鎖衝突するし、死体や小道具オブジェクトを別のキャラクタにぶつけたりといった芸当までできる。

 「Deus Ex 2」のゲームデザイン上、物理エンジンがそのゲーム性の本質的な部分にまで関与するところまではいっていないのだが、DeusEx2のゲーム世界に「リアル」な味付けをすることには十分威力を発揮している。

 Smith氏によれば、PC版とXbox版のゲームデザインは共通だが、グラフィックスに関しては先行して開発が進められたPC版ベースに制作が行なわれたとのこと。テクスチャ解像度、3Dキャラクタのディテール等は、1,024×768ドット解像度でプレイすることを前提に制作され、Xbox版はこのPC版素材をテレビ解像度向けにコンバートする形で開発された。

 そして、「Deus Ex 2」の3Dグラフィックスの開発は、開発初期段階からNVIDIAの全面的な協力のもとに進められたそうだ。そんなわけで、「Deus Ex 2」のグラフィックス表現のいくつかは、NVIDIAから提供されたシェーダによって実現されている。

 とはいえ、筆者の環境で確認した限りでは、同一クオリティのビジュアルで実効パフォーマンスが高かったのはGeForce FX 5950 UltraよりもRadeon 9800 PROの方だった。なんとも皮肉な話だが、厳然たる事実なのでこれは仕方がない(グラフィックオプションは同一の設定。同一シーンのFRAPSログでフレームレートを確認)。

死体の物理挙動は、最近では当たり前のように活用されているRagdoll物理に従う


■ 「Deus Ex 2」の影生成技法は「DOOM III」と同じステンシルシャドウボリューム技法

足元灯の光が、2つの洗面台の影を壁から天井に浮かび上がらせる。何気ないシーンだが、芸術的に映る
懐中電灯で宇宙人グレイを照らしてみる。天井の電灯からの光によって出来る影が床下に、懐中電灯からの光で出来る影は奥の壁に投射される。「Deus Ex 2」では影品質最高設定時、シーン内の全ての光源からの光で影が構成される
 ここからは「Deus Ex 2」のグラフィックスについて見ていくことにする。

 多くの3Dゲームグラフィックスは、今なお光源からの光が3Dオブジェクトの面に反射してどのくらい視点に届くかだけのシンプルな陰影演算だけで描画されている。逆に言うと、光源からの光が、その面に当たる前に第三者に遮蔽されているかもしれないという可能性をすっぱり排除しているわけだ。これは3Dゲームグラフィックスにそこまで必要ないという解釈と、グラフィックスプロセッサ(GPU)にそこまでやらせる演算パワーの余裕がなかったなどの事情による。

 影の存在はそのシーンのリアリティに影響するのはもちろん、そのシーンに配置される大道具、小道具オブジェクトやキャラクタの視覚的な意味における存在感を左右する重大なフィーチャーであり、最近の3Dゲームグラフィックス表現ではだんだんと重視されるようになってきている。

 現時点での3Dゲームグラフィックスにおいて、いくつかの影生成技法が実用化されているが、「Deus Ex 2」が採用するのは「Doom III」などと同じ「ステンシルシャドウボリューム技法」である。

 この技法を概念的に解説すると、光源から見て、オブジェクトの輪郭部分を引き延ばしてできる影領域(シャドウボリューム)を、そのシーンの深度情報(Zバッファ情報)と比較しながらステンシルバッファにレンダリングし、最終工程でステンシルバッファの内容を参照して、影になるべき画面箇所に影ポリゴンを描画していく。

 古典的なアイディアで、互換性も高い手法ではあるが、膨大なジオメトリ演算が発生するために、GPU(ビデオカード)側にかなりの負荷がかかる。しかし、足元に適当な簡易的な影を置く手法とは違い、この手法ではシーン内の複雑な遮蔽関係を考慮した影が生成されるので、得られるビジュアルクオリティはその負荷に見合ったものになる。自分の影が自分自身に落ちるセルフシャドウ表現や、オブジェクト同士が影を落とし合う相互投射影の表現も、この手法では自発的に実現されるのだ。

 「Deus Ex 2」では、この影生成のシャドウボリューム生成にプログラマブル頂点シェーダを活用しており、「Deus Ex 2」の「Shadow Quality(影品質)」オプションを最高位設定にして快適にプレイするためには、ATI系ならばRadeon 9700以上、NVIDIA系ならばGeForce FX 5700以上などのジオメトリ性能の高いGPUが欲しいところだ。

 なお、ゲームオプション側で影クオリティを下げていくと、GPUへの負荷が軽くなりパフォーマンスは向上するが、影生成の対象となるオブジェクトの数が減り、シーン内に描かれる影が少なくなってビジュアルはかなり寂しいものになる。

同一シーンで影品質を最高(左)に設定した場合と最低(右)にした場合。ここまで見た目の印象が違う。どちらが「リアルか」は一目瞭然だ

持ち上げた手、胸の影などが、セルフシャドウとして自身の体に投射されている。影品質を下げるとそうした影表現が一切なくなり、光の存在感の乏しいビジュアルになってしまう


■ さまざまなテクスチャをバンプマッピングで表現

石柱の細かい凹凸、そして壁のレリーフはすべてバンプマッピングで表現されている。これらは法線マップのお手本的な活用形だ
「Deus Ex 2」では、洋服のシワの陰影はテクスチャの描き込みではなく法線マップによって表現されている。周囲の光源からの影響をリアルタイムに反映するため、非常にリアルに見える
 「Deus Ex 2」のグラフィックスのもうひとつの見どころは、法線マップを組み合わせたテクスチャ表現だ。こうした表現は、最近の3Dゲームでは採用例も増えてきており、最近の有名タイトルでは「トゥームレイダー 美しき逃亡者」がこの表現を積極的に使っていた。

 「法線マップ」というとなにやら難しく思えてしまうかもしれないが、これはバンプマッピングのこと。ポリゴンで表現するにはコストに見合わない微細な凹凸を、凹凸があるかのように陰影処理を行なうことでそれらしく見せるテクノロジーだ。

 立体的な形は通常ポリゴンで表現される。そして、描画時の陰影処理は、基本的な考え方として、光源ベクトル、視線ベクトル、そしてその立体を構成する各面の向き、すなわち法線ベクトルの3つの情報を元に計算される。

 その表現する立体形状が小さくて微細な場合は、観測者(ゲームの場合はプレーヤー)から「立体として見える」機会が少ないわけで、大胆な言い方をすれば「立体としての情報をなくしても問題なし」ということになる。

 立体としての情報をなくせばGPUにかかけるジオメトリ演算負荷は大幅に軽減できるのは言うまでもない。また、立体としての情報はなくなっても、その立体を構成するポリゴンの面の向きの情報さえあれば、「視点から立体に見える」ような陰影演算は可能。これがバンプマッピングの基本概念だ。

 バンプマッピングを、その筋の世界で「法線マッピング」と呼ぶことが多いのは「法線ベクトルをテクスチャマッピングしたもの」を陰影処理に用いるからだ。一口にバンプマッピングというが、現在の3Dゲームグラフィックスでは、GPUに搭載されている固定機能のバンプマッピング機能を活用する機会は少なくなっている。その実現にはプログラマブルシェーダが活用されることが多いのだ。

 というのは、シェーダプログラムとしてバンプマッピングを実装した方が汎用性が高い上に、その3Dゲームエンジンとの密接な関わり合いを持った表現ができるからだ。「Deus Ex 2」もご多分に漏れずそうした実装方法を採用しており、この表現を楽しむにはプログラマブルシェーダアーキテクチャに対応したGPUが不可欠になってくる。

 そしてバンプマッピングは法線マップと画像テクスチャの双方を用意するのが一般的。つまり、バンプマッピングは通常のテクスチャ表現の二倍のビデオメモリを必要とする3D表現と言えるわけだ。「Deus Ex 2」では、ゲーム中のあらゆるシーンにおいて、バンプマッピングを当たり前のように使用しており、これらのビジュアル表現を全て楽しむためにはビデオメモリが最低でも128MB必要になる。

 128MBビデオカードが安くなってきた→ビデオメモリを多めに活用する表現手段が3Dゲームに積極的に取り入れられる、という感じのスパイラル効果は今後より一層強まっていくと考えられ、この「Deus Ex 2」に見られるような「バンプマッピング当たり前」という流れは今後多くの3Dゲームへ波及する見込みだ。この連載でもたびたび繰り返し言っているが3Dゲームファンにとっては「ビデオメモリ256MBを有効活用しうる」時代に突入しつつあるのだ。

 さて「Deus Ex 2」では、このプログラマブルシェーダベースのバンプマッピング表現を「煉瓦の壁」の凹凸といった、模範的な活用以外に、

・配管の錆や汚れ
・キャラクタの衣服のシワ
・キャラクタの顔面の目鼻立ちの凹凸やシワ
・銃器や装甲のディテール表現

などに活用している。

 「Deus Ex 2」の3Dモデル表現が、「紙切れの繋ぎ合わせ」のように見えないのはこのビジュアル表現を贅沢に活用しているためだ。「Deus Ex 2」プレイ中は、テクスチャの描き込みによるものだけではない、柔らかい丸みのあるオブジェクト表現に注目してみてほしい。

こうした兵士の鎧などの凹凸も法線マップによるものだ。パッと見では非常にリアルに見える 回転ファン付き照明。回転するファンの影が照明からのスポットライトと共に階段へ投射されているが、この影は投射テクスチャマッピングによるライトマップによる表現。ステンシルシャドウボリューム技法の影と併用することでリアリティ溢れる陰影の世界が表現されている


眉間の窪みやシワ、アゴの出っ張りに鼻の起伏などの微細な凹凸を法線マップで表現している。鼻のセルフシャドウ(キャストシャドウ)表現にも注目 唇の出っ張り感、や鼻の穴も法線マップによる表現。フードのキャストシャドウも見逃せない



■ ハイダイナミックレンジレンダリング表現

太陽のような強光度なものを見たとき、こうしたHDR表現は特に威力を発揮し、逆光効果の強まった印象深いビジュアルを作り出してくれる
 現実世界に存在する光(色)は、ディスプレイ装置で表現できる範囲を遙かに超えている。現実世界における人間の視覚能力にも限界があって、眩しいときには瞳を絞って網膜に到達する光の量を調節している。それでも強い光を見たときには、その光が眼球内の水晶体で乱反射したり、受光細胞が受ける情報が飽和気味になったりして、一種独特の視覚を見ることになる。

 情景を見るのは人間の目であり、「映像のリアリティ」というものは、そうした状況までを再現することで生まれてくるのだ。3Dグラフィックスの世界でもこのアプローチに対する研究が盛んであり、この研究成果が3Dゲームグラフィックスにも取り入れられつつある。

 ディスプレイ表現色に限定されずに、そのままではディスプレイに表示できなくてもいいから現実世界に則した情景をレンダリングし、最終的にそれをディスプレイに見える(意味的には人間がその情景を見ているように)変換する…このようなアプローチで描画する3Dグラフィックス技術をハイダイナミックレンジ(HDR)レンダリングという。

 といっても、現在の最新のGPUを持ってしても、パフォーマンス面で3Dゲームにこの概念を実装するのはまだ難しく、「最先端グラフィックス技術を活用した」という触れ込みがキャッチーな「Half-Life 2」においても、HDRレンダリングに関しては「それらしく画面を作り込んでいる」というレベルに過ぎない。

 「Deus Ex 2」においても疑似HDRレンダリング表現が導入されており、これがVIDEOオプションで言うところの「Bloom」オプションとして提供されている。「Deus Ex 2」における疑似HDRレンダリング表現は、現在採用例が増えつつある手法である「プログラマブルピクセルシェーダを活用したポストエフェクト処理」によるものだ。

 アイディア自体を簡単に解説するとこうだ。シーンをレンダリングする際に、光の強度情報を各ピクセルに紛れ込ませ(一般的にはαチャネルを使用。余計な小細工をせずに浮動小数点実数バッファを使うのが本当の意味でのHDR)、最終的にその映像中の明るい箇所に対して「光があふれ出して見えるような画像処理」を適用して出力するという流れになる。

 ペイントソフトなどで画像や写真に味付け加工することがあるが、やっていることはアレと同じ。いわば、レンダリングされた3Dグラフィックスに対して、その中の明るい部分をプログラマブルピクセルシェーダを使って自動加工しているというイメージだ。

 「光があふれ出して見えるような画像処理」とは、3Dゲームグラフィックスエンジンごとに独特な手法が編み出されており、この部分がいわば表現としてのアーティスティックな領域になる。ちなみに、例えば「トゥームレイダー 美しき逃亡者」では、強く光り輝いている部分にだけ十字型の光芒(キラキラ)が現れる処理を適用している。

 なお、「Deus Ex 2」では、強く光っている部分から同心円上に、光がぼやっとにじみ出ているような表現を付加させている。3Dグラフィックス用語ではこうした表現を「Light Blooming」といったりする。だからこの表現の制御項目がVIDEOオプションで「Bloom」という名前になっているのだ。「Deus Ex 2」では、かなり暗めの光からもにじみ出させる処理を適用しているために、比較的広範囲にBloomが発生しており、全体的に柔らかい光に満ちあふれたビジュアルになっている。

 ここで反復して言う必要もないかもしれないが、搭載GPUのプログラマブルピクセルシェーダ性能が高くないと、フレームレートが落ち込みやすい。また、この処理系には、作業領域として複数のフレームバッファが必要になるので、相当量のビデオメモリも要求される。他のオプションの設定関係にも左右されるがGPUコアとしては、この項目を有効にして快適にプレイするためには、最低でもATI系でRadeon 9500以上、NVIDIA系でGeForce FX 5600以上が欲しく、ビデオメモリは64MBはほしいところだ。

プログラマブルピクセルシェーダによる画像処理系エフェクト「Bloom」。その有り(左)と無し(右)では断然「有り」にした方が柔らかい光に満ちたナチュラルな映像になる

ネオンサインからの光やロボットからのサーチライトもBloomを起こしている映像の方(左)がリアルだ


■ 3Dゲームグラフィックスは「プログラマブルシェーダ必須」時代へ突入する

 ところでVIDEOオプションの「MultiSampling」で設定できるX1~X6などの値は、レンダリング結果に対するアンチエリアス処理の品質を設定するものだ。値が大きいほど効果が高いのだが、実際に「Deus Ex 2」をプレイしてみて「どれを設定しても、ジャギーが消えない」と思った人もいるかもしれない。

 これはバグではなく、現在のGPUによって提供される3Dグラフィックスにおいて、アンチエリアス処理と、プログラマブルピクセルシェーダによるポストエフェクト処理の「Bloom」効果が排他関係にあるからだ。つまりBloomを有効にしているときはMultiSamplingの設定が無視されるのである。

 どうやらアンチエリアス処理を有効にするとHDR表現などのポストエフェクト処理に都合が悪いようで、マイクロソフトの「Halo」、Ubi Softの「Splinter Cell」をはじめ、こうした設計になっている3Dゲームは少なくない。

 「Deus Ex 2」では、「Bloom」項目を有効にした場合、「MultiSampling」をどう設定しても、3Dグラフィックス側にはアンチエリアス処理が適用されないが、オーバーラップされて表示されるインジケーター類の表示はちゃんとアンチエリアス処理が適用される。メインの3Dグラフィックスに効果がほとんど無いので、よほどGPUパフォーマンスに余裕があると判断できる場合以外は、MultiSmaplingの設定は「2X」以下でいいだろう。

400%に拡大。Bloom無し、MultiSamplingなし。ジャギーが目立つ 400%に拡大。Bloom無し、MultiSampling=6X設定。ジャギーがほとんど見えなくなる 400%に拡大。Bloom有り、MultiSampling=6X設定。MultiSampling効果がキャンセルされてジャギーが現れる


 3Dゲームファンの間で物議を醸したのが、「Deus Ex 2」はプログラマブルシェーダ未対応のGPU(ビデオカード)では動作保証しないタイトルとしてリリースされた点だ。未だ3Dゲームファンの間にユーザーが多い、NVIDIA GeForce 2 MXやGeForce 4 MXでの動作無保証が波紋を呼んだのだ。

 大手有力ゲームパブリッシャからリリースされた人気注目タイトルが、こうした思い切った判断をしてきたことにより、この流れに他も追従することだろう。大部遅くなった感はあるが、ついにPC-3Dゲームは本格的にプログラマブルシェーダ必須の時代を迎えようとしているのだ。

 「Deus Ex 2」で採用されている3Dグラフィックス技術自体は、どれも有名な技術でありそれほど独創的で斬新というものはないのだが、現行の3Dゲームグラフィックスに適用できうる最新テクノロジーの多くが詰め込まれていることもあり、2004年これから登場する3Dゲームソフトにおける3Dゲームグラフィックス表現のベンチマーク(新基準)となりそうではある。

 3Dゲームファンとしては2004年を生き抜くためには、まずはこの「Deus Ex 2」はちゃんと動かせる環境を調えたいところだ。

Deus Ex: Invisible War. (C) 2003 Eidos Inc. Developed by Ion Storm. Published by Eidos Inc. Deus Ex: Invisible War、 Ion Storm and the Ion Storm logo are trademarks of Ion Storm. Eidos and the Eidos Inc. logo are trademarks of Eidos Group of companies. All Rights Reserved.Microsoft、 Xbox、 and the Xbox logos are either registered trademarks or trademarks of Microsoft Corporation in the U.S. and/or other countries and are used under license from Microsoft. The ratings icon is a registered trademark of the Interactive Digital Software Association. All rights reserved.

□Eidosのホームページ
http://www.eidos.com/
□「Deus Ex:Invisible War」の公式ページ
http://www.dxinvisiblewar.com/
□関連情報
【2月13日】PCゲームレビュー「Deus Ex:Invisible War」
http://game.watch.impress.co.jp/docs/20040213/deusex2.htm

(2004年3月8日)

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


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

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

Copyright (c) 2003 Impress Corporation All rights reserved.