|
株式会社スクウェア・エニックスより6月に発売されたプレイステーション 2用RPG「ヴァルキリープロファイル2 -シルメリア-」(以下VP2)は、株式会社トライエースが開発を担当した作品だ。トライエースといえば、技術力には定評があり、最近ではXbox 360専用ゲームタイトルの開発に乗り出すことを公式発表したことが記憶に新しい。
トライエースでは、研究開発部が汎用性のある社内オリジナルエンジンを作り込んでいき、タイトル開発プロジェクトチームがこれを活用してタイトルを作り上げていくという、モダンな制作スタイルを採用しているという。そしてこのトライエースのオリジナルエンジンの最新版ベースで動作しているのがVP2ということになる。
■ VP2のHDRレンダリングは“マジメ”な疑似技法? 現在、3Dゲームグラフィックス表現のトレンドとなっているのが「ハイ・ダイナミック・レンジ(HDR)レンダリング」のテクニックだ。 本連載では幾度となく出てきているキーワードだが、これは簡単に言えばレンダリングをなるべく現実世界に近い広いダイナミックレンジで行なうもの。RGB各8ビットで表現される1,677万色の色域を大前提にしてレンダリングするのではなく、これを遙かに超える色(輝度)があることを想定してレンダリングし、このフレームから画面表示するための映像を作り出すという流れになる。PCや次世代機の世界ではレンダーターゲットとなるフレームバッファがRGB各整数8ビットに限定されず、浮動小数点までが利用できたり……と、GPU自体の設計がHDRレンダリングに都合のよい進化を遂げてきているほどだ。 プレイステーション 2(PS2)は、こうした概念が生まれる前のハードウェアであり、そのGPUである「GS(Graphics Synthesizer)」はHDRレンダリングに適した設計になっていないわけだが、本連載で取りあげた「ワンダと巨像」を始めとして、PS2にこのトレンドを持ち込んできた例が増えつつある。
VP2もそうした作品の一例だ。自然にシーンに溶け込んでいるので、「いかにもHDRレンダリング」といった主張があまりないのだが、よく観察すると、柔らかいブルーム表現や白飛びした明部などに気が付くはずだ。
庄子達哉氏(トライエース研究開発部、以下庄子氏) : 「PS2では、PCGPUのように浮動小数点バッファのような高精度バッファが使えません。つまりRGBが各8ビットずつの通常の整数バッファを使わざるを得ないわけです。これでHDRを表現するために固定小数点の概念とHDR率というパラメータを導入しています」 8ビット整数であれば0~255の値が表現でき、PS2では通常、これを0.0~1.0の値に対応付けた色表現になるが、VP2では0~255をHDR率で設定した値に対応付けている。例えばHDR率=2.0とした場合、0~255が0.0~2.0までの値に対応することになり、通常時の2倍のダイナミックレンジ(表現域)を持つと見なすようにするのだ。 HDR率の値を上げれば上げるほど、表現できる輝度レンジは拡張されるが、分解能は逆に減ってきてしまう。例えばHDR率=2.0は輝度レンジは2倍になるが、分解能は1/2になってしまう。当然だ。そして、分解能が減るとカラーグラデーション表現などでマッハバンド(疑似輪郭)が出てしまう。 試行錯誤の結果、トライエース側では、ダイナミックレンジと階調表現のベストバランスはHDR率=2.0あたりがよいという決断を下したそうだ。
2.0では、確かにカラーグラデーションは疑似輪郭がやや目に付くものの、周波数の高いテクスチャ模様がオーバーラップしているとほとんど視覚上気にならなくなる。なお、エンジン上ではHDR率はシーンなどに応じて可変設定できる仕様になっているそうだが、データ管理等が面倒になるためVP2ではHDR率=2.0固定にしたという。
ライティング処理なども全て、この仕組みに配慮して行なわれるので色分解能は半分になってしまっているものの、輝度ダイナミックレンジは2倍となり、この範囲である程度マジメなHDRレンダリングが行なわれていることになる。 レンダリング結果としてはRGB各8ビットのフレームだが、HDR率=2.0の影響で輝度レンジは0.0~2.0の2倍あるため、これを表示の際には適正輝度である0.0~1.0に落とし込まなければならない。この処理を行なうのが、マジメに行なったHDRレンダリングの結果には欠かすことのできない「トーンマッピング」の処理だ。
人間の目は、明るすぎるシーンを見たときには、瞳の開口率を絞って光量を減らし、暗すぎるシーンでは瞳を開いて光量を増やし、結果的に適正輝度で見るような動作をするが、この動作に相当する処理がトーンマッピングだ。
まともにトーンマッピングを行なう際には非線形カーブのトーンマッピングカーブを利用するが、PS2では処理能力的にも厳しいものがあるので、線形な丸め演算を行なう事で処理している。露光値はデザイナーや演出家によって指定されるカメラのEV(ExposureValue)によって決定される。
五反田氏 : 「非線形カーブを模したマルチバンドの線形カーブでのトーンマッピングも実験してみたんですけど、負荷が高い割に結果の差が小さいんで、単なるクランプ(丸め)にしました(笑)」
ここまででHDRレンダリングの二大基本処理は押さえられたが、これだけでは印象的なビジュアルにはならない。HDRレンダリングといえば、その醍醐味は、トーンマッピング後に高輝度と認知される領域からの光のあふれ出し(ライトブルーム)表現にあるからだ。 VP2のブルームはフレーム内の高輝度部を低解像度で抽出してこれをMultiple Gaussian Filter(MGF)を通して、光のあふれ出しフレームを生成している。ブルーム用のバッファサイズは64×64~128×128ドット程度だという。
ガウシアン・フィルタ(Gaussian Filter)とは、概念的に解説すると入力値(ピクセル色)の影響を外郭に行けば行くほど弱めて散らすようにぼかすフィルタのこと。画像処理ソフトのぼかし処理などにもこのフィルタが使われていることが多い。やや難しい話になるが2次元的なガウシアン・フィルタは数式的に縦方向と横方向の変数を分離でき、縦方向の処理結果と横方向の処理結果の2つを合成することで結果が得られる特徴を持つ。つまり、コンピュータで実行する画像処理アルゴリズムとして効率よく実装できるメリットがあり、最近では好まれて使われる傾向にある。
川瀬式MGFでは、フレーム中の高輝度部を複数の異なる低解像度バッファに抽出して、これに対してガウシアン・フィルタを適用し、バイリニアフィルタで拡大して大きさを揃えて合成する方法をとる。 そして、できあがったブルームフレームは、メインのレンダリング結果にα合成されて出力されることになる。
五反田氏 : 「我々も『スター・オーシャン3』までは、『ワンダと巨像』のような、取り出した高輝度部バッファを反復縮小してバイリニア拡大する方法を採用していたんです。ところが、『GDC 2004』で川瀬氏の発表を見て、これは使える! と思ってMGFを採用しました。MGFの方が綺麗な結果が得られるし、PS2ではこっちの方が速いんですよね」
「ワンダと巨像」では比較的職人芸的なアプローチだったが、VP2では、最新のHDRレンダリング手法を基本に忠実に従いつつも、PS2というハードウェアの制限を独自の工夫で吸収して実装したような感じになっているわけだ。
■ 光散乱シミュレーションは「鬼武者3」と同手法 HDRレンダリングとの相性も良く、フォトリアルな3Dグラフィックスを実現するにあたっては、最近よく目にするのが「光散乱シミュレーション(Light Scattering)」だ。 3Dグラフィックスにおける光散乱シミュレーションとは、天球の空の色を自然界の法則に沿った形で計算して求めたり、大気によって光が散乱して色が変化する現象を再現すること。
なお、VP2では、「GDC 2002」でATIが発表した光散乱シミュレーションのアルゴリズムをPS2で実装した形になっている。そう、実はこれは、本連載で紹介した「鬼武者3」の光散乱シミュレーションも、ほぼ同じ技法を使っている。詳細はそちらを参考にして欲しいが、ここでも簡単に解説しておこう。
光散乱シミュレーションは、大局的に考えると2つの流れに分解できる。1つはシーンの深度値(Z値)に応じて、遠くのものはぼやけて色変移を起こさせる、空気遠近(フォグ)的な効果をもたらす流れだ。もう1つは計算で生成した太陽や月を含む天球を、やはり深度値をキーにして合成してやることで、遠ければ遠いほど天球の光が遠近を飛び越えて漏れ出させる効果をもたらす。
ちなみにVP2では、この光散乱シミュレーションは「森」のシーンで活用されているようだ。
■ 本格志向の被写界深度シミュレーションで"カメラ的"な演出を実現
被写界深度(DOF:Depth of field)のシミュレーションも、3Dゲームグラフィックスの表現では常套手段となりつつある。VP2では、特にリアルタイムグラフィックスで綴られるカットシーン(ムービーシーン)にて人物キャラクタを際立たせたり、あるいはシーンの遠近を目立たせて印象的なビジュアルに仕上げるための演出手段として効果的に活用されている。
VP2のDOFは、五反田氏が述べているように最近ではよく用いられるシーンの深度(Z)バッファを利用する方式。シーンをレンダリングしたあとのZバッファにはそのシーンの深度(Z)情報が残るが、被写体までの距離(Z値)とこのシーン全体の深度値を比較してその差が大きいピクセルほどブラしてぼかせば、ピントが合っているところはくっきりと、合っていない領域はぼかすことができる。 VP2では、このぼかし処理にはブルーム処理のところでも活用したガウシアン・フィルタを活用している。ぼかし処理に活用するバッファサイズはやはり粗い64×64~128×128ドットだとのこと。 この技法は大きくボカしたときに、そのボカしたピクセル色がくっきりと映るべき領域に漏れ出てきてしまい汚い映像になる弱点がある。
そこでVP2では、ピントの合っている領域より後ろの「背景」と、ピントの合っている領域より前の「前景」と分けてボカし処理を実行し、さらにぼかすことが不要なピントの合っている領域をマスクすることでこの問題を回避している。
なお、トライエースのエンジンの設計上では、ボカした背景は最大3枚、ボカした前景は2枚の合成を可能にしているという。 庄子氏 : 「あまり目立っていませんが、映像処理系では一番チート(物理的な意味を度外視した特例処理)を盛り込んでいるのがDOF処理だったりします(笑)。VP2ではパフォーマンス的な観点から、背景、前景、それぞれ1枚ずつ、としたシーンがほとんどですね。演出担当のスタッフもカメラをよく知る人間だったので、普段人々が見ている写真に近いDOF演出ができていると思います」
VP2では、バストアップ程度の人物ショットの時はグラビア写真的な被写体以外が強くぼるような被写界深度になり、情景を広く撮った風景ショットの時は風景写真のようにボケみが淡い被写界深度になる。普段見慣れている写真に近いフレームとなっているので、うっかりすると被写界深度のシミュレーションに気が付かないほど自然に見えてしまっている。また、手前の前景側のボケはVP2の特徴的な画となっており、印象的なカットが随所に見られる。PS2でも、DOFを実際のカメラ的に処理することによって、「写真的な画」を実現できるのだ。
■ 地味だが効果の高い半球ライティング
五反田氏 : 「いえ。特別、表面下散乱的な事はやっていません。ライティング関係で特別な処理といえば、Hemisphere Lightingをやってますね。かなり積極的に活用しています。たぶん、感じたのはそれかと思います」 光源を設定してライティングを行なっただけだと、陰影がはっきりしすぎていて空気感が全くない味気ない画になってしまう。そこで、光源からの光が当たってない部分にも一様な光を当てる意味合いとして環境光を設定するのが一般的だ。ただし、動的な光源と環境光の組み合わせだけでは、まだ、その陰影が単調になってしまう。 そこで完全にシーンに溶け込ませるライティング技法として、オフラインレンダリングの世界では多段のラジオシティ(相互反射)処理を行なったり、次世代機や最新PCの3Dグラフィックスハードウェアでは、そのシーンの全周の光の分布をテクスチャ化してこれを元にライティングを行なうイメージベースド・ライティング(IBL:Image Based Lighting)などが利用されている。
VP2で採用されている「Hemisphere Lighting=半球ライティング」とは、このIBLを大胆にシンプルに簡略化したともいえるもので、そのシーンの空の色(天球色:Sky Color)と地面の色(地球色:Ground Color)の2色の環境光を設定し、これに基づいてライティングを行なう技法だ。
そのシーンにあった天球色と地球色を設定することで、そのシーンにあった間接光を受けているようなライティングとなり、動的な光源によってライティングされた陰影の影となっている部分にも、その面の向き(法線)に応じた柔らかい天球色と地球色のグラデーションが出現する。ある意味、その3Dモデルの陰影の情報量が増えて見せられることになり、うまく設定してスペキュラとバランスすれば、VP2のように肌の陰影などにみずみずしさを与えることもできるのだ。
五反田氏 : 「半球ライティングは効果が高い割に処理負荷的には軽いので、使い勝手がいいですね。デザイナー達も使い勝手が良かったみたいで、VP2では効果的かつ積極的に使われています」
■ 影生成はステンシルシャドウボリューム技法を採用
VP2でも、影生成が行なわれており、特にカットシーンでその存在感がクローズアップされる。光源方向からキャラクタのシルエットが地面に投射されているが、セルフシャドウは見受けられない。キャラクタのシルエットを投射テクスチャマッピングで描画する、簡易影なのだろうか。 庄子氏 : 「いえ、実は(笑)、ステンシル・シャドウ・ボリューム技法なんです。そうです。技法的にはセルフシャドウも出せるんですが、あえて切っているんですよ」
ステンシル・シャドウ・ボリューム技法とは、設定した光源から見て、そのオブジェクトの輪郭となる頂点を引き延ばしてできるシャドウボリュームを元に影生成を行なっていく技法だ。この技法では、複雑な遮蔽構造に配慮した影生成ができるのが特徴で、互いに影を落とし合う相互投射影や、自身の影が自身に落ちる自己投射影(セルフシャドウ)といった影すらも生成可能な技法だ。なぜ汎用性の高い技法を活用しながら、セルフシャドウ搭載をキャンセルしてしまったのだろうか。
五反田氏 : 「せっかくライティングの結果で得られた陰影が、ステンシル・シャドウ・ボリューム技法で得られる影と合わさると影色が強くなりすぎて、VP2の柔らかいシーンと不釣り合いになったんです。ステンシル・シャドウ・ボリューム技法では、何もしないとセルフシャドウが出てしまいますから、あえて切るための特例処理を入れているくらいです」 庄子氏 : 「我々のグラフィックスエンジン自体は、『ラジアータ ストーリーズ』、『スターオーシャン3』の時代から、ステンシル・シャドウ・ボリューム技法を実装していました。セルフシャドウも出そうと思えば出せます。出す出さないはゲームデザインチームの方が判断するので、VP2は『出さないほうがいい』という判断が下されたということですね」 セルフシャドウなしとした理由はもう1つあるという。 PS2でのステンシル・シャドウ・ボリューム技法では、その性能的な限界に配慮して、高精度なレンダリング用モデルと低精度な影生成用モデルの2つを使い分けるケースが多い。影は大体出ていればまあ気にならない……という前提で低精度モデルを使うわけだが、これが負荷軽減へと結びつく。
VP2ではカットシーンなどで特にキャラクタのクローズアップショットがあるため、低精度のセルフシャドウがどうしても目立ってしまったようだ。そのため、どうしてもビジュアルのデザインチームはセルフシャドウを断念し、影を地面へ落とすのみという策を採択したというのだ。
なお、戦闘シーンでは、ステンシル・シャドウ・ボリューム技法ではなく、ベーシックな影生成技法である丸影法に切り替わる。丸影法は、丸いシルエットテクスチャを足下に置くだけの簡易表現だが、VP2では、キャラクタのモーション制御用のボーン形状を地面に投射し、その形に沿って複数個の丸影テクスチャを置く工夫を実装しており、あたかもソフトシャドウを実現しているかのような表現となっている。この技法は「鬼武者3」などでも実装されていたもので、丸影技法よりはリアルでありながら軽い方法なので、PS2では広く用いられるようになってきている。
VP2では、この他、木陰の下などをキャラクタが通ると、その木陰模様がキャラクタ達に投射される影表現が見られるが、こっちは投射テクスチャマッピングを使った影表現となっている。投射される木陰テクスチャはリアルタイムにシーンをテクスチャにレンダリングしたものではなく、予めデザイナーが描き起こしたそれっぽいテクスチャを用いている。
■ オリジナル物理エンジンによる挙動生成 キャラクタの動きをリアルに見せるために、これまで主流となっていたのは、実際の演技者の動きをデータ化し、それて3Dキャラクタを動かす「モーションキャプチャ」技術であった。 これは想定されたシーンを再現するだけであれば十分な結果が得られるが、そのシーンがインタラクティブ性に満ちたものであると、不自然さが露呈してしまう。たとえば、あるキャラクタが殴られた場合、その攻撃を受けた場所が頭部か腹部かによって、攻撃を受けた側のふっ飛び方は本来ならば異なるはずだ。ところが、キャプチャされたモーションデータを再生して動きを付けるだけだと、どういう攻撃を受けても同じふっ飛び方になって不自然に見える。最新の3D格闘ゲームでも、こうした不自然な挙動を目にすることがしばしばあるはずだ。 これからの3Dゲームは「いかにも物理してます」というアピールよりは、不自然さをユーザーに感じさせない形での「物理シミュレーション」が重要になる。VP2では、そんな形での物理シミュレーションの活用に徹している。もしかすると「VP2のどこに物理シミュレーションが?」と首をかしげてしまうユーザーもいるかも知れないが、VP2はあらゆるシーンで物理シミュレーションが積極活用されているのである。 VP2の物理エンジンは、同社オリジナルのものを開発して使用している。衝突判定はシンプルな円柱のような単位で行なわれ、それぞれの衝突単位同士はデザイナーの手によってグラフィックスとつじつまが合うように接続されて、ボーン(骨)のように仕込まれる。また、各衝突単位のジョイント部が力点になる運動が算出されるが、このジョイント部にはバネ係数が設定でき、その伸び縮み具合が制御できるようになっている。
五反田氏 : 「我々の物理エンジンは非常にシンプルです。よく見ないと分かりにくいですが、キャラクタの服、武具類、アクセサリの動きの制御に活用されています。布などはかなり複雑な衝突単位の接続構造をデザイナーが設定してくれています。工夫としてはバネ係数の制御のところです」
五反田氏 : 「シンプルな我々の物理エンジンですが、衝突処理時に摩擦係数の処理をやっているのが特徴といえば特徴です。これをやらないと、何もかもがみんな“ぬるっ”とした動きになってしまうんです。この仕組みの導入により、歩いてる人間の長い髪が動いていたとして、そのキャラクタが立ち止まるとその髪も肩の上でスッと静止するような感じの動きができるようになりましたね」
この摩擦係数処理自体も、かなり簡略化した演算モデルを実装しているとのことだが、見た目ではない、動きとしての「材質感」が表現できるようになり、リアリティが各段に増したそうだ。歩くキャラクタの足にスカートがまとわりつく感じなども、この処理系で実現されている動きなので注目して見るといいだろう。VP2には布の動きを再現する特別な布シミュレーション物理エンジンは実装されていないが、基本的な衝突処理、バネ係数と絶対拘束物理のチューニング、摩擦係数処理で、布っぽい動きも再現できるようになったという。
さて、現在の3Dゲームにおいて、キャラクタのアクションまでを物理シミュレーションで行なうのはまだまだ難しいし現実的でない。そこでキャプチャしたモーションデータでキャラクタアクションを実現するのがまだまだ常套手段となっているわけだが、このモーションデータの再生に終始してしまうと、インタラクティブシーンで、前述したような物理的に不自然な動きになってしまう。 「ワンダと巨像」では、モーションデータと物理挙動をブレンドするような「加算モーション」という独自技術を開発してこの問題に取り組んでいた。VP2ではどうしているのだろうか。 五反田氏 : 「モーションと物理を完全に別物として処理して、最終的に合成や補完するという方式だと、結果として不自然な動きが出てきたときに対策が講じづらいんです。我々のエンジンでは、モーションデータを物理パラメータに変換して物理エンジンに食わせる形で処理しています」 庄子氏 : 「具体的に言えば、モーションのデータから、力や加速度の情報を算出して、これを物理エンジンに与えるんです」 モーションデータは単なるジオメトリの変位データだが、これを微分すれば力ベクトルや加速度などの物理パラメータが求められる。このデータを物理エンジンに渡せば、物理エンジンでキャラクタのモーションを与えることができる。 五反田氏 : 「一方で、リアルタイム処理によって算出される物理挙動がありますよね。そのリアルタイム算出される物理挙動の影響度合いと、モーションデータから算出された物理パラメータの影響度合いを半々にすると、リアルタイム物理とモーションデータが融合した動きができあがります」 庄子氏 : 「つまり、ある意味、モーションデータがキャラクタの意志だとすれば、リアルタイム物理の挙動は、その世界がキャラクタに及ぼす物理法則というイメージですね」
この仕組みにより、アニメーションモーションと物理シミュレーションとが自然にブレンドされ、動きが非常にリアルになる。例えばキャラクタが付けているアクセサリなどの挙動はモーションキャプチャのデータになくともリアルタイム物理シミュレーションによって動くことになるし、そのシーンに風が吹いていれば、そのモーションデータにマントの挙動情報がなくても、そのキャラクタのマントは風になびくことになる。
しかし、VP2では、演出意図により、物理法則を無視してでもモーションを再生した方がよいと判断した場合には、物理シミュレーションの影響度を下げてほぼ生モーション再生のようなシーンもあるという。また、最初は物理法則無視のモーションデータ再生100%だが、徐々に物理シミュレーションの影響力を増やし、モーション再生が終わったころに、は、物理法則に従った動きになりシーンに溶け込んだような後味にする……といった演出もある。物理シミュレーション影響率そのものを変化させるといった処理はとてもユニークだ。 ■ まとめ
トライエースも昔はゲームプロジェクトごとにゲームエンジンを設計していたが、特にPS2時代以降、マルチプラットフォーム化や、複数のプロジェクトが同時進行するようになってからは、トライエース独自の汎用のユニバーサル・ゲームエンジンを、五反田氏自らが率いる研究開発部で開発するようになったという。 今回は記述の関係上、「VP2エンジン」というような表現を用いる箇所もあったが、実際にはVP2はトライエースの汎用ゲームエンジンにて開発されたものだ。トライエースのPS2向け最新エンジンでは、VP2では使われていない、球面調和ライティング(Spherical Harmonics Lighting)なども実装されているという。 五反田氏 : 「新機能の開発や設計よりも大変なのは、その機能をデザイナーに使ってもらうための、ツールやDCCソフト(DCC:Digital Contents Creation;MAYA,SoftImageなどの3D製作ソフト)向けのプラグインソフトの開発だったりします(笑)。それとマニュアル作り!」 庄子氏 : 「そしてデザイナーのためのトレーニングソフトや、機能とその効果を分かりやすく見せるデモの開発ですね(笑)。結局、我々開発陣が凄い機能を作っても、それを効果的に活用してシーンを作り上げていくのはデザイナー達なんで。基本、我々は裏方なんですよ」
現在は、タイトルやゲーム内容は明かせないが、Xbox 360用の汎用ゲームエンジンを開発しており、最初からやはりマルチプラットフォーム展開を視野に入れており、同時にその他のハードウェアへのインプリメントも視野に入れてエンジン設計を進めているという。トライエースの今後の動きに注目していきたい。
■ スペシャルムービーを公開
トライエースのご厚意により、今回の記事で解説した表現技法を分かりやすく動画の形でまとめたムービーを提供していただいた。内容には一部、ゲームのストーリー展開に関わる内容も含まれているので、ゲームをプレイ中のユーザーはその点を理解した上で楽しんでいただきたい。
(C)2006 SQUARE ENIX CO.,LTD. All Rights Reserved. /Developed by tri-Ace Inc.
□トライエースのホームページ (2006年9月11日) [Reported by トライゼット西川善司 / Photo by 石田賀津男]
また、弊誌に掲載された写真、文章の転載、使用に関しましては一切お断わりいたします ウォッチ編集部内GAME Watch担当game-watch@impress.co.jp Copyright (c) 2006 Impress Watch Corporation, an Impress Group company. All rights reserved. |
|