西川善司の3Dゲームファンのための「End of Eternity」グラフィックス講座(前編)
トライエースのオリジナル開発フレームワーク「ASKA」の秘密に迫る!


3月収録

会場:トライエース本社




【著者近影】
 トライエースのASKAフレームワーク(ASKAエンジン)の完成度は欧米スタジオのものに優るとも劣らないレベルに達している。「『EoE』ではそのエンジン性能が100%活用されていない」とR&Dチームは謙遜するが、今回の記事を見て頂ければ、その実力の片鱗は確かに見て取れる。トライエースはJRPGタイプのゲーム制作スタジオであるため難しいとは思うが、ASKAエンジンベースの3人称リアルタイムアクションゲームを見てみたい。こう思うのは筆者だけではないと思うのだが。筆者のブログはこちら

 トライエースは、「スターオーシャン」シリーズ、「ヴァルキリープロファイル」シリーズなどのスクウェア・エニックスから発売されている人気RPGシリーズの開発を手がけてきたことで知られており、その技術力の高さには昔から定評がある開発会社だ。最近作にはマイクロソフトと開発協力してスクウェア・エニックスから発売された「インフィニット・アンディスカバリー」や、今回取り上げるセガから発売された「End of Eternity(エンド オブ エタニティ)」などもあり、近年は独立系開発会社としての存在感も高めつつある。

 最近は特に、速いペースで大作RPGの開発を進めており、しかもその作品全てにおいて安定したグラフィックスクオリティが維持されている。実は、このハイクオリティ&ハイペースの開発体制には秘密があり、これらの最近作は全て、同社が長年開発してきたオリジナル開発フレームワーク(≒ゲームエンジン)によって開発されているというのだ。今回は、このトライエース製オリジナルゲームエンジンを紹介しつつ、その最新作である「End of Eternity」の3Dゲームグラフィックスを見ていくことにする。

 前編ではトライエースの技術の根幹となっている「ASKAエンジン」の概要紹介を皮切りに、「End of Eternity」のグラフィックススペックと、キャラクター表現における大きな特徴となっている「アウトライン・フレネル・シェーダー」を取り上げたい。後編では、影生成、モーションブラー、グローバルイルミネーション(GI)、物理シミュレーションなどなど、細かい要素の実装内容について紹介したい。



■ トライエース・オリジナル開発フレームワーク「ASKA」とは?

トライエース代表取締役社長 五反田義治氏

 トライエースは、PS2時代からゲーム開発を自社開発の汎用ゲームエンジンベースで行なってきており、いわば欧米の近代開発スタイルを、かなり早くから導入して来た開発会社だ。そのエンジンは、トライエース代表取締役の五反田義治氏(以下、五反田氏)自らが率いる研究開発部で開発を行なっており、研究開発部はGDC(ゲーム開発者会議)やSIGGRAPH(コンピュータグラフィックス関連学会)等で毎年ハイペースで発表される最新3Dグラフィックス技術をエンジン機能として積極的に実装している。

 一方で、ゲームそのものを開発するプロジェクト開発チームはその時点での最新自社ゲームエンジンの機能を用いてゲームを制作することになる。つまり、トライエースでは、比較的早いペースで最新3Dグラフィックステクノロジーをゲーム表現に応用できる体制が整えられていると言うことだ。

五反田氏「エンジン名はASKA(アスカ)といいます。tri-Ace Superlative Knowledge-based Architectureの略ですが、意味は後付けで(笑)、飛鳥時代の語感の良い地名をピックアップして各ライブラリ名に割り振っています。GDC等の海外での発表の場でもこういう和名っぽい響きはウケが良くて、覚えてもらいやすい傾向にあります」

 ASKAの開発は2005年頃から始まっており、この頃は、最後期のPS2ベースのトライエース内製エンジンを、PC、Xbox 360、PS3などを想定したプログラマブルシェーダアーキテクチャベースに対応させる移植作業がメインだったという。また、PS2時代の開発ノウハウが活かせるよう、当初は、PS2ベースのトライエース内製エンジンとの機能互換性に相当気を配ったとのこと。

 2008年ごろまでに、プログラマブルシェーダアーキテクチャならではの3Dグラフィックスフィーチャーや、プロセッサパワーを活かしたリファイン版物理シミュレーションエンジンなどの実装を一通り終え、ASKAフレームワークはひとまずの完成を見ることになる。この時点で、ひとまずの機能フィックスを行ない、多少の前後とばらつきはあるがそれ以前から「インフィニット・アンディスカバリー」、「スターオーシャン4」、「End of Eternity」などの3つの開発プロジェクトと並行してエンジンの開発を行なっていた。

 五反田氏率いる研究開発部は、2008年以降もASKAエンジンに対して積極的に最新テクノロジーの実装に励んでいるが、そうした新機能は実は前出の3プロジェクトでは使われていない。

五反田氏「この3プロジェクトまではASKAベースの第1世代タイトルと便宜上呼んでいます。まだタイトル名まではお話はできませんが、2009年以降、開発が始まったタイトルは、前出の3プロジェクトよりも世代の新しいASKAベースでの開発となっており、それらは便宜上ASKA第2世代タイトルと言うことができます」

 ASKA第1世代タイトルでは、開発者やデザイナーが初めて携わったPS3、Xbox 360プロジェクトということで不慣れな部分もあったと言うが、ASKA第2世代タイトルではエンジンの機能面だけでなく、そうした開発側の人間自体のスキル向上分も加味されるため、さらにハイクオリティなゲーム表現が実現される見込みだとか。どんなタイトルかは、いずれ発表があるはずなので期待して待っていよう。

 続いて、ASKAエンジンの技術的な側面についても触れておこう。ASKAは下図のように「IZUMO」、「YAKUMO」、「SUWA」の3つから構成されている。


【ASKAエンジン】
ASKAの構成図とツール画面

 「IZUMO」はタスク管理、メモリ管理、リソース管理を司る基本ライブラリ、「SUWA」はアニメーション制御、物理シミュレーションを司るライブラリになる。グラフィックスエンジンに相当するのは「YAKUMO」で、この部分は仕様書を見る限りでは欧米の最新3Dゲームエンジンに優るとも劣らぬポテンシャルを持っているように思える。

 特に優れているのが物理ベースのBRDFモデルシェーダ機能を備えているというところ。いずれASKA第2世代タイトルが出てきたときに改めて紹介したいと思うが、BRDF(Bidirectional Reflectance Distribution Function:双方向反射率分布関数)を簡単に説明すると、光がどう反射するかを光学現象に沿った考え方で一般化したもの。ASKAエンジンでは、代表的な材質表現を少ないパラメータでBRDFベースのライティング結果を得ることができるシェーダーシステムを実装しているのだ。今回取り上げる「End of Eternity」では髪の毛表現などに、このBRDFモデルシェーダが使われている(後述)。

【BRDFモデルシェーダの例】
ASKAエンジンのBRDFモデルシェーダの例。左(Old)の方が実際ゲームで利用されているBRDFで、右(New)は最新のASKAエンジンに搭載されている物理ベースのBRDFの結果。どちらも光源は平行光源2つと環境光1つ

 HDRレンダリングには当然対応しているが、ASKAでユニークなのは、レンダリングパイプラインそのものが、実在するカメラで撮影した効果が得られるような統合設計となっている点。一般的な3Dゲームグラフィックスのレンダリングではフォトリアルな映像を作ろうとすると、トーンマッピングやボケなどのポストプロセスをアーティストや開発者が試行錯誤して実写に似せていくプロセスをとる。

 しかし、ASKAエンジンでは、市販されている複数のカメラレンズ製品を実測して解析し、その光学特性をエンジン側でシミュレーションする仕組みが実装されているので、開発者やデザイナーはそのシーンをレンダリングする際に撮影したいレンズを選択し、あとは撮影パラメータを設定するだけで、実在のカメラで仮想空間を撮影したようなレンダリング結果が得られてしまうのだ。この仕組みは、欧米製最先端エンジンでも類を見ないユニークな先進的な仕組みだ。もし、デザイナーやアーティストがカメラに造詣が深ければ、その経験を活かして思い通りのシーン設計や演出ができることだろう。

【カメラのシミュレーション】
カメラのシミュレーション。ボケに絞り形状が現われている点に注目

【トライエースのカメラシミュレーション】
左から順にワイド(24mm) EF24-105 F4のバーチャルレンズを用いてレンダリング、標準(50mm) EF24-105 F4のバーチャルレンズを用いてレンダリング、望遠(105mm) EF24-105 F4のバーチャルレンズを用いてレンダリング

 この他、最近の3Dグラフィックス表現ではトレンドとなっている「Screen Space Ambient Occlusion」、「Parallax Occlusion Map」などの先端シェーダーエフェクトは一通り対応している。ローカルなレイキャスティングを行なって微細凹凸表現をリアルに描き出す、法線マッピング(バンプマッピング)の超進化形であるParallax Occlusion Mapは「スターオーシャン4」で積極的に活用されているのでプレイした際には意識して見てみるといい。

【視差マッピングと視差遮蔽マッピング】
上段が法線マッピングに視差を配慮した視差マッピング。下段が視差だけでなく、微細凹凸同士の遮蔽関係にまで配慮した微細凹凸表現の究極形、視差遮蔽マッピング。ASKAは微細凹凸表現の全てに対応

ASKAエンジン、Maya上でのシェーダー設計画面

 シェーダー設計については、ASKAエンジンでは、Mayaのシェーダーオーサリングシステムである「Hypershade」をそのまま利用して行なえるようなプラグインソフトウェアを開発してサポートしている。このプラグインにより、MayaのHypershadeで作成したシェーダーマテリアル群は、プラットフォーム共有の中間シェーダー形式「AHSL」で出力され、これをコンパイルしてASKAエンジンのランタイムで動すことになる。Unreal Engine3のように全く新しいシェーダーオーサリングツールでシェーダーを設計させるのではなく、デザイナーやアーティストが使い慣れたDCCツールを利用してその結果だけをエンジン向けにコンバートして利用するようにする仕組みも最近ではよく見かける手法だ。

 ASKAの機能は、とてもこれだけでは語り尽くせないが、とりあえずASKAについてはここまでにして、次節からは、このASKA第1世代ラストタイトルになった「End of Eternity」(以下「EoE」)について見ていくことにしたい。

【ASKAのデモンストレーション】
ASKAでは、ホストPCでパラメータ変更などを行なうと、その結果が即座にPS3実機、Xbox 360実機側のランタイムに反映されプレビューができるリアルタイム・イタレーション・システムが実現されている。左下がホストPC画面、上の画面がPS3の画面、右下がXbox 360の画面。同一内容のレンダリングを行った時に、どのプラットフォームでどのくらいの負荷が出るのかといった確認も簡単にできる



■ 「End of Eternity」のグラフィックススペック

 ASKAの話題はここまでにして、話題を「EoE」に移そう。まずは「EoE」のグラフィックスの基本スペックから。

 「EoE」のカットシーン、戦闘、ワールドマップなどの1シーンあたりの総ポリゴン数は35万ポリゴン程度。この値はGPUがレンダリングしているポリゴン数ではなく、街を構成する建物、NPCなどを全て含めたシーン全体の総ポリゴン数だ。一方、街内移動シーンの総ポリゴン数は15万ポリゴン程度。「EoE」はゲームデザインの関係上、街内は固定カメラとなるため、見えていない部分は作り込まれておらず、そのポリゴン数はやや少なくなめだ。

 1フレームあたりの可視ポリゴンの総数は、シーンにもよるがシーン総ポリゴン数の半分から8割程度で10万から20万ポリゴン程度だという。動的環境マップ、影生成のためのシャドウマップといったリアルタイムレンダリング素材の生成までを含めたGPU総負荷ポリゴン数は多いシーンで100万ポリゴン程度。

 なお、Xbox 360ではタイルレンダリングが行なわれる関係で、タイルがオーバーラップする領域での二重レンダリングが発生することもあり、PS3版よりもGPUが行なう総負荷ポリゴン数が多くなる傾向にあるという。いずれにせよ、これは最近の3Dゲームと比べるとやや少ない。

【ファイナルショットとワイヤーフレーム表示】
戦闘シーン
カットシーン
フィールドシーン
ワールドマップ

 一方で、キャラクターに注ぎ込まれたポリゴン数はかなり多い。プレーヤーキャラクター、重要なNPCなどは3万~4万ポリゴン程度で、一般的な今世代の3Dゲームの2倍くらいはある。また、主役級キャラクターは髪の毛のポリゴン数が多いのも「EoE」の特徴で、男性キャラクターで5,000ポリゴンほど、長髪の女性キャラクターに至っては8,000ポリゴンが割かれている。5,000~8,000ポリゴンというとPS2時代の主役キャラクターの総ポリゴン数に相当する。イベントシーンにおいても、リアルタイムゲームシーンと同一の3Dモデルを利用しており、逆に言えば、ゲーム中のキャラクターモデルはクローズアップにも耐えうるジオメトリ精細度を持っているということだ。

【主役キャラ】
ヴァシュロン
リーンベル
ゼファー

 村人などのモブキャラやサブキャラは5,000ポリゴン程度、敵キャラは大きさが色々違うこともあり、5,000ポリゴンから2万ポリゴン程度と結構開きがある。ただ、プレーヤーキャラクターなどと比べると、それ以外のキャラクターへのポリゴン予算は極端に多いわけではない。

 テクスチャ容量は基本1シーンあたり40MBを基本仕様としており、シーンによっては60MB程度までふくれあがることもあるという。影生成用のシャドウマップ、動的環境マップなどに用いられる動的なテクスチャバッファは約60MB程度。

 フレームレートは基本毎秒30コマ(30fps)。フレームレートは可変仕様となっており、高負荷時はフレームレートが下がることもある。レンダリング解像度は1,088×720ドットという変則的なものになっており、これを表示時に16:9にスケーリングして表示している。アンチエイリアスは2xMSAAを採択している。フレームレート及びレンダリング解像度などの基本仕様部分について、Xbox 360版と、PS3版とでは違いはない。

【敵キャラ】
巨人
ドラムイーター
ガベージゴーレム



■ 「EoE」のHDRレンダリング

「EoE」におけるHDRレンダリング

 HDRレンダリングについては、Xbox 360が仮数7ビット、指数3ビットの7e3形式、RGB各10ビット浮動小数点の定番フォーマットを採用している。PS3では浮動小数点バッファを使うとMSAAによるアンチエイリアスが利用できなくなってしまう制約があるため、RGB各8ビット整数の整数バッファを用いた疑似HDRレンダリング実装となっている。

 疑似HDRレンダリング実装は「ヴァルキリープロファイル2」編で紹介した分解能圧縮型の手法をベースに独自エンコードする仕組みを採用したとのこと。具体的にいうと8ビット整数が表現できる0~255のうち、輝度レンジ2.0くらいまでを0~190くらいにまで割り当てて、それより上はそのシーンの最大輝度に応じて非線形に折りたたんでいる実装となっている。190くらいまでは比較的リニアリティが維持されるようなエンコードが行なわれているため、αブレンディングなどの処理は、変換せずにそのまま行なってしまっても破綻が少ないようだ。

 また、「EoE」では静的な環境マップを基本持っておらず、リアルタイムにシーンをRGB各16ビット浮動小数点のFP16-64ビットバッファにレンダリングした動的環境マップを生成するので、映り込み表現においてもHDR情報が失われてしまうことはない(PS3版、Xbox 360版共通仕様)。まさに、近代的なHDRレンダリングエンジンの実装となっているわけだ。

 なお、HDRレンダリングに欠かせないトーンマッピングだが、これは前述したようにASKAエンジンでは、カメラシミュレーションを通して行なわれるため、単体処理系としての「トーンマッピング」は存在しない。



■ 「EoE」におけるキャラクター表現の隠し味「アウトライン・フレネル・シェーダー」とは?

 「EoE」では主要キャラクターの表現には力が入っており、その片鱗が、前述したようなポリゴン数の多さに現われているわけだが、こだわりの部分はそれだけではない。イベントシーンなどを見ると、まず、顔面アニメーションが凝っていることに気がつくだろう。

 「EoE」では、基本的な口の開閉などの顔面パーツが動くような表情アニメーションではボーン制御で行ない、顔面全体が変形するような強い感情表現を伴った演技ではモーフィングによる頂点アニメーションを同時に行なっている。主要キャラクターの顔面内ボーンの数はおよそ40個強。これとは別に主要キャラクターの髪の毛には約250個の物理シミュレーション制御用のボーンが仕込まれている。

【ボーンの可視化ショット】
顔面内に仕込まれたボーンを可視化したショット(左)。主要キャラクターの髪の毛には250個もの物理シミュレーション制御用ボーンが仕込まれている(右)

【表情が印象的な顔面アニメ】
進化した顔面アニメーション。キャラクターの表情表現は非常に豊か。"美形キャラ"ではあっても、もはや“お人形さん”ではない

 ボーン制御による顔面各箇所の変形の際には頂点が摂動するのみで、この移動によって生じる各頂点の法線ベクトルの変位についての再計算は近似処理になってしまうが、モーフィングによる頂点アニメーションの表情演技では法線ベクトルもちゃんと変化するようになっている。このため、美形キャラクターであっても、激情表現の折には顔が歪んだ生々しい表情を再現できている。ちなみに、「EoE」では、こうした表情演技に関しては、役者の顔面演技をキャプチャーするのではなく、デザイナーやアーティストの手付けで行なったとのことだ。

【顔面シェーダー】
左上から順に素ポリゴン、テクスチャのみを適用した状態、法線マップを可視化したショット、スペキュラマップを可視化したショット、ファイナルショット

庄子達哉氏(トライエース研究開発部)

 ライティング面では、フォトリアル系でありながら、独特なアンビエント感が出るように、1つユニークなシェーダーが付加されている。それが「アウトライン・フレネル・シェーダー」だ。

庄子達哉氏(トライエース研究開発部、以下庄子氏)「視線から見て輪郭付近に相当する部分に対して、環境光によるスペキュラーが付加されるようにしています。逆光時に輪郭に出るリムライトとは別モノです。ピクセルシェーダーの効果なので、ポリゴンモデルとしての輪郭だけに出るのではなく、ポリゴン内部の法線マップの陰影に対しても出ます。物理的に正しいとは言い切れませんが、まったく間違えているともいえない表現です。とはいえ、意味合い的には、やはりアーティスティックな効果ということになるでしょうか」

 フレネル反射とは、簡単にいうと、ある面を見たときに、その視線とその面が織りなす角度が浅ければ浅いほど、その面には周囲の情景が映り込んで見える(鏡面反射となる)というもの。フレネル反射というと水面に映る鏡像の見え方を1番に連想する人が多いと思うが、フレネル反射自体は人間の顔面上でも、クルマのボディでも、ありとあらゆる材質面で起こっている。その反射要素が見えやすいのが水面を筆頭とした光沢面というだけで、現実世界では光沢面以外の材質でも弱いながらもフレネル反射の結果は当然現われている。

 PS2時代以前の3Dゲームグラフィックスでは「効果の弱い要素はやる必要はない、省略する」というのが当たり前だったが、PS3、Xbox 360といったプログラマブルシェーダアーキテクチャベースの今世代機になってからは、「効果の弱い要素の積み重ねこそが1ランク上のフォトリアルを実現する」という認識になりつつある。このアウトライン・フレネル・シェーダーも、そういった類の物だ。

 アウトライン・フレネル・シェーダーの具体的な処理としては、視線に対して、その描画対象ピクセルの法線ベクトルが垂直に近い場合、環境光(SH光源)と同色(シーンによっては決め打ちの固定色の場合もあり)のハイライトを出すというようなものとなっている。アプローチは違うが意味合い的には「ソニックワールドアドベンチャー」編で紹介したGIリムライト(Light Field Rim Light)に近いものといえるかもしれない。


【アウトライン・フレネル・シェーダー】
アウトライン・フレネル・シェーダー。左がオフで、右がオン。リムライトとは違い輪郭以外にもハイライトが出ている点に着目! 人体、衣服など、キャラクタに淡いフレネル反射を演出するのがアウトライン・フレネル・シェーダーの効果だ

 「EoE」のキャラクターライティングにおいてこだわっている点がもうひとつある。それは髪の毛の表現だ。

五反田氏「髪の毛のライティングにおいて特徴的なのは、いわゆる“天使の輪”とも呼ばれる、頭髪に現われるハイライト表現ですが、これは今まではアーティストが手書きで書いているようなケースが多かったのですが、ASKAエンジンでは、SIGGRAPH2003でStephen R. Marschner氏が発表した髪の毛の光散乱モデルをリアルタイム3Dグラフィックス向けにアレンジしたものを実装していて、これによってリアルタイムライティングを行なっています。つまり光源の相対位置によって天使の輪の出方が変わりますし、髪の毛の色味も物理的にかなり正しい見え方となります」

 光が髪の毛にあたると、かなりの割合がその表面で鏡面反射してそこにハイライトを生じる。このハイライトは主に光源色で強く出ることになるが、髪の毛に浸透した光は減衰しつつも毛髪そのものの色を吸収して出射する。この毛髪色からの出射光は弱い二次的なハイライトを作り出すことになるが、その色は光原色よりも毛髪色の方が支配的となる。ASKAエンジンに内蔵されたMarschnerモデルのヘア・シェーダーではこの現象をシミュレートした陰影結果を出すように設計されているわけである。

【髪の毛表現の要素テクスチャ】
法線マップ
スペキュラマップ
オフセットマップ
アルベドマップ(いわゆる一般的な解釈としてのテクスチャマップ)
Marschnerモデルのヘア・シェーダーのみの結果(左)、ファイナルイメージ(右)

髪の毛にアルベド・テクスチャのみを適用したショット

 「EoE」のキャラクターの頭髪は、髪の毛を模したフィン(ヒレ)を植え付けたような構造をしているので、線分の集合体である実際の人間の頭髪の構造とは全然違う。なのに「EoE」のキャラクターの頭髪には、縦方向にずれたハイライトが出ており、見た目として髪の毛らしい陰影が出せている。これは、入射した光があたかも線分の集合体で構成された毛の束から出射したように見せる“オフセット値を格納したテクスチャ”(オフセットマップ)を媒介させることで実現している。

庄子氏「ものすごい解像度の高い髪の毛の線状の法線マップを用意できれば、こうしたオフセットマップと同様の効果は出せます。我々のオフセットマップによる実装でも、オフセットでずらしたあとは法線ベクトルを算出してMarshnerモデルのシェーダーで計算させています」

五反田氏「我々が実装したMarshnerモデルよりも、より高度な手法としてCem Yuksel氏がSIGGRAPH 2008で発表したDual Scatteringという手法も台頭してきています。いずれにせよ、デザイナーやアーティストが描き割りで描いた静的な天使の輪のハイライトとは違って陰影結果としてリアルに見えますからね。効果は大きいと思っています」


【髪の毛表現のシェーダー要素分解ショット】
髪の毛にMarscherモデルのヘア・シェーダーのみを適用したショット(左)、Marscherモデルのヘア・シェーダーの結果にスペキュラマップの効果のみを加えたショット(右)
Marscherモデルのヘア・シェーダーの結果にオフセットマップの効果のみを加えたショット(左)、Marscherモデルのヘア・シェーダーの結果に法線マッピングのみを加えたショット(右)
ファイナルショット(左)、ファイナルショットからオフセットマップの効果を除外したテストショット(右)。オフセットマップの効果で髪の毛が線分の集合体であるという表現が行なわれている


(C)SEGA
Developed by tri-Ace Inc.

(2010年 4月 1日)

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