オススメ機能
Twitter
お気に入り
記事履歴
ランキング
TOP
PCゲーム
Xbox One
PS3/PS4
PSV
Wii U
3DS
スマホ
VR
ハードウェア
アーケード
アーケード
インタビュー
イベント情報
格闘ゲーム
カードゲーム
シューティング
リズムゲーム
その他
ゲームカタログ
アナログ
お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
QRコードでLINEの4Gamer
アカウントを友達登録すると
月〜金の週5回,21時に厳選
ニュースをお届けします!
※購読にはLINEアプリが必要です
特集記事一覧
注目のレビュー
注目のムービー
印刷2014/07/26 00:00

連載

西川善司の「試験に出るゲームグラフィックス」(2)「GUILTY GEAR Xrd -SIGN-」で実現された「アニメにしか見えないリアルタイム3Dグラフィックス」の秘密,後編

GUILTY GEAR Xrd -SIGN-
 連載2回めとなる今回は,アークシステムワークスが開発した格闘ゲーム「GUILTY GEAR Xrd -SIGN-」解説の後編をお届けしたい。前編の最後で予告したとおり,今回は,アニメにしか見えない3Dグラフィックスで2D格闘ゲームらしさを生むために採用された細かい工夫を中心に紹介していきたいと思う。


デフォルメされるジオメトリ,差し替わるジオメトリ


 GUILTY GEAR Xrd -SIGN-のグラフィックスが,セルアニメ風に見えるのは,何もトゥーンシェーダを採用したからだけではない。それ以外の部分にちりばめられたユニークな工夫も大きな役割を果たしている。

バトルシーンより。カイとソルがイリュリア城下町で対峙しているところだ。手前にはホテル,左奥には街路が見える
GUILTY GEAR Xrd -SIGN-
 まず,何気なく見ているGUILTY GEAR Xrd -SIGN-のバトルステージ。さまざまな建造物や背景オブジェクトが立ち並んでいて,それらが「描き割りの一枚絵」ではなく3Dモデルによって表現されていることは,ユーザー目線からでも容易に判別がつくだろう。
 闘い合う二人のキャラクターを左右に移動させたとき,近景が左右に大きく動き,遠景はゆっくり左右に動く。2D格闘ゲームグラフィックスでは見慣れた背景表現だが,実はここに,とんでもない秘密が隠されている。
 下のスクリーンショットを見てほしい。

イリュリア城下町の背景から,建物のメッシュを単体で表示し,カメラを動かしたところ。なかなか衝撃的なグラフィックスだ
GUILTY GEAR Xrd -SIGN- GUILTY GEAR Xrd -SIGN-

GUILTY GEAR Xrd -SIGN-
 そう,シーン中の近景,建造物などの背景3Dモデルにはかなり強烈な遠近パースがつけられ,奥を絞るようにしたモデリングがなされているのである。
 一方,一定距離以上離れた遠景の3Dモデル群は,パースが付けられてはいないものの,実寸スケールよりも大幅な小型化がなされている。

 こうしたモデリングと配置には理由がある。
 パースをつけずに正寸スケールでモデリングしてしまうと,シーンの奥行き感を表現できなくなってしまうのだ。
 遠景オブジェクトを縮小しているのも同じ理由によるが,わざわざ小さくしたうえでそれほど遠くない距離に置いてあるのは,バトルステージで闘い合っているキャラクターが左右へ移動するのに合わせて,遠景オブジェクトも左右に動かすためだ。

 リアルスケールで,建造物がここまで小さくなるような位置に置くとすると,相当な遠方に配置しなければならない。現実世界でも経験があると思うが,遠方景色は自分が左右に数メートル動いたところでほとんど動かない。こうなってしまうと2D格闘ゲーム的な背景の動きではなくなってしまうので,よく動くよう,小さな3Dモデルを近場に配置したというわけだ。


 以上の説明を読むと,今度は,バトル中に見えない手前側のゲーム世界がどうなっているのか気になる人もいるのではなかろうか。この点は石渡氏が次のように説明してくれた。


石渡太輔氏(ゼネラルディレクター)
石渡太輔氏:
 K.O.シーンでは,カメラが周回して,通常時でいう手前側のほうにもカメラが向きます。なので,手前側も,カメラから見える範囲は背景オブジェクトをちゃんと設定しています。

 あと,カットシーンの場合は,一部で2Dの描き割り背景を使っていたりもしています。カメラワークに応じて,描き割りの2D背景をダイナミックに動かしたいとき,2D背景側自体をテレビアニメ的な論法で処理してしまっているところもありますね(笑)。

ドラマシーン(左)と,それを別アングルから見たカット
GUILTY GEAR Xrd -SIGN- GUILTY GEAR Xrd -SIGN-


イリュリア城内でカメラを引いてみたところ。バトルシーンにおける視点の手前側もモデリングされていることが分かる
GUILTY GEAR Xrd -SIGN-
 背景関連で1つ補足すると,背景の群集キャラ(モブキャラ)は,バトルステージから近いものは3Dモデリングされているが,遠景のものは“パラッパラッパー的”な,アニメーションするビルボードになっている。

 さて,バトルに登場するメインキャラクターが約4万ポリゴンでモデリングされているというのは前編で紹介したとおりだが,一般的な3Dグラフィックスベースのゲームキャラクターとは少々違った動かし方がなされている。

ファウストの開襟(?)は追加パーツで実現
GUILTY GEAR Xrd -SIGN-
 一般的な3Dグラフィックスにおいて,ゲームキャラクターは,モデル内部に仕込まれたボーンを動かし,これに外皮となる3Dモデルを追従させるような仕組みでポーズ取りや変形,あるいはアニメーションが実装される。
 GUILTY GEAR Xrd -SIGN-においても,基本的なアクションは,そうした手法によっているのだが,たとえば髪の毛が刃物の形状に変形するような攻撃アクションではそうもいかないので,そうした特殊ケースでは,3Dモデルの一部の部位をすげ替えることで対処しているそうだ。

GUILTY GEAR Xrd -SIGN- GUILTY GEAR Xrd -SIGN- GUILTY GEAR Xrd -SIGN-
髪の毛が変形するミリアの場合,追加パーツが用意されており,それを差し替える格好になる
GUILTY GEAR Xrd -SIGN- GUILTY GEAR Xrd -SIGN-

 その理由を坂村氏は次のように述べている。


坂村英彦氏(アートディレクター兼チーフアニメーター)
坂村英彦氏:
 各キャラクターの動きは,セルアニメ的でダイナミックな表現ができるように,独特な制御を行っています。一般的な3Dゲームグラフィックスとは異なり,GUILTY GEAR Xrd -SIGN-のキャラクター達は,顔面上の目と鼻,そして口が“大移動”しますし,現実の人間ではあり得ないような部位が伸縮したり肥大化したり,逆に縮小したりるすことも起こります。

 プレイヤーが見ることになるゲーム画面上で格好いいこと。これがGUILTY GEAR Xrd -SIGN-のグラフィックスにおける正義なんです。

一撃必殺技のカットシーンにおけるベッドマンを用いた例。従来どおり,どの方向から見ても無難な見た目になるよう表情を作ると(左),初期イメージの設定画(中央)どおりの表現を行えないことが多い。そこで,リグを駆使して目鼻口の位置や角度を調整し(右),「カメラから見てイメージどおりになる」ことだけを追求することによって,キャラクターの効果的な演出を実現している
GUILTY GEAR Xrd -SIGN- GUILTY GEAR Xrd -SIGN- GUILTY GEAR Xrd -SIGN-


 GUILTY GEAR Xrd -SIGN-で登場するキャラクターには,一般的な3Dゲームキャラクターと同様のボーンが仕込まれてはいるが,そのボーンの動かし方や制御の仕方には,かなり高い自由度を与えている。
 たとえば眼球は,顔面内をかなり自由に移動し,口は,顔面の体積が変わるほどの変形や開閉が可能になっている。手足も自在に伸び縮みするのだ。これが,我々の見慣れた「アニメ的でアグレッシブな表情表現」を実現するために実装されているのである。
 コミカルな「まん丸目玉」,怒りを表すマークなどといった漫画的な記号表現は,さすがにこのシステムでも対応できない。そのため,そうした漫画的な表現が必要なときは,部位パーツの差し替え,あるいは部位パーツの付加,はたまたテクスチャ表現という方策で対応しているとのことだった。


石渡氏:
 手足を突き出したような一部のポージングは,画角調整だけだと,ダイナミックな表現になりませんでした。突き出された手を大きく見せようとして,遠近感を強調するために画角を広げると,奥側にある顔が小さくなりすぎたりします。
 そこで手を大きく見せたい場合は,3Dモデル側の腕を伸ばして手をカメラ側に近づけています。結局,GUILTY GEAR Xrd -SIGN-では,カメラの画角は変えず,いわばキャラクターモデルに画角を付けているわけです(笑)。

ファイナルカット(左)と,それを実現するために行われた“体格変更”の種明かしショット(右)
GUILTY GEAR Xrd -SIGN- GUILTY GEAR Xrd -SIGN-

坂村氏:
 とはいえ,こうした「キャラクターモデルの部位ごとに拡大縮小やボーンを伸縮させる」表現は,標準状態のUE3では実現ができませんでした。

家弓拓郎氏(リードプログラマー)
家弓拓郎氏:
 格闘ゲームにおいて,アクション次第で部位や姿勢の強調を行うことは日常茶飯事です。パンチを繰り出すアクションでは拳を若干大きく表現しますし,キックでは足を伸ばすこともあります。こうした表現を行うために必要な,ボーンに対するx軸,y軸,z軸個別の拡大縮小処理系に,UE3は対応していなかったのです。

山中丈嗣氏:
 UE3はそもそもフォトリアル系ゲーム制作のために作られたようなゲームエンジンですからね。「ボーンを三軸個別に自在に拡大縮小する」という非現実的な表現は必要とされなかったのかもしれません。

本村・C・純也氏:
 標準状態のUE3では,1つのパラメータを三軸同時に適用してボーンを拡大縮小する表現には対応していました。これを用いると,デフォルメされた二頭身キャラのような表現はできるんですけどね。

通常頭身と二頭身キャラ(参考)。なお,ここで示された二頭身キャラは,本文で語られている「3軸を同時に拡大縮小して実現するUE3の基本機能」ではなく,アークシステムワークスがUE3に対して行った「3軸を個別に拡大縮小させる機能拡張」によって実現されたものだ
GUILTY GEAR Xrd -SIGN- GUILTY GEAR Xrd -SIGN-
部位拡大の実使用例。左が製品版で使われたファイナルカットで,右は部位拡大を適用していない状態だ
GUILTY GEAR Xrd -SIGN- GUILTY GEAR Xrd -SIGN-


 「GUILTY GEAR Xrd -SIGN-の効果的なアニメーション制作を行うためには,ボーンを三軸個別に拡大縮小できる仕組みが絶対必要」とアニメーション担当の坂村氏が主張。リードプログラマーの家弓氏はこれに半ば折れる形でUE3を改造し,この仕組みを実装したという。氏は「ソースリストが提供されているUE3だからこそできたこと」と振り返っていた。
 当初,「ボーンを多めに作り込み,ボーン自体を移動させるなどして対処できるのではないか」と家弓氏は考えて坂村氏に提案したのだが,坂村氏はこれに反論したとのことだ。


坂村氏:
 確かに,モンスターの部位肥大化表現や伸縮表現は,一部の未改造版UE3採用タイトルで実装されてはいました。「一部のキャラクター」だからそれで許容できたんでしょう。
 しかしGUILTY GEAR Xrd -SIGN-の場合は,登場キャラクター全員にこの表現が必要ですし,なにより手足全部にこの仕組みを入れた場合を試算してみたところボーン数が4倍に膨れあがってしまうことが判明したんですよ。

家弓氏:
 この試算を知って私が折れる格好に(笑)。4倍というのは,やはりパフォーマンス的につらいですからね。


 結果,家弓氏はUE3を改造し,ボーンの三軸個別拡大縮小処理に対応させたのだった。さらに,実際の制作段階へ移行するまでの間に,この仕組みを使って手足などを手軽に拡大縮小・伸縮自在に調整できるカスタムインターフェースも制作。かくして,肢体操作においては,このカスタムインターフェースを用いながら手足の拡大縮小・伸縮の調整を行いつつのモーション作成ができるようになったのであった。

モーションの設定作業中にプレビュー画面から手足の拡大縮小を行っている例。「SoftImage」上から,小型のウインドウ内で数字を上げ下げするだけで任意の軸のスケールを変更できるよう,リグがセットアップされている
GUILTY GEAR Xrd -SIGN- GUILTY GEAR Xrd -SIGN-


家弓氏:
 苦労して搭載した「ボーンの三軸個別拡大縮小処理系」ですが,後に登場したUE4では標準機能で実装されました。まぁ,我々以外からも「付けて欲しい」という要望が多く寄せられたんでしょうね(笑)。


3Dモデリングされたエフェクト群


 繰り出した必殺技等に付随するエフェクト類も,一部の例外を除けば多くのものが3Dモデリングされている。
 具体的には煙,火炎,各種閃光,ガードエフェクトなどだ。


石渡氏:
 フィニッシュ時など,一部にカメラが3D的に動く演出がありますが,ここでエフェクトがビルボードでペラペラだと格好悪いと感じたので,思い切ってエフェクト群も3Dモデルにしてみました(笑)。


 これは「言うは易く行うは難し」で,実際問題,かなりの力ワザで実装されている。
 たとえば,下に示した煙エフェクトなどは,ちょっとした流体アニメーションのように見えるが,実は,アーティストの手によって1コマ1コマモデリングされているのだ。舞い上がって膨らみ,破裂するような爆煙エフェクトも,そう見えるようにアーティストが1コマ1コマ作っているのである。

煙エフェクト(左)。モデリングされた3Dデータなので,カメラを動かしてみると,見栄えが変わる(右)
GUILTY GEAR Xrd -SIGN- GUILTY GEAR Xrd -SIGN-
ジャンプ時に生じる煙のワイヤーフレーム表示
GUILTY GEAR Xrd -SIGN-


ザトーの影溶けエフェクトモデル。モーション付け前の素体だ
GUILTY GEAR Xrd -SIGN-
本村氏:
 当初は,複数の球モデルをボーンでつないだものを動かすような実験もしたのですが,納得のいくものにならず……。結局は力ワザになってしまいました(笑)。
 影を操るザトーなどは,技によってはドロリと影に溶ける動きがあるのですが,途中まではザトーのキャラクターモデルを変形させていって,途中から別に用意した「影溶け」エフェクトモデルに差し替えていたりしますね。

こちらがモーション付けされた完成版影溶けモデル(左)。右は,3Dモデルであることの証明として,角度を変えてみたところ
GUILTY GEAR Xrd -SIGN- GUILTY GEAR Xrd -SIGN-


 ちなみに,いま紹介したエフェクト群のうち,煙などの純然たるエフェクト類にライティングはなされておらず,陰影などはテクスチャによる焼き込みとなっている。輪郭線を出す処理も適用されていない。炎や閃光などの発光系エフェクトは,光って見えるだけで,実際には周囲を照らしていないが,これは,2D格闘の場合,条件によってエフェクトの見映えが変わってしまうと,プレイ感覚に支障が出る懸念があるためだ。
 一方,ザト―の影溶けなど,キャラクターに付随するパーツ的なエフェクトに対しては,ライティングが行われている。3Dエフェクトの採用は,今後も慎重に検討していきたいとのことだった。


セルアニメらしい動きを作り出す

リミテッドアニメーション


 いまや,トゥーンシェーダという技術名はゲーマーの間でかなり一般化している。にもかかわらず,GUILTY GEAR Xrd -SIGN-を初めて見た人は,本作のグラフィックスが3Dベースだと見抜けないケースが少なくないという。その理由の1つに,GUILTY GEAR Xrd -SIGN-のグラフィックスが「ヌルヌルとスムーズに動かない」というのがあるようだ。

 ドリームキャストの「ジェットセットラジオ」(セガ,2000年)しかり,前編でその名を挙げた「XIII」(Ubisoft Entertainment,2003年)しかり。過去にもトゥーンシェーダベースのゲームグラフィックスは多数存在したが,3Dグラフィックスなので,毎秒30コマなり60コマなりでスムーズな動きを見せていた。その理由は当たり前で,あくまでもベースはリアルタイム3Dグラフィックスであり,それをアニメ風のライティングとシェーディングにしているだけだから,キャラクターが動けば動画像として毎フレーム生成されるのはまったくもって当然の話なのである。

 しかしアークシステムワークスは,「このスムーズさはギルティギアのテイストには合わない」と判断した。
 知っている人もいるとは思うが,テレビアニメなど,セルベースのアニメは毎秒8コマや毎秒12コマ程度で成り立っている。なので,テレビアニメなどを見ていて,作画されたキャラクターとCGベースのメカが同居したシーンに遭遇したとき,毎秒8コマで動くキャラクターと毎秒60コマで動くメカで動きのスムーズさに違いがあると気づき,そこに違和感を覚えた人もいることだろう。
 時折テレビアニメのオープニングソングやエンディングで見かける,フルCG化されたキャラクターが舞い踊るタイプのものも,アニメ本編とは違う,ヌルヌルした動きになっていて,妙な違和感を覚えたことがあるかもしれない。もしかすると,セルベースのアニメに見慣れている人ほど,アニメ調の絵柄がスムーズに動くことに違和感を抱くのかもしれない。

 この点について,坂村氏は次のように述べている。


坂村氏:
 結局我々は,毎秒60コマでアニメーションできる3Dグラフィックスシステムを採択しながら,あえて作画アニメ的なコマ割りを採用しました。GUILTY GEAR Xrd -SIGN-のカットシーン(=イベントシーン)では,セルアニメの毎秒8〜12コマより若干多い,毎秒15コマを基本としています。
 バトルシーンにおけるモーションは技性能と直結しますから,「1つのポーズを何フレームで表示するか」は,仕様に合わせて,スクリプト上でコマごとに個別指定しています。各ポーズの表示フレーム時間は一定ではなく,技ごとに「2F, 3F, 3F, 1F, 1F, 2F, 2F, 3F, 4F」(※筆者注:1F≒16.67ms)といった感じですね。


 アニメ業界では,ディズニーなどのように毎秒24コマすべてを作画してアニメーションさせるものを「フルアニメーション」と呼び,同じコマを連続して表示し,毎秒8〜12コマ程度で動かすものを「リミテッドアニメーション」と呼ぶのが普通だが,あえて粗いコマ割りにしてあるGUILTY GEAR Xrd -SIGN-のアニメーションは,まさにリミテッドアニメーションシステムということができるだろう。

 リミテッドアニメーションでは,普通の3Dゲームグラフィックスにおけるアニメーションとは制作スタイルが若干異なる。
 一般的な3Dゲームグラフィックスにおけるキャラクターアニメーションは,キャラクターモデル内部に仕掛けたボーンの「軌道」を作り込んでいくイメージだ。軌道の制作には高次曲線関数(Fカーブ)などを用いたり,あるいはモーションキャプチャで取得したデータを基にしたりする。
 それに対し,GUILTY GEAR Xrd -SIGN-のリミテッドアニメーションは,キャラクターを少しずつ動かして,1コマ1コマポーズを作り込んでいくものとなっている。いわばクレイアニメのような流れだ。


坂村氏:
 最初期はFカーブを用いて毎秒60コマのフルフレームでキャラクターを動かし,その60コマのアニメーションから間引いていくような制作手法も試してみました。ただ,そうすると,ただの「コマ落ちした3Dグラフィックス」にしか見えなくて(笑)。



 実際の制作においては,まず絵コンテが作られる。
 この絵コンテには,たとえば必殺技なら「全体が60フレームで構成される」「30フレームめにはパンチが繰り出されていて,このタイミングから攻撃判定が発生する」といった,格闘ゲームとしての仕様も設定されている。そして,この絵コンテを渡されたアニメーターが,「フレームごとのキャラクターモデルのポーズ」を決定していくのだ。

メイの必殺技に関する絵コンテ。20枚で54フレームなどといった情報も書かれている
GUILTY GEAR Xrd -SIGN- GUILTY GEAR Xrd -SIGN-

 アークシステムワークスのアーティストは,2D格闘ゲームにおけるアクション作り込みのプロなので,そうしたキャラクターのポージングはお手のものなのだろう。「Fカーブなどによる算術的な動き生成に頼ることはしていない」とのことだった。


 リミテッドアニメーションなのに,ゲームの仕様が毎秒60フレーム表示とはどういうことかというと,「映像仕様として毎秒60フレーム」という意味で,アニメーションとしてのフレーム更新レートは,前述したとおり「作り込まれた表示フレーム間隔」になっている。
 たとえば,あるポーズが2F時間として設計されている場合,毎秒60フレーム(=1フレームあたり約16.67ms)の表示システムにおいては,同じポーズが33.33ms(=16.67ms×2F)間表示されるということだ。

 一方で,キャラクターがジャンプしたときに生じる放物線軌道の動きや飛び道具などの動きは60fpsで更新されている。また,あらためて述べるまでもないとは思うが,プレイヤーのコマンド入力のタイミングは60分の1秒間隔で受け付けられる。


石渡氏:
 カットシーンでは見栄えが良くなるよう,コマごとにポージングしていくとき,キャラクターモデルの各部位の位置や,そのキャラクター専用の光源位置などを,1コマ1コマ調整しています。カメラがキャラクターを回り込むようなアニメーションの場合,フレームごとに鼻の位置を調整していたりもしますよ(笑)。


 GUILTY GEAR Xrd -SIGN-の独特なグラフィックス表現は,先進技術だけでなく,こうした熟練のアニメ的な絵心センスの積み重ねがなければ実現しなかったに違いない。



ゲームシステムを2D格闘らしくするための工夫(1)

〜衝突判定の設定と3D的な見栄えの吸収

山中丈嗣氏(ディレクター)
 3Dグラフィックスを採用しつつ,その見映えを2Dっぽくするために採用したさまざまな努力は実り,素人目に画面ショットを見る限りでは「2Dグラフィックス」と判断されるに違いないというレベルにまで漕ぎ着けた。
 しかし,開発チームはまだ満足せず,「ゲームプレイ感覚を2D格闘ゲームっぽくする」ためにさらなる改良を行うのであった。このあたりについて,山中氏は次のように振り返っている。


山中氏:
 「2D格闘ゲームとしての衝突判定データ」は,我々が手がけてきた歴代の2D格闘ゲームと同じように,2Dの矩形領域で設定していきました。GUILTY GEAR Xrd -SIGN-は,グラフィックスは3Dベースでも,ゲーム性は2D格闘ゲームそのものですから,一般的な3Dゲームのような,球体や立方体,カプセル形状といった,立体的な衝突判定の仕組みは採用していません。


アークシステムワークス内で「コリジョン設定ツール」と呼ばれるツール。衝突は,これまでの2D格闘ゲームと同じように,矩形でとる格好となっている
GUILTY GEAR Xrd -SIGN-
 衝突判定領域,具体的には被攻撃領域(=攻撃を受けたらダメージを受ける領域)と攻撃領域(=敵に触れたらダメージを与えられる領域)の設定には,前編でも軽く触れたとおり,使い慣れた社内ツールを用いたという。GUILTY GEAR Xrd -SIGN-においては,リミテッドアニメーションシステムによって作り出されたキャラクターのモーションにおける1つ1つのコマを2Dグラフィックスとして見なし,そのコマに対して,社内ツールを用い,2Dとしての衝突判定領域を設定していったというわけである。

キャラクターの見栄えに対して何の手当もしていない例(上)。画面左端と中央とでソルの見え方が変わってしまっている。下はその衝突判定領域を表示したところで,見事にズレてしまった
GUILTY GEAR Xrd -SIGN-
GUILTY GEAR Xrd -SIGN-
 ただし,ここには1つ課題がある。
 3Dグラフィックスというものは,視点から見た視界を四角形の画面で切り取って表示した結果だ。しかし,そもそもの話として,我々が見ている視界は,意識するしないにかかわらず,球面の内壁に展開されているものになっている。
 そこで問題となるのは,「球面内壁状の視界」を四角形に投射したときの見え方だ。レースゲームで,自車の後ろから視界内に飛び出してきた車が,自車位置側面付近にきたとき,変に間延びして見えたことがあるかもしれないが,あれは,地図でいうところのメルカトル図法のように,画面外周付近が引き伸ばされてしまった弊害からるくるものである。
 実際,GUILTY GEAR Xrd -SIGN-でも,なんの工夫もすることなくキャラクターを描画すると,画面内の左右端でキャラクターはやや太って見え,中央にくるとやや痩せて見える傾向が確認されたのだそうだ。それを放置してしまうと,前述した「2Dデータとして設定した衝突判定領域」は,キャラクターの画面内位置によってずれてしまうことになる。

 このズレを解消するためには,キャラクターがいる画面内の位置に応じて,衝突判定領域を適宜調整するか,あるいはキャラクターがいる画面内の位置によって生じる“太り痩せ”を抑え込んで,作り込んだ衝突判定領域と常に一致させるかのどちらかを選択する必要がある。

 GUILTY GEAR Xrd -SIGN-開発チームは,この二択から,後者のアプローチを選択した。2D格闘ゲームの場合,闘い合うキャラクターが画面の左右や中央に位置したからといって見た目の大きさが変わってしまっては困るから,当然といえば当然の選択だ。
 ちなみに,3Dグラフィックスベースの2D格闘ゲームとして先達であるストリートファイターIVシリーズも,GUILTY GEAR Xrd -SIGN-と同じアプローチを選択している。

 さて,実際の“太り痩せ”調整は,3Dモデルを2D画面に描くときに行う「3D→2D射影」手法の工夫によって行われた。
 3D→2D射影には,近いものが大きく,遠いものが小さく見える「透視投影」と,そうした違いの生じない「平行投影」(正射影)があるが,GUILTY GEAR Xrd -SIGN-では,透視投影を3割程度,平行投影を7割程度の強度の強度で組み合わせた「ハイブリッド投影」を採択したそうだ。
 これにより,キャラクターが左右端に近づくほど太る事態も,中央付近で痩せてしまう事態もが抑制されるようになり,画面のどの位置でもほぼ一定した大きさにすることができたのだった。


石渡氏:
 厳密には,同様のハイブリッド投影は縦方向にも適用すべきなんですが,(適用しなくても)横方向ほどは致命的にならず,テストプレイヤー達も違和感を覚えていないとのことでしたので,導入は見送っています。

GUILTY GEAR Xrd -SIGN- GUILTY GEAR Xrd -SIGN-
透視投影100%の画面(左)とその衝突判定領域
GUILTY GEAR Xrd -SIGN- GUILTY GEAR Xrd -SIGN-
平行投影100%の画面(左)とその衝突判定領域
GUILTY GEAR Xrd -SIGN- GUILTY GEAR Xrd -SIGN-
透視投影30%,平行投影70%で組み合わせた最終版(左)とその衝突判定領域

石渡氏:
 もう1つ導入しなくてはならなかったのが,二人のキャラクターが重なるような状況での処理系です。
 ドット画(=スプライト)では,上から描いたキャラクターが,下に描いてあるキャラクターに覆い被さる感じの見映えになります。これが3Dグラフィックスでは,キャラクターごとに立体的な大きさがあるので,二人の距離が近くなると,一方のキャラクターの突き出た腕が相手キャラクターにめり込んでしまったりするんです。これを回避する策の検討が必要でした。


 最終的には,攻撃側のキャラクターを描画するとき,深度(=Z)値だけを3D空間上で視点側に約1メートルほどオフセットさせることで,そうした重なりが発生しないようにしたとのこと。要するに,攻撃側キャラクターは,攻撃を受ける側のキャラとの3D的な前後関係を無視して,深度(=Z)テストに常時合格するよう描画しているということだ。

GUILTY GEAR Xrd -SIGN- GUILTY GEAR Xrd -SIGN-
深度調整前のキャラクター描画(左)とそのZバッファ(右)。2体が中央部で重なり合ってしまった
GUILTY GEAR Xrd -SIGN- GUILTY GEAR Xrd -SIGN-
深度調整後のキャラクター描画(左)とそのZバッファ(右)


本村氏:
 闘い合う二人のキャラクターですが,3D座標処理的には同一Z軸上で相対しています。描画するときにだけ介入させている工夫というわけですね。
 両腕で相手を掴んで投げるような技の場合は,投げられる側が投げる側の両腕の中に入るようにこのオフセットを切るといった調整も行っています。一部,炎のエフェクトで覆い隠してごまかしている箇所もあったりしますが(笑)。

ソルとカイが対峙している状態(左)でカメラを動かしてみたところが右のカットだ。キャラクター同士が同一の軸上にいると分かる
GUILTY GEAR Xrd -SIGN- GUILTY GEAR Xrd -SIGN-


 この処理系の実装により,ほとんどの状況で不自然さはなくなったが,巨漢キャラである「ポチョムキン」のように,奥行き方向にでかいキャラクター同士が密着したときには,めり込みが確認されるケースがあるという。ただ,「プレイに支障はない」と判断され,そこはそのままになっているとのことだった。


ゲームシステムを2D格闘らしくするための工夫(2)

〜ゲージの描画とキャラクター反転時の処理

 2D格闘ゲームとしての遊びやすさを重視した画面の作り込みは,体力など各種ゲージ類の描画でも行われている。ゲージ類は,テクスチャにレンダリングしたものを板ポリゴンに貼り付けたものだが,この板ポリゴンは,戦っているキャラクターの後ろ側に来るようなZ位置に配置されているのだ。そのため,キャラクターが高くジャンプしてゲージに重なった場合,ゲージはキャラクター達の後ろ側にくるように描かれる。
 ただし,空中に打ち上げる攻撃アクションの開始時などの,カメラアングルが変わる演出時だけは,ゲージが手前に描かれる例外はある。


本村・C・純也氏(リードモデラー兼テクニカルアーティスト)
本村氏:
 視点が回り込むような,カメラアングルが大胆に変わる演出のときは,ゲージが背景にめり込むような干渉が予見されたので,ゲージがキャラクターの後ろに来るようにした特殊処理は無効化し,ゲージ類がキャラクターの手前側に来るようにしています。

 これは「このカメラアングル演出が入っているとき,ゲームプレイ自体は一時的に中断されているので,ゲージが前面に配置されても,プレイヤーのストレスにはならない」という判断によります。

通常のバトルシーンだとゲージ類はキャラの後ろ(左),カメラアングルが変わったときは手前(右)に表示される
GUILTY GEAR Xrd -SIGN- GUILTY GEAR Xrd -SIGN-


 現実世界で,二人の格闘家が相手に対して左肩を前に出したファイティングポーズを取って向き合ったとすると,それをサイドビューで捉えた場合,右向きの格闘家は胸をカメラに見せた姿勢に,左向きの格闘家は背中をカメラ側に見せた姿勢となる。しかし2D格闘ゲームの場合,これではキャラクターが左向きか右向きかで画面上における「見た目の姿勢」が変わってしまい,プレイしにくくなる。2D格闘ゲームでは互いに左右対称で対峙してくれないと困るのだ。
 従来の2D格闘ゲームにおいて,この処理は単純にドット画として描いたスプライトを左右反転して表示するだけでよかった。では,3Dグラフィックスで実装されたGUILTY GEAR Xrd -SIGN-でも同じようにスプライト的な反転表示は行えるのか。

「GUILTY GEAR XX #RELOAD」より,2D時代のギルティギアにおける対峙の模様
(C)ARC SYSTEM WORKS
GUILTY GEAR Xrd -SIGN-
 実のところ,キャラクターモデルを左右に線対称的に反転させるだけであれば,その3Dモデルを縦軸(Y軸)に対して線対称に反転して(=「3Dモデルを構成する頂点のX座標値」の正負を入れ替えて)描画するだけでいい。もちろん,ライティングの結果も反転させるためには,前述したそのキャラ専属光源も3Dモデルの反転に合わせてクルリと反転する必要はあるが。

 このとき問題となりうるのは,一部のキャラクター衣装に描き込まれた文字だ。例えばソルのベルトには「FREE」の文字が刻まれているが,キャラクターの3Dモデルを単純に反転させた場合,文字列は鏡文字になってしまう。

 実際のゲーム画面だとここはちゃんと回避できているが,これは,反転したときに,「文字が描き込まれている部分のテクスチャマッピング用UVマップ」を切り換え,正方向に文字が常にテクスチャマッピングされるよう対処した結果だ。3Dモデルが反転したときにも,文字テクスチャだけは鏡文字にならないように,適宜,正方向に貼り付け直しているのである。

バトルシーンを使いつつ,キャラクターに寄ったところ。ベルト部分の「FREE」と,手の甲を覆う装具部などのマークに注目してほしい
GUILTY GEAR Xrd -SIGN-


GUILTY GEAR Xrd -SIGN-
ソルの文字テクスチャアトラス。地色にあたる部分がニュートラルグレーになっている
GUILTY GEAR Xrd -SIGN-
影付き文字テクスチャの実例
本村氏:
 文字のテクスチャリングにあたっては,もう1つ小技を入れていまして,「テクスチャの輝度を2倍してから,ベーステクスチャに合成する仕組み」を実装してあります。デザインしたテクスチャ輝度を0.5倍して格納してあるため,2倍にすると1.0倍になってデザインどおりのテクスチャが適用されるわけですが,このときテクスチャ画像の輝度が0.5を超過している場合は,地色より明るくなります。この仕組みをうまく工夫すると,「立体デザインの影付き文字」のような表現が手軽にできるんです。


 文字のテクスチャリングは,半透明シールのような1枚ポリゴンを,3Dモデルの表面に重ねて貼り付けるイメージとなる。プラモデルにシールやデカールを張り付けるのと同じだと考えると分かりやすいだろう。
 この仕組みはもともと,柄や下地としてのベーステクスチャと,文字用のテクスチャを分けることで,十分な解像度を確保するためだったそうだ。

 デカールに相当する文字でテクスチャを描画するとき,下地に対してどうブレンドするのかは重要なポイントになるが,GUILTY GEAR Xrd -SIGN-では,乗算ブレンドの応用となる「×2乗算」ブレンド式が使われている。
 「Dest」をベーステクスチャ,「Source」を文字テクスチャとすると,計算式は以下のとおりだ。

Dest×Source+Source×Dest=結果的に乗算したものの2倍

 この場合,テクスチャ内容比で2倍の値を下地に対して乗算することになるため,「0.5未満で暗,0.5で透明,0.5超で明」という結果が得られる。
 このブレンド手法はUE3標準だと備わっていない機能だったため,家弓氏の手によって追加実装されたとのことだった。

 影付き文字をシンプルにやろうとすると,文字の明部を表したテクスチャと影部を表したテクスチャをそれぞれテクスチャマッピングしなければならない。しかしこのテクニックなら,シングルパスのテクスチャリングで実現できるのだ。


要所で効果的に用いられる

ポストエフェクト


 近年のフォトリアル系3Dゲームグラフィックスは,多種多様なポストエフェクトが実装される傾向にある。それに対し,セルアニメのような作風がゴールとなっているGUILTY GEAR Xrd -SIGN-の場合,相対的にはあっさりしたものになっているといえるだろう。とはいえ,ポストエフェクトのパスがないわけではない。

 前編でお伝えしたとおり,GUILTY GEAR Xrd -SIGN-ではアンチエイリアシング処理としてFXAAを採用しているが,FXAAはポストエフェクトでの実装だ。また,GUILTY GEAR Xrd -SIGN-では,レンダーターゲットとしてαRGBが各16bit浮動小数点型式の64bitバッファを採用し,HDR(High Dynamic Range)レンダリング対応のパイプラインを実装しているため,高輝度部分が溢れ出すライトブルーム効果のポストエフェクトも使われている。

GUILTY GEAR Xrd -SIGN- GUILTY GEAR Xrd -SIGN-
バトルシーンより,FXAAを有効化したファイナルショット(左)と,無効化した状態のショット(右)
GUILTY GEAR Xrd -SIGN- GUILTY GEAR Xrd -SIGN-
こちらは同じくバトルシーンより,ファイナルショット(左)と,すべてのポストエフェクトを無効化したショット(右)の比較


石渡氏:
 最近のアニメでも,こうしたライトブルーム効果は普通に使われていますから,違和感はないと思います。そのほか,ディフュージョン(Diffusion)効果も,ポストエフェクトで与えていますね。

本村氏:
 ディフュージョンは,明暗がキッチリ二値に分かれる感じのアニメ画に,柔らかなテイストを加えるのに役立っています。ライトブルームが輝度値1.0以上のところにかかるのに対し,ディフュージョンは,もう少し低い輝度のところから効果が表れます。


 ライトブルームもディフュージョンも,明部がぼやっと溢れ出す効果を与えるものだが,それぞれは別系統のフィルタ処理として実装されているとのこと。具体的には,ライトブルームフィルタを適用したあと,さらにディフュージョンフィルタを適用してあるそうだ。ディフュージョンは,散乱の仕方こそ控えめながら,ある程度明るい色のところにはおおむね適用されている印象を受ける。石渡氏は,「メインの格闘ゲームパートでは,あまりボヤっとしたタッチにしてしまうと遊びにくくなってしまうので,こうしたポストエフェクトが強めにかかるのはカットシーンが中心」になると述べていた。
 マテリアルによっては,発光体としての輝度1.0以上を与えたテクスチャも設定されているとのことである。

GUILTY GEAR Xrd -SIGN- GUILTY GEAR Xrd -SIGN-
ライトブルーム有効(左)と無効(右)
GUILTY GEAR Xrd -SIGN- GUILTY GEAR Xrd -SIGN-
ディフュージョン有効(左)と無効(右)
GUILTY GEAR Xrd -SIGN- GUILTY GEAR Xrd -SIGN-
発光体テクスチャが適用されているラムレザル(左)とポチョムキン(右)


おわりに


 以上,GUILTY GEAR Xrd -SIGN-で採用されているユニークなグラフィックス技術を,2回に分けてチェックしてきた。
 できあがった最終のゲーム画面を見るだけだと,あまりにも2Dグラフィックスとして自然であるために,3Dグラフィックスベースであることに気がつかないプレイヤーも多そうだ。

 実際,開発側としても,最初こそ「本当に3Dグラフィックスシステムで2D格闘ゲームグラフィックスを再現できるのか」と心配していたのだが,開発完了時には「3Dグラフィックスベースであることに気がついてもらえるか」という部分が心配になってしまったのだという。開発チームとしてはもう少し「3Dグラフィックスならでは」の演出をゲームシステム側に盛り込んでいきたかったが,アーケードゲームとしては,やはり「2D格闘ゲームとしての遊びやすさ,違和感のなさ」を優先させるべきということで,現在の状態に落ち着いたのだそうだ。
 発売の予定されているPS4&PS3版では,そうした「3Dグラフィックスならでは」なオマケ要素が盛り込まれることに期待したい。

GUILTY GEAR Xrd -SIGN-

 なお,開発チームとしては,今回のGUILTY GEAR Xrd -SIGN-プロジェクトを通じて,「3Dグラフィックスを用いた2Dグラフィックス表現」における大量のノウハウを蓄積ができたとのこと。同時に,この方式にはまだ未開拓の表現領域があると実感しているそうで,今後もこの系統で技術開発を行い,次回作以降に役立てていきたいとのことだった。

 確かに,3Dグラフィックスの研究分野には「NPR」(Non Photo Realistic)表現や,「スタイライスドレンダリング」(Stylized Rendering)など,非写実的分野があるにはあるが,日本のアニメ風に特化したものはまだまだ少ない。この分野で開発を行っていくには,日本のアニメにおけるスタイルを理論的に分析できる能力や知識が必要であり,その意味でGUILTY GEAR Xrd -SIGN-の開発チームは適任と言っていいだろう。

 2D格闘ゲーム以外にも応用するなど,新技術の開発だけでなく,技術の応用力も高めて,我々を再び驚かせてほしいものだ。

アークシステムワークス公式Webサイト

  • 関連タイトル:

    GUILTY GEAR Xrd -SIGN-

  • 関連タイトル:

    GUILTY GEAR Xrd -SIGN-

  • 関連タイトル:

    GUILTY GEAR Xrd -SIGN-

  • この記事のURL:
line
4Gamer.net最新情報
トピックス
スペシャルコンテンツ
注目記事ランキング
集計:07月24日〜07月25日