西川善司の3Dゲームファンのための「ソニック・ワールド・アドベンチャー」グラフィックス講座
3Dゲームグラフィックスのトレンドはリアルタイム・グローバル・イルミネーションへ
「ソニック・ワールド・アドベンチャー」と「ヘッジホッグエンジン」のロゴ |
今世代機の3Dゲームグラフィックスに対し、ユーザーが期待しているのは、レンダリング解像度やテクスチャ解像度の向上だけではなく、ハードウェア性能の向上があったからこそなしえた新しいビジュアル体験だ。この「今世代機ならではの新しいビジュアル体験」を現実的な形で実装したタイトルが今回取り上げるプレイステーション 3/Xbox 360用アクションゲーム「ソニック・ワールド・アドベンチャー」(以下、「ソニックWA」)だ。
「ソニック」シリーズといえば、これまではゲームコンテンツ側の方に興味が集中するタイトルであったが、今作では、今後の今世代機3Dゲームグラフィックスにおいて新スタンダードとなり得そうな技術「リアルタイム・グローバル・イルミネーション」(以下、リアルタイムGI)技術が盛り込まれたことで高い関心を集めている。
今回は、このリアルタイムGIにスポットをあてつつ、ソニックWAのグラフィックスを見ていくことにしたい。
■ 「ソニック・ワールド・アドベンチャー」のグラフィックスペック~ソニックもいまや18,000ポリゴンキャラに!
今回のお相手は株式会社セガ 第二CS研究開発部 第一プログラムセクション ゲームディレクター兼テクニカルディレクターの橋本善久氏、同プログラマーの岩崎浩氏(崎の字は正確には旧字体)と荻野晃史氏のお三方だ。なお、橋本氏は2008年に開催されたゲーム開発者会議のCEDEC2008および2009年に米国で開催されたGDC2009で「ソニックWA」に関してのセッションで登壇された人物でもある。
まずは「ソニックWA」の3Dゲームグラフィックスの基本情報を整理しておきたい。主人公ソニックの今作でのポリゴン数はゲーム中モデルで約18,000ポリゴン、カットシーンでは約26,000ポリゴンとなっている。また、代表的なNPCキャラだと、村人でおよそ4,000ポリゴン程度、群集シーンの村人で1,800ポリゴン程度、人型敵ロボットで5,000ポリゴン程度だという。1991年に16ビットゲーム機のスプライト・キャラでデビューしたハリネズミのソニックも、いまや18,000ポリゴンのキャラになったというのは古参ゲーマー達にとっては感慨深い情報だ。
【ソニックのクローズアップショットとそのワイヤーフレームショット】 | |
---|---|
【敵キャラクターのクローズアップショットとそのワイヤーフレームショット】 | |
---|---|
1ステージを構成する建物などの背景物の総ポリゴンは、ステージ構成にも依存するとのことだが、大体400万~500万くらい。1フレームあたりだと、背景だけで10万~13万ポリゴン数くらいだとのこと。
フレームレートは設計上は毎秒30コマ(30fps)としたそうだが、Xbox 360版と、PS3版とでは諸事情により微妙に実装が変えられている。Xbox 360版では多くのケースで30fpsをオーバーするため30fps固定に設定したが、PS3版ではフレームレートの上下幅が大きかったために30fps固定とはせずに可変フレームレートの実装にしたという。
【実際のプレイシーンとワイヤーフレームショット】 | |
---|---|
株式会社セガ、第二CS研究開発部、第一プログラムセクション、ゲームディレクターの橋本善久氏 |
株式会社セガ 第二CS研究開発部 第一プログラムセクション プログラマー 荻野晃史氏 |
レンダリング解像度はPS3版、Xbox 360版共に880×720ドットを基本とし、表示時にスケーリングで拡大する方式を採用している。また、Xbox 360版、PS3版共にアンチエイリアスはx2モードのMSAA(マルチ・サンプル・アンチエイリアシング)を適用している。視点からの距離に応じて表示オブジェクトのポリゴン数を増減させるLOD(Level Of Detail)システムについてはどういう実装がなされたのだろうか。
橋本氏「LODについては、ほとんど何もやっていません。というのも、『ソニックWA』の場合、ジオメトリ面での負荷がほとんど問題にならなかったんです。LOD用に多ポリゴン、低ポリゴンモデルを用意するといった準備だけはしていたんですが、費用対効果を考えた場合、不要だろうということで実装は見送りました。LOD的なもので「ソニックWA」に実装したのはテクスチャのミップマップくらいですかね」
荻野氏「PS3版もPlaystation Edgeを使ったのでジオメリパフォーマンスに不安はありませんでした。PS3の場合はメインメモリ容量がきついので、LODの導入によって低ポリゴンモデルがメモリを占有することも考えられましたから、結果的に導入しないで済んでよかったです(笑)」
今世代機になって、ここ近年のタイトルであまりポリゴン数の限界を感じたり、ジオメトリ負荷がきついといった話は聞かれなくなってきた。とはいえ、最近、流行となりつつある無数の雑魚キャラを同一シーン内に登場させるような「真・三國無双」、「デッドライジング」的なタイトルであれば、今でもやはりLODシステムの導入は必要となる。「ソニックWA」のような同時登場キャラクター数がそれほど多くならないと見積もれるタイトルの場合はLODシステムを導入しないケースも多くなってきているようだ。
物理シミュレーションについては「HAVOK5」を採用している。HAVOK Physicsは主に動的キャラクタ同士の衝突検出や、破壊したときの破片の散乱などの挙動制御に利用、そしてキャラクタと背景のインタラクションの際の姿勢制御のIK(Inverse Kinematics:逆方向運動学)処理にはHAVOK Animationを利用している。主にイベントシーンなどの演技ではモーションキャプチャーも利用している。しつこいようだが、スプライトキャラだったソニックも今やIKやモーションキャプチャが利用される時代なのだ。
なお、今回の「ソニックWA」のために開発されたエンジンには「ヘッジホッグエンジン」(Hedgehog Engine)という名前が付けられており、今後もPS3用、Xbox 360用のソニックシリーズ向けの標準的な開発ライブラリとして使っていく予定だという。
エンジンの開発は2005年中旬から、ゲームコンテンツ側の開発は2006年末くらいからスタート。エンジン開発は5人程度の小規模チームでスタートしたが、開発最盛期にはプログラムチームが約40人、デザイナ/アーティストが約80人、その他のプランナー、ディレクター、プロデューサー、サウンドスタッフなどを含めると総計で百数十人くらいにまでなったとのこと。そういう意味では、「ソニックWA」は、かなりのビッグプロジェクトだったようだ。
【HAVOK5】 | ||
---|---|---|
HAVOK Physicsは主に動的キャラクタ同士の衝突検出や、破壊したときの破片の散乱などの挙動制御に利用 | ||
キャラクタと背景のインタラクションの際の姿勢制御のIK処理にはHAVOK Animationを利用 |
■ ピクサーCG映画のアンビエント感をゲームグラフィックスに
「3Dゲームグラフィックスでピクサータッチを目指す」という発言は時々聞かれることがある。VALVEの「TEAM FORTRESS2」のビジュアルもピクサータッチを再現するために独特なライティング技法を考案して導入した |
「ソニックWA」のビジュアルは、現実世界を模倣するような「フォトリアル系」のビジュアルではない。しかし、純粋なカートゥーン系というわけでもなく、映像に独特のアンビエント感の漂う、実にユニークなビジュアルとなっている。
種明かしから先にすれば、これが「ソニックWA」で採用された「リアルタイムGI」の効果と言うことになる。そもそも、このリアルタイムGI技術を導入しようとしたきっかけはなんだったのだろうか。
橋本氏「今世代のゲームグラフィックスはとてもシェーダーリッチにはなったと思いますが、平行光源(太陽光などのシーン全体に降り注ぐ光源)、点光源(局所的に全方位を照らす光源)が直接当たらない箇所の陰影が省略されてしまっていることが、“物足りなさ”となってるのでないか、と思い始めたことがきっかけですね。そして、その後、長編CG映画制作スタジオとして著名なピクサーの作品群の雰囲気を再現することを目標にリアルタイムGIの開発に乗りだしたんです」
現実世界では光は空気中で散乱して広がるし、直接光の当たったオブジェクト自身がその光を反射させて他者を照らす新たな2次光源となったりする。現実世界では、こうした複雑な反射と拡散が同時多発的に巻き起こっており、これが本当の意味での環境光(Ambient Light)だ。
これをコンピューターグラフィックスでまともにやろうとするのが「ラジオシティ」(Radiosity)や「レイトレーシング」(Ray Tracing)の考え方だ。ラジオシティやレイトレーシングを今世代機のゲームグラフィックスに実装するのはGPUの性能がまだ足りない。従って、これらを擬似的に実現する方法を考案し、さらにリアルタイムに実装することまでを考えなければならない。
開発チームは「リアルタイムゲームで使えるGI」を実現するために、リアルタイムGIを2つのテクニックに分解して実装する方策を採った。1つは壊れたり移動することのない背景物などの静的オブジェクトへのGIだ。そして2つ目は移動したり曲がったりする動的キャラクタへのGIだ。
■ 「ソニックWA」のGIテクニック(1)~静的オブジェクトへのGI
静的オブジェクトのGIは、事前にオフラインで計算して、その計算結果をテクスチャへ書き出す(焼き込む)手法を取る。この事前計算で得られたGI情報が焼き込まれたテクスチャは開発チーム内で「GIテクスチャ」と呼ばれていた。
ゲームプレイ時のリアルタイムレンダリングでは、このGIテクスチャを、ライトマップ的に適用することになる。つまり、根底技法としては、ライトマップと変わらないため、レンダリングに余計な負荷はかからない。
では「逆にライトマップと何が違うか」ということになるわけだが、GIテクスチャの生成は、そのシーンの背景オブジェクトや小道具/大道具オブジェクトを配置し、天球光源の設定や電灯などの局所照明など全ての光源を設定した状態で大局的に行なわれる。
「ソニックWA」のグラフィックスを注意深く見てみると、建物や地面などの表面にテクセルの単位(粒子)のようなものが見えるだろう。これがGIテクスチャにおける計算の一単位だ(説明の都合上、これをGIテクセルと呼ぶ)。
【GIテクスチャ】 | ||
---|---|---|
GIテクスチャのみを表示した特殊なショット。よく見るとポツポツという斑点のようなものが見えるはず。これがGIテクスチャの計算単位 |
このGIテクセルから適当な方向にレイを飛ばして、各GIテクセルにどんな色の光が届いているのかを求めるのを事前計算で行なうのだ。ちなみに、飛ばしたレイが遮蔽されたり(他者に衝突したり)、反射/拡散したりする場合もあるが、こうした状況においても計算が発散しないような工夫が成されている。
原理について簡単に解説しよう。まず、1つ1つのGIテクセルから有限個のレイを飛ばし、衝突先のGIテクセルを見つける。この時の入射角度が衝突先の法線に近ければ近いほど、すなわち直角に近い形で衝突していればいるほど、レイ密度が高い、すなわち強く光が伝わるとして、全てのGIテクセルからこの計算を行なう。これを行なうことでシーン内のGIテクセル単位での光の伝達ネットワークの形成が完成する。
【GIテクスチャ その2】 | ||
---|---|---|
まず、光のネットワークの形成を行なう |
この時点ではまだライティングはしていないが、ポリゴンに貼り付ける画像テクスチャの内容は考慮する。例えば画像テクスチャの赤いテクセルが貼り付けられているところのGIテクセルからは、赤いレイが反射するようにする。これは実質的にはGI効果の特徴である「赤い物か光に照らされるとそれが赤い2次光源になる」ということの実現になっているのだ。
この後、実際のライティング計算に移るが、光源として用いるのは、平行光源、点光源、天球光の3タイプ。ゲーム中で登場する全てのこの3タイプの光源を配置して計算に移行する。その際には全ての光源を配置した後、それらの光源達からの光が、どうGIテクセル達に到達するか(直接光としてライティングしているか)を事前計算しておく。これが後のGI計算の光量の初期値に相当するイメージだ。
計算の流れとしては、
- (1)各GIテクセルに対して、光の伝達ネットワークを通じてやってくる全ての直接光の照明計算を行なう。計算結果はバッファAへ
(2)各GIテクセルに対して、光の伝達ネットワークを通じてやってくる全ての間接光の照明計算を行なう。計算結果はバッファBへ
(3)各GIテクセルにおけるやってくる光量を計算→バッファAとBの内容を合算。
(4)次の反復計算のために各テクセルから発せられる光量を計算。
(4)は「光量の総計」×「素材ごとの反射率」×「係数」÷「このテクセルと結ばれるGIテクセルの数」で求める |
株式会社セガ、第二CS研究開発部、第一プログラムセクション プログラマー岩崎浩氏 |
この(1)から(4)の計算で1回のサイクルとなる。
ポイントは計算順序に左右されないために各計算サイクルはダブルバッファで計算している点だ。これを繰り返すと光がバウンス(飛ばしたレイが反射すること)して相互反射していくような結果になっていく。ちなみに(1)~(4)を1回行っただけでは直接光の照明だけに相当するので、全くGIの意味がない結果になる。開発チームによれば3バウンスだと物足りなく、9バウンスだとやり過ぎという感じで、4~6バウンスくらいが適度な落としどころだったとのこと。
岩崎氏「GIテクスチャの計算単位は可変設定ができるのですが大体1辺2cm~3cmくらいですかね。昼間のシーンは大ざっぱでもあまり目立たないのですが、夜のシーンは街灯などの照明が及ぼすGIが、見た目に分かりやすく出てくるので、調整には気を使いました」
また、飛ばしたレイの衝突した対象が透過性のある材質の場合は、ちゃんとそこを透過して、透過した材質の色が乗るような処理も行なっている。わかりやすいのは、アフリカをモチーフにしたマズーリ地区のテントに備え付けられた庇(ひさし)だ。庇の内側を見るとそのテントの色が淡く広がっていることがわかるはずだ。
各GIテクセルから飛ばすレイの数は可変にできる設計になっていたが、「ソニックWA」の開発では多くのケースで250本程度が用いられたという。飛ばす方向は基点から全方位に向けて放射状になるが、垂直方向(法線方向)に密、水平方向(接線方向)に疎になるような工夫を行なっている。それにしても、この複雑なGI計算をそのステージ全体に対して、しかもGIテクセルに付き250本ものレイを飛ばして行なうわけだから、その計算量は膨大だ。
橋本氏「500m×500mの地形に対して1台のPCで計算させると2日間掛かってしまいました。できあがったGIテクスチャは約100MB。1ステージあたり約15kmあるところもありますから、単純に見積もるとGIテクスチャサイズは数百MBから1GB程度にまで上り、計算時間は数カ月となってしまうことがわかったんです(笑)。これではまずいと言うことで、GIテクスチャを生成するツールを分散コンピューティングに対応させました」
これによりGIテクスチャの計算時間は数十分の1、最大で100分の1にまで短縮され、1ステージの計算は1日~2日程度にまで短縮ができたという。
【GIテクスチャ その4】 | ||
---|---|---|
生成されたGIテクスチャの例 |
橋本氏「このGIテクスチャ計算用の分散コンピューティングのために部内にPCを何十台も拡充したんです。そうしたら電力が足りなくなってしまって、なにかの機材の電源を入れるタイミングで職場のブレーカーが落ちるようになってしまいました(笑)。結局電力増強工事をするハメになってしまいましたよ」
MI-TRACERの画面 |
「ソニックWA」の開発には各種ツールが開発されたが、このうち、GIテクスチャを生成するツールは「GI-TRACER」と命名されている。また、これ以外に、法線マップで再現されるような微細凹凸に対してのGIテクスチャ生成には、別の「MI-TRACER」と命名されたツールを開発して対応した。MIはチーム内造語の「Micro Illumination」の略語だとのこと。
基本的なGIテクスチャはGI-TRACERで作成し、プレイヤーが接近して微細凹凸まで観測できてしまうようなオブシェクトのテクスチャに対してはMI-TRACERを用いたというわけだ。MI-TRACERの具体的な適用先は主に石壁の微細凹凸などだとのこと。
計算時間も短縮され、生成されるGIテクスチャにテクスチャアトラスを入れたことでだんだん現実的な容量になったテクスチャだったが、オンメモリに保存して置くにはやはりどうしてもデカすぎた。
ステージにも因るが、1ステージ辺りのGIテクスチャの総サイズサイズは、小さいステージで200MB程度、大きいステージでは1GB程度にまで達することとなってしまったという。これをグラフィックスメモリに余裕がないPS3やXbox 360で一括保持しておくのは無理だ。そこでソニックが移動することにシンクロして必要なGIテクスチャを適宜、メディア(PS3ならばブルーレイ、Xbox 360ならばDVD-ROM、HDDにインストールしている場合はHDD)から動的にストリーミング読み出しする手法を採用した。
岩崎氏「その代わり、ゲーム中のBGMやサウンドはオンメモリなんですよ。ちょっとサウンド関係には容量制限を与えてしまいましたが、それでも40MBくらいは割り当てたので1ステージで使用するBGMやサウンドの量には事足りましたね。ソニックは秒速100m以上で走るのでGIテクスチャの読み出しが間に合うか不安だったのですが、机上の計算で間に合うようにGIテクスチャのストリーミング読み込みを設計したところ、結果的には問題は出ませんでした」
以下の画面ショットは、シーンに対してGIテクスチャのみを適用したもの、GIテクスチャなしで通常のライティングだけを行なったもの、通常のライティングを行なった上でGIテクスチャまでを適用した完成画面の比較だ。
GIテクスチャなしだと、いかにもゲームっぽい映像に見える。なんというか、オブシェクトが置かれたまんまという感じで、シーンとしての一体感がない。また映像としての立体感というか遠近感にも乏しく見える。
GIテクスチャが入るとそのシーンのオブジェクトの立体的な位置関係が視覚的に把握しやすく、さらに空気感と手触り感のようなものまでが知覚として伝わってくる。
【GIテクスチャ その5】 | ||
---|---|---|
GIテクスチャのみ | GIなしの通常のライティングのみ(多くの一般的なゲーム画面がこんな感じ) | GIを付加した完成ショット |
なお、GIテクスチャはミップマップ構造(視点から離れた場所に適用するために低解像度テクスチャをあらかじめ生成しておくテクニック)になっており、読み込まれたGIテクスチャには視点に近い位置用の高品位なGIテクスチャから視点から遠い位置用の低解像度なGIテクスチャまでが含まれている。駆け抜けていくと動的にGIテクスチャが読み込まれていく、つまりGIテクスチャの切換が起こっているわけだが、これが見た目におかしくならないようにうまく調整がなされている。
【GIテクスチャ その6】 | ||
---|---|---|
GIテクスチャのミップマップレベルを色分けして可視化した画面 |
なお、「ソニックWA」には発売後、追加ダウンロードコンテンツ(DLC)がリリースされたが、ここには隠れコンテンツとして、本編のGIテクスチャの高品位なバージョンも収録されているとのこと。「ソニックWA」のユーザーは、ぜひとも追加DLCを入手して、レギュラーステージをプレイしてGIテクスチャの品質の違いをチェックしてみよう。
【GIテクスチャ品質の違い】 | ||
---|---|---|
上段がリリース版のGIテクスチャ品質で、下段がDLC版のGIテクスチャ品質 |
■ 「ソニックWA」のGIテクニック(2)~動的キャラクタへのGI
半球ライティングの概念図 |
GIテクスチャの効果は大きいが、事前計算を用いた手法ゆえ、動くキャラクタに適用することができない。この実装だと、動的キャラクタの陰影が、背景との一体感がなくて浮いてしまった感じになる。具体的には、背景となる建物や小道具/大道具オブジェクトに対してはGIテクスチャによって間接光/相互反射的な表現が成されているのに、動的キャラクタは動的光源からの直接光のみのライティングとなってしまう。
開発チームは、今世代機の3Dゲームグラフィックスには動的キャラクタへのGI手法の適用が不可欠だと感じ、このテーマに取り組んだ。動的な簡易的GI手法、GIモドキならば、いくつかの代表的な手法が、既に実用化されている。
もっとも単純かつ古典的なのは定数的な環境光を設定するものだ。プレイステーション時代の頃からある手法で、そのエリアに充満する光の色をある特定の一色に限定して設定してしまう手法だ。しかし「環境光」というのは名ばかりで、当初は、光源からの直接照明の陰影だけでは暗すぎる場合などの“陰影の嵩上げ”目的で用いられることも多かった。
これを進化させたのが「半球ライティング」のテクニックだ。これはそのシーンについて事前計算で求めたGI情報を元に、適当な2方向の向きを持った環境光で動的キャラクタを追加ライティングする手法になる。前出の環境光の概念を拡張して、環境光に2つの方向性を持たせた手法ということができ、この2方向環境光セットを動的キャラクタのシーン内位置に応じて切り換えていくことで、そのシーンの各場所における局所的な間接光、相互反射をそれっぽく表現できるようになる。
この半球ライティングのテクニックはPS3の「METAL GEAR SOLID 4」にも採用された。ただし、「MGS4」のケースではレベルデザイナーが手作業で半球ライトを置くという職人芸的な実装になっていた。いずれにせよ、半球ライティングはクラシックな手法ながらも、今でもコストパフォーマンスの高い疑似GI手法として利用されることが多い。
橋本氏「いろいろ検討はしたんですが、我々は半球ライティングよりも一歩進んだ概念を導入することに踏み切りました。チーム内では『ライトフィールド』と呼んだ技法で、半球ライティングの2方向の環境光よりも多くの方向からの環境光が空間内に自動的に計算されて配置されるものです」
ソニックを操作してシーン内を歩かせると、地面からの照り返しでソニックの身体の下の方は地面の色の影響を淡く受けた色になっていることに気がつくだろう。また、色の付いた壁に近づくと、ソニックの側面がその壁から間接照明を受けたように壁の色が淡く乗る。頭上に生い茂る花は陽光を受けてその直下に来た者達を、その花の色で淡く染め上げてもくれる。映像全体として見れば、GIテクスチャによる背景や小道具/大道具オブジェクトの陰影とつじつまの合ったGI的なライティングが動的なキャラクターにも行なわれているように見える。
【ライトフィールド】 | ||
---|---|---|
ライトフィールドなし(一般的なゲームグラフィックスはこんな感じ) | ||
ライトフィールドだけを表示した画面 | ||
ライトフィールド適用後の完成ショット |
「ソニックWA」が採用した「ライトフィールド」とは、簡単に言えばそのシーンの空間内に適当な距離間隔に方向性を持った環境光を配置するものになる。「ソニックWA」の実装では各環境光は放射状に8方向の光を発する仕様としている。感覚的にいうとそのステージ空間に対し、適当な間隔で8方向に発光する光源を配置したイメージだ。
【ライトフィールドの模式図】 | ||
---|---|---|
ライトフィールドの模式図。この図では設定される環境光はただの●になっているが、この各●が8方向に光を放つイメージだ |
Valveの環境キューブの概念とよく似た「ソニックWA」のライトフィールド |
この図を用いて単純ケースで説明すると、動的キャラクタは自分を取り囲む8個の環境光でライティングされることになる。実装は違うが、概念的にはValveが「Half-Life 2」で採用していた「環境キューブ」(Ambient Cube)、または「放射輝度ボリューム」(Irradiance Volueme)に近いものだといえる。「Half-Life 2」ではキャラクターの平均体積でもあるW120cm×D120cm×H240cmの間隔ごとに空間を区切り、その領域(ボリューム)1つ1つに対し、どんな光が入ってくるのか(出ていくのか)をオフラインで事前計算してデータテーブル化していた。リアルタイムレンダリング時には、そのキャラクターがいる場所に対応するボリュームを参照し、そのボリュームに入ってくる6方向の光を取得して、これらを方向を持った環境光として処理していた。考え方は「ソニックWA」のライトフィールドと近い。
橋本氏「『ソニックWA』では、ライトフィールドの各点にはデータとしては8方向の環境光を持たせているのですが、ピクセルシェーダーの定数仕様の関係でx、y、zの直交6方向に換算してから、ライティングしています。8個のライトフィールド環境光をまたぐようなケースには、ちゃんと直近の複数のライトフィールドをサンプルして加重平均を求めて後段のライティングを行なっています」
このライトフィールドの設定はステージ全体にも及ぶわけで、これをデザイナーが手作業で設定していたのでは手間暇が掛かりすぎるし、正確性の面でも不安が残る。そこで「ソニックWA」では、前出のGI-TRACERで、このライトフィールドも事前計算するようにした。
岩崎氏「背景や小道具/大道具オブジェクト用のGIテクスチャを生成したあと、そのGIテクスチャを適用したシーンを基にしてライトフィールドの値も算出します。ライトフィールドの間隔はシーンにも依存しますが、大体2m~3mを基本としていて、オブジェクトが多く配置された建物の近隣だともうちょっと細かいところもあるかもしれません。ただ、隣接するライトフィールド同士が変化が乏しい場合は1つにまとめてしまう処理を入れているため、実際には各ライトフィールド間の距離は可変長になっています」
【ライトフィールドの区間図】 | ||
---|---|---|
ライトフィールドの区間を可視化した画面。ライトフィールドが異なる間隔で設定されていることがわかるだろうか |
GIリムライト(Light Field Rim Light)の概念図 |
ライトフィールドのサンプルは動的キャラクタの各ポリゴン面で行なっているのではなく、各キャラクタに設定された代表点から行なう方式なっている。この代表点はあまり高さを上に上げてしまうと、下方向からの環境光の影響が、キャラクターの上半身の方にまで影響してしまうような不具合を生じるので、キャラクターごとに適当に調整が成されている。また、ソニックの世界観では、巨大なキャラクターがそう多くは登場しなかったこともあり、縦方向に複数のライトフィールドをまたいだ場合の処理は入れていないとのことだ。
橋本氏「実は材質によっては、ライトフィールドは法線方向だけじゃなくて、視線ベクトルに相対する反射ベクトル方向のライトフィールドも参照しているんです。こうすることで向こう側の環境光が浸透してこちらにも溢れ出てきているような、微妙な味わいの陰影効果が出せるんです」
逆光がこちらに浸透してくるような表現をリムライト(Rim Lighting)表現と呼んだりする。リムライト表現は、通常は、光源が視線に相対するような、わかりやすい逆光時の追加のハイライト効果として用いる場合が多い。「ソニックWA」では、逆光位置にあるライトフィールドでもリムライト表現を行なうというわけだ。こうすることで、あたかもそのシーンの間接光までもが表面下散乱したかのような淡い色の陰影と透明感が出せる上、一層、動的なキャラクタがそのシーンにGI的に溶け込んだ感じを表現できるのだ。この効果を特に開発チームでは「GIリムライト」と呼んでいる。
【GIリムライト】 | ||
---|---|---|
リムライトなし | GIリムライトのみ | 完成画面 |
岩崎氏「このライトフィールドを球面調和関数(SH:Spherical Harmonics)を用いて実装する案も検討したんですが、使用するメモリ容量、得られる効果のバランスを考えたときにあまり意味はない事がわかって採用は見送りました。我々の実装のような8方向の環境光を持つ実装だと、SHを用いなくても十分なクオリティが得られるようです」
球面調和関数は全方位の放射状に分布するデータ値を不可逆に圧縮する手法として3Dグラフィックスに応用が進んでいるが、球面調和関数の第2項までを使った場合でも係数は9個が必要になるため、実装したいテーマとデータ量と計算不可のバランスがよくないときには採用を見送ったほうがいい場合もある。「ソニックWA」のケースではまさにそうだったと言うことだろう。
「ソニックWA」は走り抜けるアクションシーンが多いので、うっかりすると、このGIシステムの恩恵に気がつかないユーザーもいるかもしれない。プレイ時にはゲーム進行には意味がなくても、ソニックをゲーム世界の様々な背景物に近寄らせて、この独特なアンビエント感のあるライティングを確認してみて欲しい。また、カットシーン(リアルタイムムービーシーン)や村などのクエストシーンでは効果的に観察できるので、村内の探索と同時にGIシステムの効果をクエストするのも楽しいはずだ。
【完成シーン】 | |
---|---|
背景がGIテクスチャのみの状態 | ソニックはライトフィールドのみの状態 |
GIテクスチャの静的な影 | 完成画面 |
【ライトフィールドのデモ】 |
---|
GIテクスチャの静的な影→GIテクスチャのみ→GIテクスチャ+通常ライティング(ライトフィルード無し)→ライトフィールドも適用→繰り返しという流れのデモ映像 |
■ 「ソニックWA」におけるHDRレンダリング技法
「ソニックWA」は、近年の3Dゲームグラフィックスのトレンドを一通り踏襲しており、当然、HDR(High Dynamic Range)レンダリングも採用している。特に「ソニックWA」は全体のほとんどのシーンが屋外であり、しかも「昼夜」という時間的変化を分かりやすい形でユーザーに見せる演出が成されているため、HDRレンダリングの効果を特に前面に打ち出した形で活用されている。
PCではHDRレンダリングといえば今や16ビット浮動小数点(FP16)のFP16-64ビットバッファが標準的な位置付けとなりつつあるが、今世代の家庭用機は8ビット整数(int8)のint8-32ビットバッファを採用する事例がまだ多い。前回取り上げた「METAL GEAR SOLID 4」もそうだった。今世代の家庭用機のGPUはXbox 360、PS3共に128ビットバスでビデオメモリと接続されており、現在のPC向けメインストリームGPUの256ビットバスの半分の帯域しかないため、フィルレートが足りなくなるケースが多いのだ。
岩崎氏「『ソニックWA』のHDRレンダリングは整数8888の8ビット整数32ビットバッファ仕様で、Xbox 360、PS3共通です。0-255に0.0-2.0を割り当てる、いわゆる疑似HDRレンダリングになっています。開発最初期にFP16-64ビットを使ってみたんですけどパフォーマンス的にきつくて、今の仕様にしました」
【HDRレンダリング表現】 | ||
---|---|---|
上段がHDRレンダリング表現オフ、下段がHDRレンダリング表現オン |
これは丁度、「ヴァルキリープロファイル2」などの実装方法と同じだ。この方法だと通常のLDR(Low Dynamic Range)レンダリングで0.0-1.0の輝度を0-255に割り当てていたのと比べると分解能が半分になってしまう弱点があるが、「ソニックWA」ではゲームプレイをしている限り擬似輪郭(マッハバンド)が見えることはほとんどなかった。
橋本氏「『ソニックWA』の場合、そんなに高輝度に振られるシーンがなかったので、最大輝度2.0で十分でした。マッハバンドが目立たないのは、あまりのっぺりとした面表現がなされたオブジェクトが少なかったせいでしょうか」
「ソニックWA」のHDRレンダリングはメソッドとしては疑似実装だが、輝度2.0までは“リアル”HDRレンダリングであるため、レンダリング結果を表示に適した階調範囲に丸めるトーンマッピングの工程が必要になる。
たとえば、橋桁の下などの暗いセクションに入ると暗部階調がゆっくりと見えるようになり、日向の景色が白飛びを起こして見えるようになる。逆に暗いところから明るいところに出ると白飛びしていた箇所のディテールが徐々に見え出す。プレイしていて、こうしたHDRレンダリング×トーンマッピングの演出効果に気づいた人も多いことだろう。
【トーンマッピング】 | ||
---|---|---|
明るいところから暗いところへ、そして暗いところから明るいところへ。トーンマッピングの効果に注目 |
「ソニックWA」のトーンマッピング処理は、そのフレームの平均輝度を求めてその値を元に適性階調に補正するオーソドックスな技法となっている。ただし、マップ内の特定の場所においては、専用のバウンディングボックスを配置して、リアルタイムで求められた平均輝度に対して補正を与えるような調整を入れているとのこと。
橋本氏「これはプレイしやすくする配慮、しっかりシーンを見せるための演出的な理由など、いろいろあるのですが、やはり調整は必要になるんですよね。そもそもデザイナが描画するテクスチャは、デザイン時点で適当な色で着色されるわけですが、それは階調レベル的に、ある状況下で適切な発色になっていない可能性もあるんです」
HDRレンダリングでは定番エフェクトである高輝度のあふれ出し表現の「ブルーム」(Bloom)や「スター」(光芒)といった表現についても、「ソニックWA」では今世代でトレンドなっている縮小バッファを用いた実装を採用しているとのこと。具体的にはフレーム中の高輝度部を複数の異なる低解像度バッファに抽出して、これに対してガウシアン・フィルタを適用し、バイリニアフィルタで拡大して大きさを揃えて合成している。スターも低解像度バッファに高輝度部を抽出する際に回転や圧縮を行ない、これらを展開して合成することで放射状に高輝度部を伸ばす手法だ。「ソニックWA」におけるスター表現の放射方向は4~7で、主に夜のシーンで用いられている。
【ポストプロセス効果】 | |
---|---|
夜のシーンはブルームやスターなどのHDRレンダリングならではのポストプロセス効果が分かりやすい。ゲームプレイ時にはそのあたりにも注目! |
■ 夜のソニック「ウェアホッグ」の毛皮の秘密
「ソニックWA」といえば、ソニックの変身がホットトピックとなっている。今作でソニックは夜になると狼男風の「ウェアホッグ」に変身してしまうのだ。このウェアホッグになると四つん這いになって走ったり、特殊な腕のばしアクションができるようになったり…と、これまでのソニックシリーズでは見られなかったユニークなゲームプレイが楽しめるのだが、3Dゲームグラフィックスの観点からすると、ウェアホッグの毛むくじゃらな容姿に興味がそそられる。
「ソニックWA」におけるウェアホッグ時の毛の表現にはいわゆる「ファーシェーダー」(Fur Shader)が用いられている。ファーシェーダーにはいくつかな手法があるが、ウェアホッグに用いられているのは毛の断面図をテクスチャ化したものを、3Dモデルの表皮ポリゴン上に多層形成させる手法…いわゆる「シェル方式のファーシェーダー」が採用されている。
このシェル(Shell:外皮)タイプのファーシェーダーは「ワンダと巨像」(SCE、2005)の巨像の毛皮表現や、「ロストプラネット」(カプコン、2007)の防寒着の首元の毛皮表現にも使われており、比較的メジャーな手法で目にする機会も多い。
岩崎氏「ファーの積層数は大体15レイヤーくらいです。開発時にはデザイナーがレイヤー数や毛の密度なども調整可能としていました。ファーを適用するためのシェル・ポリゴンはエンジン側で動的に生成する仕組みとしたので、モデリング段階のキャラクターには多層の外皮ポリゴンはありません。イベントシーンとゲーム中でレイヤー数は変えていて、イベントシーンではキャラクターのアップショットになることが多いためレイヤー数を多くしています」
【ファーシェーダー】 | |
---|---|
毛断面テクスチャの例 | オーサリング段階の毛なしウェアホッグ |
デバッグ画面に登場させた毛無しのウェアホッグ | 毛を適用したウェアホッグ |
「ワンダと巨像」の巨像では3~6層、「ロストプラネット」の防寒着では8層程度だったので、ウェアホッグのファーのシェル層はかなり多いことになる。“毛生え”がウェアホッグのアイデンティティなので、ここは重きを置いたと言うことなのだろう。
なお、こうした「動物の毛皮」表現においては、シェル方式のファーだけでは毛の密度が足りなかったり、また、掠め見るような位置関係に生えている(つまりは稜線付近の)毛の密度が物足りなく感じることがあるため、側面からみた毛を描いたテクスチャをポリゴンに適用してこれをキャラクタに植え込む、フィン(Fin:毛ヒレ)タイプの毛皮と併用することも多い。
【ファーシェーダー その2】 | |
---|---|
NVIDIAのデモより。毛の生えていないモデル | シェル方式のファーシェーダーだけ |
毛ヒレによって植え込まれた毛 | 最終ショット |
岩崎氏「毛ヒレは我々も開発段階では入れて試してみたんですけど、『ソニックWA』のウェアホッグは、シェル方式のファーの積層数を多くしたことで、それほど毛の密度不足感もなかったので採用を取りやめました」
この他、ウェアホッグの毛皮表現には、細かいながらも面白い工夫が盛り込まれている。それは毛皮の断面テクスチャに、毛の傾き情報を入れておき、各層のシェル(外皮)ポリゴンにこの毛皮の断面テクスチャを適用する際には、その傾き情報を元にずらす工夫だ。これにより各層で微妙に毛の断面テクスチャがずれて形成されるため、毛がある方向に倒れるようにして生えている表現が実現される。そう、「毛並み」の表現が成されるのだ。
【ファーシェーダー その3】 | |
---|---|
ウェアホッグの毛並に注目。逆毛になっているのはファーシェーダーの工夫による |
ウェアホッグは腕周りの毛並みと手首周りの毛並みの方向が違うことに気がつくと思うが、それはこの工夫によって実現されているのだ。
橋本氏「この他、毛先方面にスペキュラーが出るような陰影処理をやっていますし、また内側の下層シェルほど周りに遮蔽されていると言うことで、毛先が明るく、根本の方が暗くなるような陰影調整も入れていますよ。『ソニックWA』のファーはなかなかうまくいったと思いますが、しかし、課題もあって被写界深度の表現でボカしたときに、毛もぼけてしまってちょっと不自然になるんですよね。これがシェル方式のファーシェーダーの弱点というか、解決すべき今後の課題でしょうね」
【被写界深度効果】 | |
---|---|
左が被写界深度効果オフ。毛並がよく見える。右が被写界深度効果オン。背景と一緒に毛並もぼけてしまう |
なお、「ソニックWA」にはウェアホッグ以外の一部のキャラクタにもファーシェーダーが利用されている。チップの鶏冠(とさか)などがその1つ。他にもあるようなのでプレイ中、意識して探してみよう。
■ 「ソニックWA」における影生成
「ソニックWA」は屋外シーンがメインのゲームであるため、ビジュアル面において、影の存在感が大きい。ゲームプレイをしていると、セルフシャドウは出ているし、他者の影が自分にも投射される相互投射影もサポートされていてかなり凝った影が出ていることに気がつく。
開発チームによれば、「ソニックWA」の影生成には、改良型デプスシャドウ技法の一種である「ライトスペース・パースペクティヴ・シャドウマップ」(LSPSM:Light-Space Perspective Shadow Maps)技法を採用したとのこと。LSPSMについては本連載のバックナンバー「3DゲームファンのためのXbox 360グラフィックス/物理エンジン講座」を参考にして欲しいが、ただ杓子定規にLSPSMを実装しているわけでない。「ソニックWA」では、GIシステムとうまく調和が取れるような面白い実装になっているのだ。
【「ソニックWA」における影表現】 | ||
---|---|---|
「ソニックWA」における影表現は動的生成された影と事前生成された静的影とのハイブリッド技法 |
まず、地形に落ちている背景などの影は、実はGI-TRACERによって生成されたGIテクスチャとしての影なのだ。ジャギーが出ないようにソフトシャドウ的な“ボカし”が適用されているが、いってみればこの地面に落ちている影は事前生成された影であり、静的な影と言うことになる。
しかし、その静的な影付近に動的キャラクタを移動させると、ちゃんと動的キャラクターに静的オブジェクトの影が投射される。まるで事前生成されたGIテクスチャ上の焼き込み影が、リアルタイムに動的キャラクタに投射されているかのように見える。これは面白いし、どうやっているのか不思議だ。
【影生成】 | |
---|---|
GIテクスチャとしての影(左)と、完成画面(右) |
【影生成 その2】 | |
---|---|
GIテクスチャの影範囲内にいて、動的キャラクタに背景の影が投射されているシーン |
【影生成のデモ】 |
---|
具体的にいうとソニックの影とソニックに落ちている木の影は動的生成。地面に落ちている木の影はGIテクスチャによる静的生成されたもの。見ていて普通は区別できない。お見事。欲を言えばもうちょっと静的影がぼけているとよかったか |
実はLSPSMで動的キャラクターと静的オブジェクト、双方のシャドウマップは生成するが、そのシャドウマップを用いた影描画段階でユニークな適応型の処理をしている。まず、原則として、静的なオブジェクトの影は静的オブジェクト上には描かない。つまり、例えば木の影は、LSPSMによるリアルタイム影として地面には描かないのだ。
しかし、動的なキャラクタ上にはLSPSMベースで全ての影を描画する。例えばソニックの影は地面にも描画するし、ソニックに投射してくる木の影はソニックの身体に描画するというわけだ。
言い方を変えれば、静的なGIテクスチャの焼き込み影が動的キャラクタと交差するようなときには、静的な焼き込み影があたかも動的キャラクタに投射しているかのように見せているということだ。実際には動的なキャラクターに対してLSPSMで生成した静的オブジェクトのリアルタイム影を投射してごまかしているだけなのだ。
【影生成 その3】 | |
---|---|
左上から順番に、GIテクスチャの事前生成影のみ、LSPSMの影のみ、全ての影をLSPSMで生成した場合のテストショット(製品版ではこちらは採用されていない)、GIテクスチャの事前生成影とLSPSMの影を合成した完成画面 |
岩崎氏「万が一、静的オブジェクトの影を全描画したとしても、GIテクスチャ上の影とは、およそは合いますが一致はしません。ですが、例えば、地面に落ちている木の影と、ソニックに投射されている木の影が一致しているかどうかなんて、プレイヤーは気にも止めないでしょう。また、静的オブジェクトのシャドウマップ生成も動的キャラクターとが交錯するであろう狭い範囲で済みます」
逆に言えば、このテクニックは、広範囲に及ぶ静的オブジェクトのリアルタイム影描画をほとんど省略でき、静的オブジェクトのリアルタイム影描画は動的キャラクタに投射されているものだけ行なえばいいので負荷低減にもなるというわけだ。クレバーな手法だ。なお、「ソニックWA」のLSPSMでは、シャドウマップ生成用のテクスチャとして1,024×1,024テクセルのものを用いているとのこと。
橋本氏「ちなみに、ソニックの尖った後ろ髪の根本の辺りの影は3ds MAXで焼き込んだ陰影を修正したものなんです。凄く局所的でわかりきった陰影は見た目重視で焼き込んでしまったものもあるんです」
【影生成 その4】 | ||
---|---|---|
上段が素の状態。下段がオーサリング段階で焼き込んだ局所的な陰影 |
■ その他の「ソニックWA」のグラフィックスの見どころ
Valveの開発したハーフランバートライティング |
「ソニックWA」では、NPCとしてデフォルメされた人間キャラクターが数多く登場するが、そのライティングにはValveが実用化したことで有名なハーフ・ランバート・ライティングを適用している。
ランバート・ライティングは拡散反射の陰影処理の一般系で、視線方向に依存しない光源の入射方向と面の向き(法線)だけで算出される陰影処理技法だ。この技法は「その地点の明るさは、面の向きと光の入射方向が織りなす角度θのCOSθに比例する」という「ランバートの余弦則」で定義されるのだが、実際にこれでライティングすると明暗がかなり強烈に違って出てしまう傾向にある。
VALVEはGIライクな拡散反射表現に近づけるために、この急激に変化するコサインカーブにバイアスをかけて暗部階調を持ち上げる工夫をした。ランバートの余弦則のコサインカーブが半分になるように“1/2”を掛けて“1/2”を足して、さらにこれを2乗して緩やかなカーブに変換して陰影処理を行なうから「“ハーフ”・ランバート・ライティング」というわけだ。
このハーフ・ランバート・ライティングは、「ソニックWA」のGIテクスチャやライトフィールドによる疑似GIとの相性がよかったようで、ハーフランバートの穏やかな階調表現に乗るライトフィールドからの淡い色の陰影との調和が、確かに「ピクサー」ライクなビジュアル感を醸し出せている。
【ハーフ・ランバート・ライティング】 | |
---|---|
左が通常のランバートライティングのテストショット。陰影が濃く出過ぎていて人肌の色としては黒ずんでいて不自然。右が製品版で採用されたハーフランバート・ライティングの画面 |
また、法線マップによる微細凹凸をわかりやすく見せるために視点位置から淡い光「カメラライト」を焚いている。これにより、始点がちょっと移動するだけでも、微細凹凸のハイライトが変化し、微細凹凸の感じが見た目でわかりやすくなっている。細かいテクニックだが、光量の少ないところでの法線マップによる微細凹凸表現はどのゲームスタジオも苦労している部分であり、このカメラライトのテクニックは単純だが効果の高いワザといえそうだ。
【カメラライト】 | ||
---|---|---|
上段がカメラライト・オフ。下段がカメラライト・オン。壁や床の法線マップにハイライトが出てより立体的に見える。映画における照明に近い効果をもたらしている |
「ソニックWA」は、あまり水とのインタラクションを前面に押し出したゲームではないが、法線マップによるさざ波表現、フレネル反射による水底と水面の鏡像の制御までを行なっているなど、なかなか凝った水面表現になっている。
岩崎氏「開発当初はさざ波表現に視差マッピングを使って、かなり立体的なさざ波表現を実現していたんですよ。でも、GPU負荷的な問題もあって現在の法線マップによるさざ波表現に落ち着きました」
【水面表現】 | ||
---|---|---|
「ソニックWA」は水面表現が美しい。フレネル反射の効果も、動的キャラクタの鏡像もちゃんと出ているので観察してみよう |
■ おまけ-PS3版とXbox 360版の開発苦労話
図を描いて説明する橋本氏 |
結果的にゲームスペック的にPS3版とXbox 360版とで差は全くないが、開発段階ではそれぞれに特有の苦労があったようだ。
まず、Xbox 360版はDVDメディアの容量がきつかったという。システム等で占有される容量を除けば、ゲームコンテンツで利用できるのは2層メディアで約6.8GB。今世代のハイデフのゲームコンテンツを1枚のDVD-ROMに詰め込むのには相当苦労したという。また、Xbox 360はHDDのないモデルも発売されているため、DVD-ROMだけでの動作保証をしなければならず、圧縮したコンテンツをHDDに展開するといった手法を使えなかった。マイクロソフトはXbox 360を発表する際、「次世代ゲームメディアは光ディスクではなくネットワークである」と主張して次世代光メディアでなくDVD-ROMドライブを採用したのだが、あの決断はあまりよい影響を開発サイドに与えていないようだ。
Xbox 360のCPUは3つのPowerPC970互換コアが2つのハードウェアスレッドを動かせるので、便宜上、合計6スレッドを同時に走らせることができる。「ソニックWA」ではスレッド0~5の6スレッドのうち、スレッド0がメインスレッド、スレッド1、2、4がHAVOK、スレッド3は動的ロードの制御用、スレッド5がデータマネージ面処理に割り当てられたとのこと。
Xbox 360の方が先に登場した関係もあって、ゲーム制作はXbox 360にて基本設計を行ない、これを並行移植するような形でPS3版の開発が進んでいったという。荻野氏「PS3版の開発はかなり大変でした。Xbox 360に用意されているライブラリに相当する機能や関数をかなりPS3上に移植したり。メインメモリの取り扱いも大変でした。PS3ではDMAの都合上、データが128バイトボーダーでアラインされないとパフォーマンスが出ないんです。しかも、Xbox 360の512MBを自由に使えるのと違って、PS3ではメインメモリ256MB、グラフィックスメモリ256MBと用途別に分かれてしまっていますし……」
PS3版は標準光メディアがBlu-Rayになるため1層でも25GBの容量がある。このため、Xbox 360のようなメディア容量がきついと言うことはなかったが、PS3ではメインメモリが足りないという問題が浮上してきてしまったのだ。
結局、メインメモリがどうしても足りなくなってしまうのだが、PS3はHDD搭載が前提となっていて仮想メモリが利用できるので、この機能を活用することにしたという。「ソニックWA」では、結果的には、HDDの255MBを仮想メモリとして使用し、メインメモリ側のある50MB領域をここにスワップするような活用となっている。仮想メモリに格納されるのはオーディオ、PVS判定、HAVOKのPOOL、フォント/文字情報、HUDデータ、セーブデータ、RSX(GPU)の管理領域など。
荻野氏「今回のPS3版の開発ではSCE提供のライブラリ、Playstation Edgeにかなり助けられました。これに含まれる、CELLプロセッサ内のSPE(Synergistic Processor Element)を頂点シェーダー的に活用するEdgeジオメトリの活躍が著しかったです。カリングはもちろんですが、特にスキニングの効果が凄くてPS3のRSXだけで処理させた場合の10倍はパフォーマンスが向上しましたね(笑)。Xbox 360版と多くのデータは共通化していますが、このEdgeジオメトリを活用している関係で、3DモデルデータなどはPS3専用の最適化を施しています」
PS3のCPU、CELLプロセッサには実動可能なSPEが7基搭載されているが、PS3版「ソニックWA」におけるSPEの使い道は、SPE1とSPE2がシステムで活用され、空いているSPE2でオーディオシステムを走らせている。SPE3~6はHAVOK、Playstation Edgeなど、SPE7では描画のマネージメントが任されているとのこと。
■ 3DゲームグラフィックスのライティングはGIの方向へ進化する
橋本氏は丁寧にデモで実演しながら各実装テクノロジーの解説を行なってくれた |
最後に、ソニック開発チームとして、今後の3Dゲームグラフィックスの動向や挑戦してみたい技術について伺った。
橋本氏「GI関連についていうと、スペキュラ(鏡面反射)の情報を取り扱えるようになれたらいいなと思いますね。現在の我々のGIテクニックで取り扱っているのは拡散反射系だけですからね。球面調和関数なんかを使って、シーン内のオブジェクトの各面単位とかについてどういう光がやってきているのかみたいな情報が盛り込められれば非常に綺麗な光沢なんかが出せると思うんですよね。キューブマップなどを手動で多数空間に配置する方法もあるようですが、ここでもやはりアーティストが手動で設定するのではなくて、全自動でデータを生成するシステムを作りたいと考えています。その上でアーティストが調整する余地があるのがベストだと思います。
関連する話としては、最近流行っている様子の『Radiosity Normal Mapping』に近い概念もやろうとしていたものの開発時間の都合で省略してしまっていたのですが、我々のライティング計算システムに実装していくのは比較的容易だと思いますから近いうちにやっていきたいと思っています。あとは動的なGIの実現ですね。既に世間でデモレベルでは出てきていますが、次世代機ではそういったことができる性能になるだろうし、やっていかなきゃならないんだろうな、と思っています。現場の人間から言わせてもらうと…次世代機は、あまりアーキテクチャ面で大きくは変えて欲しくないですね。メモリが多くて性能が高くて安い、現状のアーキテクチャを進化させたようなものであって欲しいです(笑)」
今世代機の3Dゲームグラフィックスは、本連載でも指摘してきたように「HDRレンダリング」、「動的影生成」、「法線マップによる微細凹凸表現」が「三種の神器」的な必須かつ流行のフィーチャーだったわけだが、「ソニックWA」は、その3つに加えて、グローバル・イルミネーション(GI)を現実的な形でリアルタイム実装するということに挑戦してきた。
GIは決して、見た目に派手な技術ではないが、「いかにもゲームのCG」だったビジュアルを、あたかも本当に画面の中の者達が実際に息づいているかのように見せる「ライブ感」が出せるため、映像としてのリアリティを数段階上に押し上げるポテンシャルを秘めている。
今回「ソニックWA」で採用されたリアルタイムGIシステムは、現行機でリーズナブルに実行できて、それでいて効果も高いため、今後、大きく波及していきそうな予感がする。ヘッジホッグエンジンの進化に期待していきたい。
(C) SEGA
□セガのホームページ
http://sega.jp/
□「ソニック ワールドアドベンチャー」のページ
http://sonic.sega.jp/SonicWorldAdventure/
(2009年 4月 10日)