3Dゲームファンのための最新3Dゲームグラフィックス講座 |
■ 光と影のエクスタシー
一般的な3Dゲームグラフィックスでは「環境光」と呼ばれるその空間全体に満ちた光を設定して、シーン全体のトーンを演出する。「Splinter Cell」では環境光は控えめかつ脇役的に設定されており、各3Dオブジェクトを照らす光は、その3D空間内に置かれた“光るもの”=“光源体”から発せられる。つまり一部の例外を除き、ゲーム内に存在しているほとんどの光源が“固定ではなく”、ダイナミックな光源として設定されているのである。まだピンと来ない読者も多いと思うのでもうちょっと詳しく解説しよう。
現実世界では真っ暗な部屋でも電気を付ければ部屋は明るくなる。そして電気を消せば暗くなる。当たり前のことだ。「Splinter Cell」ではこの基本原則が現実世界に極めて近い形で実現されているのである。
一般的な3Dゲームではその場に光源がなくても環境光によって陰影処理がなされ、ちゃんと3Dオブジェクトが描かれる。しかしその世界に均一に満ちた実態のない光から照らされているので、そのビジュアルはいかにもCGっぽくなってしまう。
「Splinter Cell」の世界は、現実世界同様に主たる光源はそこに存在する電気スタンドや蛍光灯、テレビからの光、窓から差し込む太陽光などで、スイッチを切ったり、これらを破壊したり、遮ったりすればその世界は“正しく”暗くなるのである。
たとえば、「Splinter Cell」でこんなシーンがあった。回廊の天井に連なって設置されている蛍光灯。プレーヤーキャラの立ち位置に近い蛍光灯を銃で破壊していくと、その壊された蛍光灯の個数に比例して部屋は暗くなる。プレーヤーの立ち位置に近い方の蛍光灯を壊したのでプレーヤーの立ち位置側の方が暗く、蛍光灯が健在な側は明るい。「SplinterCell」ではこのような表現をごく自然にこなす。環境光をメインにしている3Dゲームではこうはならない。
「ゲームでそこまでする必要があるのか」という問いに対しては、一般論としては「必要ないかも」と答えざるを得ない。なぜならば光源の数が増えれば増えるほど、各頂点(パー・ピクセル・ライティングの場合は各ピクセル)に対する光源演算の回数が増えるので処理としても重くなるし、複数光源環境をあらかじめ事前処理したライトマップを用いれば環境光だけでも軽い処理系でそれなりのリアリティを発揮できるからだ。
しかし、「Splinter Cell」では、この「光と影の変化」の演出をゲーム性に活かしているので「必要不可欠な要素」なのである。「Splinter Cell」の詳しいゲーム内容については別のECTSレポートを参照して欲しいが、簡単に紹介するとこのゲームは3人称視点の3Dアクションアドベンチャーで、主人公は国家安全保障局所属のエージェント。潜入捜査を生業としている。
こうしたゲームコンセプトであるため、光の下にいることは「敵に見えている」ことを意味し、死に直結する。逆の立場では、光の下にいる敵は「プレーヤーから見える」ことを意味し、その後の自分の行動方針を左右する。敵に対して優位に立つためには「敵を光の下にさらす」ことが重要で「自分は光の下にいない」ことを心がけることが重要になってくるのだ。光と影を味方に付けること……これが「Splinter Cell」というゲームのキーポイントとなっているため、「固定的ではない動的な光と影の処理」は必然性を持って実装されているのだ。
光と影の存在がゲーム性に結びついている | 上の蛍光灯も実際に光源体として配置されている。“正しく”線光源となっているかどうかはわからなかった(電球は点光源だが、蛍光灯は線(面)光源) |
■ 影の中に見えるリアリティ
現実世界ではほとんど存在を意識しない「影」。ゲーム世界でも影はおろそかにされることが多く、現存するほとんどの3Dゲームは「影を地面に置く」ことだけで完結している。それこそ「バーチャファイター4」や「DEAD OR ALIVE 3」に代表される最新3D格闘ゲームのものでも影は地面に置かれているのみで、自分自身の腕の影は胸に投射されないし、敵と密着した状態でも自分の影が敵に投射されず、敵をすり抜けて地面に投射されてしまっている。
「Splinter Cell」では、動的に設定された光が重要な役割を果たしていることもあり、あらかじめ光と影の分布を事前演算した展開するライトマップを配置すると不自然なビジュアルになってしまう。そのため、ほぼ全ての影をリアルタイム生成している。影生成のこだわり方については、以前紹介したid Software「DOOM III」にまさるとも劣らぬレベル。動的に設定された光源による影生成についてはシャドウマッピング技法を使用して生成する。
シャドウマッピングとは、まず光源を視点にZバッファレンダリングを行なって、影の分布(シャドウマップ)を生成し、視点からレンダリングを行なうフェーズで、このシャドウマップを用いて影領域かどうかを判定しながらレンダリングしていくテクノロジーだ。シャドウマップは光源の数が多くなればなるほどその生成数は増えるし、その生成は毎フレーム単位にリアルタイムに行なわれるため、処理系全体としての負荷はかなり高い。しかし、光源が動いたときにはその光源に照らされた物体の影も正確に表現されるため、リアリティは非常に高い。
たとえば、天井から吊された傘の付いた電球を銃撃すると、振り子のように電球が揺れる。電球は動的な点光源として設定されているため、シャドウマップも摂動することになり、その部屋の影は電球の揺れにシンクロして伸び縮みしながら揺れるのだ。また、こうしたシーン内において生成された全ての影は3Dオブジェクト相互に投射される。
たとえば、揺れる電球によって形を変える椅子の影はプレーヤーキャラクタの体に投射されるし、その椅子の影とプレーヤーキャラクタの合成された形状の影は、床や壁、あるいは別の小道具や大道具オブジェクト、敵キャラに投射される。もちろん大道具オブジェクトの影に身を潜めれば影に沈み込むため敵からは見えないことになる。生成される影の「暗さ」はそのときのシーンの明るさに準拠しているし、また、その影を作り出すオブジェクトの材質も考慮されているのがすごい。
たとえば蛍光灯が多く点いている部屋では影の色は薄く、ビニールのような半透明材質の小道具の影も薄い。複数の点光源によって作り出された複数の影達は、その影同士が重なり合ったところが一層くらい影になっている。
ここまでの影生成が行なえるのはやはりXboxのグラフィックスチップ(GPU)の性能によるところが大きく、残念ながらプレイステーション 2やニンテンドーゲームキューブで現実的な速度でここまでの処理を行なうのは不可能に近い。その意味では「Splinter Cell」のグラフィックスは今度こそ本当に「Xboxエクスクルーシブなもの」といっていい。
しかし、その光と影の表現は完璧かというとそうでもない。挙げれば切りはないのだが、たとえば相互反射(ラジオシティ)が考慮されていないという点がそのひとつ。地球上の部屋で実際にこのゲーム世界ほどドラスティックに明るさと暗さが明確に分かれることはない。このゲームでは部屋の端にしか光がないとき、その周りだけが明るいが、現実世界では光は空気中で拡散反射するし、それに照らされたオブジェクトが二次光源となって結果的には部屋全体として柔らかな光に満ちることになる。このゲームの光と影の表現はいってみれば月面世界に近い感じだ。
また、全てのオブジェクトに対してシャドウマップを適用したレンダリングをしているわけではないようで、時々影が生成されるべき場所に影がなかったりすることもあった。これについて担当者に聞いてみると「『SplinterCell』ではシャドウマッピングだけでなく、クラシックなシャドウボリュームを使ったステンシルシャドウも併用しているため」との返答。そうした“手抜き”はおそらく処理速度的な問題からだと推察されるが、逆に言えば平行して開発されているというPC版では処理限界の敷居値を上に伸ばせられるので、PC版では改善される可能性もある。期待したいところだ。
ブラインドの影がプレーヤーキャラに投射されている表現に注目 | こうした影はシャドウマッピングによるもの |
■ 「SplinterCell」エンジンの元は「Unreal II」エンジン
「SplinterCell」エンジンはゼロから開発されたものではなく、実は「Unreal II」エンジン(新Unrealエンジンの俗称)をベースにUbi Soft独自拡張を行なったものだったりする。Ubi Softが独自拡張したのは、主に光と影の処理系、そして細々とした物理エンジン関係だとのこと。本稿では光と影周りの話が多くなってしまったが、物理エンジン系についても注目すべき点は多い。
まず目立ったところではFabric物理エンジンの実装を挙げられる。「Fabric」=「織物」のことで、場合によってはCloth(布)シミュレーションとも言われる。「Splinter Cell」では壁に貼り付けられたポスターやカーテンなどの挙動制御にこの技術が使われているという。たとえばプレーヤーキャラクタがポスターのそばを走り抜けると、その風でポスターはめくり上がるし、閉められたカーテンに向かって突き進んだ場合は、一般的なゲームであればすり抜けてしまうところを、「Splinter Cell」ではこれを被りながらめくり上がっていくような表現がなされる。
また、液体の簡易シミュレーション、コリジョン(3D当たり判定)エンジンも独自拡張実装されたものだそうだ。たとえばガソリンの入った樽。一般的な3Dゲームでは、これに対して攻撃するとその瞬間に爆発するが、「SplinterCell」では樽に穴が開いて、中のガソリンが勢いよく漏れ床に広がっていく。そしてこれに引火させると、ガソリンが流れ広がった範囲が燃えるのだ。
今回は見られなかったが、水槽を壊して水を床に流れ出させ、そこに電気を流し、複数の敵を感電死させる攻撃演出があり、これを実現させるためにこのエンジンを実装したのだとか。「まずテクノロジーありき」ではなく、「表現したいことを実現するために新技術を開発する」というスタイルなのだ。
リアルな炎の表現に注目 | 後ろから忍び寄るシーン |
■ アイディア優先のプログラマブルシェーダ活用
Xboxのグラフィックスはご存じのようにDirectX 8(Direct3D)ベースであるため、プログラマブルシェーダを活用した特殊陰影処理が可能だ。どんなことに使われているのかを聞いてみたところ、非常にユニークな使い方をしていることが判明した。
ゲーム中、3Dオブジェクトとしての液晶ディスプレイが登場するのだが、この液晶画面表示の表現にプログラマブルシェーダを活用しているのだという。何のことか意味不明かもしれない。しかし、実際にゲーム中に登場する液晶ディスプレイに対して視点を向けたままプレーヤーキャラクタを動かしてみると一目瞭然、思わず笑い出してしまうはずだ。
現実世界で安価な液晶ディスプレイを斜めから見ると、その表示の色調がおかしくなる(一般に白っぽく見える)が、これをプログラマブルシェーダを活用して表現しているのである。これは処理系自体は意外に単純で液晶画面の法線ベクトルと視点ベクトルの位置関係を判定して色情報を変化させているだけ。正面から見たときに色変化はなく、斜めから見たときに色変化が起こるように特別な陰影処理を行なうというイメージだ。
また、「Splinter Cell」では登場3Dオブジェクトのほぼ全てに対しパーツ単位で熱属性が設定されているそうで、サーモスコープ(熱源探知スコープ)を利用したときの視界(あの「暖かければ暖かいほど赤く、冷たければ冷たいほど青く表示される」アクション映画等でもお馴染みのあのビジュアル)表現にプログラマブルシェーダを活用しているという。撃ち殺した敵をサーモグラフィモードで見ると、体温がみるみる下がっていくため、青く表現された冷たい床とどんどん同化していく。特殊物理エンジンの実装同様、これまた「やりたいこと先導の技術活用」としてプログラマブルシェーダが活用されているのだ。
サーモグラフィモードの視界。通常視界から交互にシームレスに移行可能 | 死んだ敵はRAGDOLL(ぬいぐるみ)エンジンによって処理されるので、自然な倒れ方をする | 敵を盾にして……ゲーム展開もアイディア満載 |
■ ゲームエンジンはDirectX 8時代成熟期へ突入
新世代ゲームエンジンはなにも「DOOM III」エンジンや「Unrea lII」エンジンだけではない。ECTS開催国のイギリスはもちろん、北欧、東欧各諸国のゲームスタジオが独自開発した新ゲームエンジンの数々も、DirectX 9を視野に入れた革新的かつ先進的なものばかりだった。ここでは特に目立っていたものをピックアップして簡単に紹介していくことにする。
惑星地球化=テラフォーミングを題材にしたRTS「PERIMETER」。このゲームは地形を泥遊び感覚で盛り上げや掘り下げが可能で、戦闘ユニットの移動や爆撃の影響でもダイナミックかつドラスティックに姿形を変える。その表現が非常に細かくリアルなのだが、このビジュアル生成はゲーム開発元であるロシアのK-D LABが開発したSURMAPエンジンによって行なわれている。SURMAPエンジンの地形表現はボクセルテクノロジーベースで実現されているとのこと。
ボクセルとは3Dオブジェクトを小さな立方体(VOXEL)で表現する技術だ。たとえば2Dグラフィックスは画素(PIXEL)の集まりで構成するわけだが、その要領で3Dモデルを小さな立体体の集合体として表現する……というイメージだ。 なお、ボクセル表現による3Dモデルは頂点数が膨大になるため3Dゲームには向かないとされてきたが、SURMAPエンジンでは、頂点ベースの3Dモデルとボクセルベースの3Dモデルの透過変換の仕組みを実装することで、この問題をクリアしているようだ。
ボクセル技術はボリュームレンダリング技法にも活用されている。CTスキャンの映像の視覚化などがその一例 |
ブース内3台のデモ機、全てが3画面出力という気合いの入りぶり |
今回のECTSにおいて、スウェーデン・ストックホルムのゲームスタジオGRINはMATROXの協力の元にブース出展を行ない、GRIN制作の新作ゲーム「BANDITS-Phoenix Rising」のデモンストレーションを3画面にて行なっていた。
BANDITSはGRIN独自開発のゲームエンジン「GRIN 3D」をベースに開発されており、画面モードアスペクト比に柔軟に対応した画角設定が行なえる特徴を持つ。MATROX Parhelia-512の3画面出力モードは「3つのデスクトップ」として表示を行なうのではなく、「ひとつの大きなデスクトップ」を3画面に分けて出力する手法を取っており、ゲームエンジン側で3画面分の超横長アスペクト比に適合する画角が設定できればどんな3Dゲームでもパノラマ表示で楽しめることになっている。
GRIN 3Dエンジンもこの仕組みに対応しており、Parhelia-512を使っての3画面の他、NVIDIA GeForce系、ATI RADEON系のGPUを使った2画面によるパノラマ表示にも対応する。
武装バギーによる3Dシューティング「BANDITS-Phoenix Rising」 |
ポーランド最大手のパブリッシャ&デベロッパ企業Techland SoftwareはハードコアなSF世界観を持ったFPSアドベンチャー「CHROME」を開発中だ。このゲームは既に開発に2年が経過しており、現在も2002年内の発売を目標に開発が進められている。このゲーム用のエンジンがCHROMEエンジンだ。
CHROMEエンジンは万能エンジンを目標に開発されたとのことで、動的LOD対応型の地形表示エンジン、コリジョン(3D当たり判定)エンジン、各種物理エンジンなどを含んだ統合型3Dエンジンだという。「万能型」とわざわざ呼んでいるのは「FPSだけでなく他のゲームにも使えるように」という意味合いが込められているからで、実際、あるバージョンのCHROMEエンジンはTechland Softwareの既発売の他のゲーム制作に利用されている。
具体的にはコミカルな動物キャラクタを利用した子供向け3Dカーレースゲーム「PetRacer」、3Dサッカーゲーム「PetSoccer」などがそうだとのこと。現在も同社が開発中の正当派ラリーゲーム「Xpand Rally」やオフロードバイクレーシングゲーム「SPEEDWAY GRANDPRIX」なども、CHROMEエンジンベースだという。
なお、Techland SoftwareはCHROMEエンジンの他社へのライセンス事業も開始したそうで、ライセンス料は「Quake III」エンジン、「Unreal」エンジン、「Lithtech」エンジンなどの有名エンジンに比べてだいぶ安価に設定している。
現在のCHROMEエンジンはOpenGLベースで制作されており、今後はXboxへの対応を視野に入れ、DirectX 8/9ベースへの移植作業も進めているとのこと。
□ECTSのホームページ
http://www.ects.com/
□「K-D LAB」のホームページ
http://www.kdlab.com/eng/
□「Techland Software」のホームページ
http://www.techland.pl/plIndex.php
(2002年9月1日)
[Reported by トライゼット 西川善司]
|