西川善司の3Dゲームファンのための「ガンスリンガー ストラトス」グラフィックス講座(後編)
次世代ゲームグラフィックスに求められる2大要素「物理」と「モーション」への取り組み


バイキング本社




 前編ではシリコンスタジオの国産ゲームエンジン「OROCHI」の採用経緯から、「ガンスリンガー ストラトス」のグラフィックス基本スペックやレンダリングパイプラインについて解説したが、後編では、次世代ゲームグラフィックスにおいて極めて重要な要素となると言われる物理シミュレーションの部分とアニメーション(モーション)の話題を中心に取り上げたいと思う。

【著者近影】
「日本のゲームに元気がない」とか「日本のゲームスタジオは海外市場ばかりを意識し始めている」とか言われている昨今、「ガンスリンガー ストラトス」は久々のジャパンパワー炸裂のアーケードゲームだといえるんではなかろうか。FPSじゃなくてTPSスタイルとなっているところも日本人フォーカスな作りといえる。対戦ツールとしても魅力的で、この夏盛り上がること間違いなし。「ファイナルファンタジー」シリーズからゲストキャラとか参戦してきたら面白そう。二丁拳銃のキャラはいたよな、確か。ブログはこちら



■ 影は事前生成なし。全てがリアルタイムシャドウ!

デプスシャドウ技法の概念図。拙著「ゲーム制作者になるための3Dグラフィックス技術」より

 「ガンスリンガー ストラトス」ではキャラクター達が空中高くジャンプすることができるため、その空間的な位置把握に「影」の情報は重要になる。

 また、本作では、背景のビル群が破壊されていくため、ビル群が太陽光をうけて地面に投射する巨大な影についても、事前計算で焼き込んで置くことができない。ビルがとっくに崩れてしまっているのに、ビルの影が地面に残っていたりしては不自然きわまりないことになってしまうからだ。

 そこで、「ガンスリンガー ストラトス」では、全ての影について動的な生成が求められた。そこで採用したのは、カスケード型のデプスシャドウ技法だ。

 デプスシャドウ技法はシャドウマップ技法とも呼ばれる動的影生成手法で、そのシーンの遮蔽構造分布情報となるシャドウマップをレンダリングすることから始まる。シャドウマップは光源位置から見たシーンの深度情報(奥行き情報)をテクスチャにレンダリングすることで求められ、最終的なシーンのレンダリング時には、各ピクセルの描画を、そのシャドウマップを参照して、そのピクセルが第三者に遮蔽されているか(影になるか)かどうかを判断しながら行なう。


【キャラクターに落ちるセルフシャドウ】
キャラクターに落ちるセルフシャドウ
【広範囲にわたる影生成(空撮)】
近距離と遠距離のシャドウマップ
生成される影(左)、最終映像(右)
【広範囲にわたる影生成(地上)】
近距離と遠距離のシャドウマップ
生成される影(左)、最終映像(右)

 視点から見たシーンの遠い情景、近い情景のそれぞれに個別のバッファを割り当ててシャドウマップを生成するのがカスケード型のデプスシャドウ技法になる。本連載「ロストプラネット」編に詳細を解説しているので、そちらも参照して欲しいが、「ガンスリンガー ストラトス」では、カスケード数は遠近の2枚構成としながらも、そのそれぞれのシャドウマップサイズには4,096×4,096テクセルの大容量バッファを割り当てている。

 なお、「ガンスリンガー ストラトス」では、16サンプルの近傍比率フィルタリング(Percentage Closer Filtering:PCF)を適用することで、生成した影のジャギーを低減させるソフトシャドウ処理も行なっている。

【「ガンスリンガー ストラトス」における影生成(動画)】

セルフシャドウ表現や瓦礫の影表現などに注目

鈴木孝司氏(バイキング、テクニカルプログラマー・ゲームデザイナー)。家庭用ゲーム開発、アーケードゲーム開発の双方に従事し、国内外の最新技術に造詣が深い。今作では技術全般のディレクションを担当

鈴木氏:かなり影の生成負荷は高くなってしまいましたが、これによって建物が破壊したときの破片の影までを出せています。本作では太陽光の平行光源がもたらす大局的な影生成以外に、各所で発生する動的な点光源が全方位に動的な影生成を行なっています。

 例えば、武器発射時の閃光や爆炎が放つ光が、このタイプの動的な点光源で、これが全方位の影生成をもたらす。これには「OROCHI」が有する、6面体テクスチャ(キューブマップ)をシャドウマップに利用して影生成を行なう全方位シャドウマップ(Omnidirectional Shadow Maps)機能が用いられる。

 こうした動的点光源からの影生成は、局所的な範囲に限られるので、それほど高い解像度のシャドウマップは必要ないが、ゲームの性格上、シーン中のそこかしこで発生することになるのでやはり負荷は高めだ。なお、この点光源処理は、頂点演算の負荷と、Drawcallが爆発的に増えるため、残念ながら最終的に実装は見送られている。


【点光源による全方位影生成(動画)】

ビーム砲を撃ったあとの瓦礫の影に注目。太陽光からの影と、ビーム砲の閃光からの影の両方が投射されているのがわかる




■ 開発当初は2fpsだった大規模破壊を60fpsで実現するための工夫とは?

 「ガンスリンガー ストラトス」は、実在の街を舞台に、超人的な能力を持つキャラクター達が地上や空中で激しいガンアクションを展開するゲームだが、その重要なサブテーマに「破壊のカタルシス」が掲げられている。

 ゲームフィールド上に配置されているありとあらゆるものが破壊可能となっており、それこそ木々などの植物、信号機、自動車といったものから、数十階建てのビルを丸ごと破壊することもできるようになっているのだ。

 巨大な建造物の破壊は戦略的にも意味があり、ビルに大穴を開けてそこに隠れて敵を狙撃することができる。逆に、狙撃されている立場からすれば、そのスナイパーが隠れているビルを崩してしまうことで敵を日の当たるところに引きずり出すことができる。

【「ガンスリンガー ストラトス」における破壊表現(動画)】

大きな塊として崩れて、それが互いに衝突して細かく壊れていくような重量感溢れる破壊表現は、「ガンスリンガー ストラトス」を特徴付けるビジュアルの重要な要素の1つになっている

 実際、「ガンスリンガー ストラトス」の破壊表現は非常に壮大であり、60インチの大画面にも映える。同一シーンの同一ビルであっても、着弾位置やその攻撃の当て方によっては毎回壊れ方が違うため、最近にわかに脚光を浴びつつある「ノンリニア破壊」表現を実現しているように見える。

 この、破壊システムを司っているのが、前編で少し触れているHAVOKの物理シミュレーションミドルウェア「HAVOK DESTRUCTION」になる。ノンリニア破壊表現と言っても、実際には、事前に破壊対象の3Dモデルを事前に壊れる最小単位で分割しておく必要があるのはいうまでもない。

【HAVOK DESTRUCTIONの活用(1)】
左が分割前の単純な箱モデル、右がVoronoi法で分割した後の状態
【HAVOK DESTRUCTIONの活用(2)】
分割前のビル(左)、そのワイヤーフレーム(右)
分割後のビル(左)、そのワイヤーフレーム(右)
橘川優樹氏(バイキング、プログラマー)。バイキング入社以前は証券系システムの開発に従事していたという異色の経歴の持ち主。今作では物理エンジンや破壊システム周りを担当
稲田義信氏(バイキング、プロダクションリーダー、スーパープログラマー)。尾畑氏と同じくカプコンにてキャリアを積み、多数の著名アーケードゲームの開発に携わる。今作ではメインプログラマーを担当

橘川氏:HAVOK DESTRUCTIONは、破壊前モデルから破壊後モデルの設計と調整を使い慣れたDCCツール上で行なえるプラグインツールが充実しているので採用を決めました。ですので、破壊後モデルの破壊分割粒度や分割のされ方などはアーティストさんの方で行なってもらっています。そのモデルの各部位においてそのツール上で表現したいマテリアルごとに細かなFracture(裂け目)パラメータなどを設定すれば半自動での分割が出来ます。例えば、ガラスは細かく分割、コンクリートは大きな塊で分割といったこともある程度は効率的に行なえるんです。

 開発最初期に、1つのビルを1,000個の破壊単位に事前分割して、実際にランタイムで破壊を実践するデモを行なってみたところ、わずか2fpsしかでなかったという。

稲田氏:それでも、この時の「破壊の爽快感」はインパクトが大きくて、あきらめられなかったんですよ。なので、1,000分割というのをいかに妥協せず、パフォーマンスを上げられるかという視点で改良と最適化を重ねていきました。結論から行けば、大きなビルは、今でも1,000分割で破壊します。

 2fpsから30倍のフレームレート60fpsに上げるための工夫の数々は、いかにもゲーム開発技術的なアプローチで興味深い。まず、最初から1,000個に分割して壊れるのではなく、段階的な破壊の概念を導入した。つまり、1度に破壊・分解するのではなく、まず、衝撃が発生した箇所で最初は大きな破片として壊れるようにし、その大きな破片同士が衝突しながら崩れ落ちていくことで段階的に細かい破片へ破壊していくように制御したのだ。


【フラクチャー】
壊れはじめのリアルな破片(フラクチャー)モデル(左)と、そのワイヤーフレーム(右)
【デブリ】
ある程度破壊したら、共通破片モデル(デブリ)に置き換えてしまうことで処理や描画を高速化(左)、そのワイヤーフレーム(右)

 さらに、細かい破片に破壊していったときに、ある程度の大きさの破片になってからは消失させたり、あるいは、本作の破壊表現で共通的に利用される破壊エフェクトに差し替える工夫を盛り込んでいる。そうした破壊エフェクトになれば、表示される破片モデルの1つ1つは重複しだすので、描画時にはインスタンシングが利用できるようになってジオメトリ負荷を低減させることができる。

 また、大きな破片では、衝突をちゃんとその破片モデルの形状に基づいて取らなければならなくなるが、破壊エフェクトに移行させてしまえば、簡略化されたパーティクル的な衝突処理に移行させられる。これはCPU負荷の低減に大きく貢献する。

橘川氏:こうした工夫の数々で、2fpsになってしまった1,000分割破壊実験時に優るとも劣らぬ大規模な破壊表現を60fpsで実現することができました。なお、自動車などの一部の大道具オブジェクトはパーツ分解破壊は行なわれず、破壊エフェクトを発生させたあと、破壊後のモデルに置き換わるのみです。破壊表現は「曲がって破壊する」というような、進化の余地はまだ残されているとは思いますね。

【「ガンスリンガー ストラトス」における破壊表現】
破壊前のビルとそのワイヤーフレーム
破壊途中のビルとそのワイヤーフレーム
破壊後のビルとそのワイヤーフレーム

 「ガンスリンガー ストラトス」では、もう1つ、HAVOKの物理シミュレーションミドルウェアとして「HAVOK CLOTH」が利用されている。これは基本的には頂点単位の物理シミュレーションとして作用し、各キャラクター達の衣服や頭髪の挙動制御に応用されている。

【HAVOK CLOTHの活用(動画)】




HAVOK CLOTHの実行はGPUではなく、CPUの方で行なわれている。衣服への活用が中心だが、長髪の挙動制御にも応用されている




■ ド派手で格好いいアクションを支える「差分モーション」技術とは?

 「ガンスリンガー ストラトス」において、プレイヤーが常時眺めることになるのは、プレイヤーキャラクターのアクションになる。そして同じくらい意識を集中させて見ることになるのは、攻撃対象の敵キャラクターだ。性別や体格の差はあるにせよ、登場キャラクターは、我々に馴染み深い人間キャラクターなので、より自然でなければならないし、その上でゲームとして面白みのある派手さも要求される。機体がほとんど変形しない戦闘機による空中戦ではなく、肢体が変形する人間による空中戦となるので、「モーション」や「アニメーション」のクオリティは、本作のビジュアル面において重要なウエイトを占めることになる。

奥井健氏(バイキング、癒やし系プログラマー)。バイキング以前はバンダイナムコゲームスで家庭用、アーケードの著名タイトルの開発に従事。今作では、モーション、カメラ制御を担当

奥井健氏:ダメージ(やられ)モーションの一部などにはモーションキャプチャーを適用したものもありますが、基本的にモーションはアーティストによる手付けでの制作となっています。

 「ガンスリンガー ストラトス」では、多数の武器が登場し、ほぼ全てのキャラクターが人型とはいえ、その数も多い。そのため、全キャラクター用のモーションを、全パターン手付けで作り込んでいくことは現実的ではない。そこで、本作では、ユニークなプロシージャル・モーション(アニメーション)生成技術を開発して組み込んでいる。それが「差分モーション」という概念だ。

 基準となる直立で歩いているモーションと、上半身が傾いているモーションがあったとして、両者の差分をデータ化する。このように、基準モーションから、変化分だけを抽出したこのモーションデータを開発チームでは「差分モーション」と呼称していた。

 上半身が傾いている動作の差分モーションを直立で歩いている基準モーションに対して加算すれば上半身を傾けながら歩いているモーションの生成が行なえる。「当たり前のことだ」と思うかも知れないが、この差分モーションを、今度は直立姿勢で走っている基準モーションに足したらどうなるか。そう、上半身を傾けながら走るモーションが生成できるのだ。同様に銃を構えながら走っている基準モーションにこの差分モーションを足せば上半身を傾けつつ銃を構えて走るモーションが生成できる。

 このように、差分モーションの概念は、基準モーションと組み合わせることで、多彩なモーションのバリエーションを生成したり、あるいはモーション同士を合成したりすることに役立つのだ。なお、基準モーションとターゲットモーションから差分モーションを抽出する工程は事前に行なっており、ランタイムでは、一連のプロシージャルモーション生成処理のみが行なわれる。


【差分モーション その1】
傾き
【基本走りモーション(動画)】

基本走りモーション

【傾き走りモーション(動画)】

「基本走り+傾き(差分モーション)=傾き走り」となる

 それでは、「ガンスリンガー ストラトス」で採られた手法と、いわゆる「モーションブレンド」と比較してどんなメリットがあるのだろうか。モーションブレンドとは、最も基本的なプロシージャルモーション生成処理で、2つのモーションを重み付けを行なって合成する技術だ。これを使っても同様なことができるように思える。ではなぜ「ガンスリンガー ストラトス」におけるキャラクターモーションでは「差分」を選択したのだろうか。

稲田氏:モーションブレンドは、例えばモーション1とモーション2があったとすれば、基本的にはその2つのモーションの間の動きしか取ることが出来ません。しかし、差分モーションの場合は、その差分モーションを加算する際に100%以上の比率を用いることで、例えばモーション2の動きを超えるような表現も可能なんです。

 例えば、正面方向を0度として、腕を90度広げる動きを差分モーションで表現したとする。腕を120度広げる必要がある場合、差分モーションの概念ならば、腕を90度広げる差分モーションに対して少しバイアスを掛けて適用するだけで実現できる。もちろん、やり過ぎは禁物だが。

 実際に、同じ事をモーションブレンドでやってやれなくもないだろう。しかし、結局、概念的には差分モーション的な処理を行なうことになる。そうした差分処理をランタイムでリアルタイム処理するよりは、事前に差分モーシヨンとして管理していた方がスマートだし負荷も低い。

奥井氏:この差分モーションの概念上で、1キャラクターに付きおよそ10種類くらいのモーションが常にブレンドされています。具体的には同時に10個のモーションが並列再生されていて、そのうちの上半身だけ使ったり、下半身だけ使ったり……といった感じですね。

【差分モーション その2】
構え(正面)
構え(上45度)、構え(下45度)
構え(左)、構え(右)
構え(左後)、構え(右後)
【エイミング】

エイミングのモーションは、正面、上下左右、右後、左後の7つの構えの差分モーションを、ブレンド率を調整して合成して生成している。銃撃時のリコイル・モーションもブレンドし、「構えつつ走りながら撃つ」という複雑な状況のモーションについても、不自然にならないように動的にプロシージャル生成している

「ガンスリンガー ストラトス」のガンデバイス

 「ガンスリンガー ストラトス」で、こうした複雑なモーション制御を採用したのにはまだ理由がある。その1つは、本作では、2丁のガンデバイスを使うことに起因している。

 本作では、両手に持った二丁拳銃で、それぞれ異なる場所を狙うことができるため、プレイヤーの両腕の動きをトレースするようなモーションをゲーム中のキャラクター達に適用することが求められる。その上で、跳んだり跳ねたりの地上戦×空中戦が行なわれるわけで、非常に複雑かつ多数のモーションを合成する必要に迫られたのだ。

 見かけだけの二丁拳銃や、一丁拳銃の一般的なガンシューティングゲームならば狙っているターゲットは一点ということになり、これは基本的な腕に対するIK(Inverse Kinematics:逆運動学)制御で済む。しかし、「ガンスリンガー ストラトス」のような、正真正銘のパラレル二丁拳銃のガンアクションではそうもいかなかったのだ。

稲田氏:本作は二丁拳銃で狙って撃つというゲームシステムの関係上、「攻撃を喰らいやすい」という特徴があります。攻撃を喰らってそこから「攻撃喰らいモーション」が発動して動けなくなると攻撃を受けたプレイヤーにとってはストレスが溜まります。逆に、なんのダメージレスポンスもなくケロっとされていては、攻撃を当てた側の爽快感に影響します。そこで、「ガンスリンガー ストラトス」では、攻撃を受けながらも、ある程度反撃が行なえる「ながらダメージ」というシステムを導入しています。

 この「ながらダメージ」システムは、開発途中までは、攻撃を受けたことによるラグドール表現と、攻撃を維持しようとするモーションを合成するような処理系を盛り込むことでユニークな動きの表現が実現されていたのだが、最終版では、固定のダメージモーションを全身に対して少しだけブレンドする手法に変更された。





■ 終わりに

取材風景

 「ガンスリンガー ストラトス」は、PS3、Xbox 360を遙かに超えるハイスペックなPCアーキテクチャベースのアーケードシステム上で動作するというだけでなく、家庭用ゲーム機とは異質な2丁拳銃システムを採用したゲームタイトルとなったことで、生まれたての国産ゲームエンジン「OROCHI」にしてみれば、相当、過酷なプロジェクトだったに違いない。

 開発元のバイキング側は、言ってみれば「まっさらな未知のゲームエンジン」に対し、全く躊躇することなく「ガンスリンガー ストラトス」という新ゲームの実現に向けて高いパフォーマンスを要求し、自前の独自技術や各種ミドルウェアを走らせることまでを達成してしまったわけで、そこからは「生粋のゲームデベロッパの心意気」を感じる。

 日本のゲームデベロッパーが、国産ゲームエンジン「OROCHI」上で作り上げたゲーム、「ガンスリンガー ストラトス」は、7月12日より、日本全国のゲームセンターで稼動中だ。


(C)2012 SQUARE ENIX CO., LTD. All Rights Reserved.

(2012年 8月 3日)

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