西川善司の3Dゲームファンのための「CRY ENGINE 3」講座
ドイツが誇るゲームエンジン「CRY ENGINE」がPS3とXbox 360に対応!
【著者近影】 | ||
---|---|---|
三度の飯よりゲームコントローラーが大好きなテクニカルジャーナリスト。本誌では主にGPUや3Dグラフィックス関連の記事を執筆している。生まれて初めて購入したマイ・ジョイスティックは「X1用ゼビウス・スティック」。ゲームをオールラウンドに愛するが、オンラインゲームはどちらかと言えば苦手。最近のお気に入りは「トゥームレイダー・アニバーサリー」(スパイク)。個人ブログはこちら |
次世代ゲームエンジンのヨーロッパ代表格といえばドイツCRYTEKの「CRY ENGINE」を他に置いてない。
ドイツのCRYTEKは、GPUがプログラマブルシェーダーアーキテクチャに移行してから、最も早くゲームエンジンの重要性に着目してきた独立系ゲームスタジオの1つだ。2004年に登場した初代「CRY ENGINE」は自社タイトルの「FARCRY」に採用し、良好なセールスを記録。残念ながらゲームエンジンビジネスとしての成功は収められなかったが、その高い技術力を世界に知らしめることはできた。また、「CRY ENGINE」は一部のヨーロッパのゲーム制作アカデミーなどでの採用事例もあると聞く。一部のコミュニティでは依然として評価は高いようだ。
2007年に登場した「CRY ENGINE 2」では、DirectX 10対応のゲームエンジンへとバージョンアップし、「CRY ENGINE 2」を採用した最初のタイトルとして自社開発タイトル「CRYSIS」を発表、PC向けゲームエンジンとしての熟成を深めた。そして今年2009年。CRYTEKは「CRY ENGINE」を家庭用ゲーム機のXbox 360、プレイステーション 3(PS3)への対応を果たし、GDC2009にて「CRY ENGINE3」(CE3)を発表するに至る。今回はCE3が、どういった進化を遂げたのかを見ていくことにしよう。
CRYTEK Senior R&D Graphics ProgrammerのCarsten Wenzel氏 | GDC2009では、CRYTEKは技術セッションよりもブース展開に注力していた |
■ 「CRY ENGINE 3」Sandbox~ホストPCでのアップデートがPS3、Xbox 360にリアルタイムに行なえる
「CRY ENGINE 3」 Sanbox動作概念図 |
CE3の大きな特徴のひとつがPS3とXbox 360への対応だ。CE3のPS3、Xbox 360対応に伴い、ゲーム世界構築ツール「CE3 Sandbox」には、ホストPCと接続されたXbox 360、PS3へのリアルタイム更新機能が搭載された。ホストPC上のCE3 Sanboxで変更したアートセットやゲームシーン構成は、ローディング画面などを介さずにオンザフライでPS3、Xbox 360に反映されるようになっているのだ。
初代から搭載されていた、作成したゲームシーンを作りながらプレイしてテストできる「What you see is what you play」(WYSIWYP)コンセプトはCE3 Sandboxにももちろん生きており、自由自在に盛り上げ下げが可能な地形作成機能、作り上げた地形への植物の自動/手動繁殖が搭載されている。
作り上げた地形に自動的に道路を舗装したり、川を作ったりする機能は、その作業自体がゴッドシムゲームでもプレイしているような様子だ。また、新たに専用の「Vehicle Editor」(乗り物専用エディタ)も搭載された。
これはゲームに登場させる車両をデザインできるツールで、車両タイプ、車輪の位置、乗車位置、銃器の搭載位置、ダメージ表現の定義などを作り込めるようになっている。もちろんランタイムで動かしたときにはデザインに矛盾しない車両物理が適用されて動き回すことが可能だ。
【リアルタイム更新機能】 | |
---|---|
ホストPCでのエディット結果をすぐにPS3、Xbox 360の実機でテストプレイが可能 |
■ CE3のグラフィックス・エンジン・フィーチャーを総ざらいする!!
CE3のグラフィックスエンジンは、基本的にCE2をベースにしてリファインを行ない、これをPS3、Xbox 360に対応させたと考えていい。劇的にレンダリングパイプラインを変えたわけではなく、CE2のものを各ゲームプラットフォームに最適化した上で対応したというようなイメージのようだ。
それでは公開されているフィーチャーのうち代表的な物をピックアップして紹介していこう。まずは全体的なCE3のポテンシャルを知ることが出来る、このテクノロジーデモムービーをご覧いただこう。ムービー中に「PLAYSTATION 3」「Xbox 360」と表示されるロゴはそれぞれのプラットフォームでリアルタイム動作していることを表している
リアルタイム・ソフト・シャドウ生成 |
リアルな空気遠近表現が可能 |
HDRレンダリングではより自然な表現を可能にしている |
・リアルタイム動的グローバルイルミネーション(Real-time Dynamic Illumination)
事前計算なしで、シーンの複雑性の制限もなく、二次光源表現、照り返し表現などが実現できるという説明がなされている。ムービー中の、飛び回る光が周囲を照らし、その光と同色の滲んだスペキュラーがこの機能のことをいっているようだ。事前計算なし、ジオメトリに左右されないという2つの特徴から、実装形態は、後述するSSAOの発展形のポストプロセス的なアプローチであると推察される。
・ディファード・ライティング(Deferred Lighting)
本連載「KILLZONE2」編で紹介したディファード・シェーディング(Deferred Shading)と同種のレンダリングパイプラインを採用していると見られる。その詳細は「KILLZONE2」編を参照して欲しいが、ディファード・シェーディングでは、シーンをレンダリングするがピクセル単位のライティングを後回し(これがディファード・シェーディングの語源になっている)にして、ライティング計算に必要な中間値だけをMRT(Multi-Render-Target:1度のレンダリングパスで複数バッファに異なる値を同時出力する機能)を使って複数のバッファに出力する。
そして最後にライティングを行なうわけだが、これにはそのシーンに存在する光源をポストプロセス的にレンダリングする。この工程で、ライティング計算を行なうわけだが、その際に先に複数バッファに書き出した中間値を用いることになる。
ディファード・シェーディングは、動的な光源の数が多い場合や、シーンに登場する3Dオブジェクトの数が多い場合に、パフォーマンス効率のよいレンダリングが可能となる。しかし、半透明オブジェクトについては通常のレンダリングパイプラインで描画して合成する必要があるため、半透明オブジェクトが極端に多いグラフィックスではディファード・シェーディングの効果が出てこない場合もある。
・動的なソフト影生成(Dynamic Soft Shadows)
動的な影生成はCEシリーズの特徴的なフィーチャーだ。デプスシャドウ技法系のアルゴリズムを使用した影生成で、影輪郭にはボカしフィルタが適用され、滑らかなソフトシャドウ表現が実現される。
・ボリューム表現と空気遠近(Volumetric Layer & View Distance Fogging)
シーンの深度をキーにした疑似的な光散乱シミュレーションを適用した距離フォグ表現がサポートされる。具体的には、画面内のうち、遠くまで開けている部分は何もない空間が多いのでフォグによる光散乱が多いためフォグ色が強くなるが、視点から近い場所に遮蔽物があるようなところでは光散乱が少ないのでフォグ色は薄くなるといった処理で実現される。
また、立体的な形状を持つ局所的なフォグ(ボリュームフォグ:Volume Fog)表現にも対応している。これはよく用いられるその立体形状の前面と後面との差分から、そのフォグ領域の厚みを求め、視線がその厚みをどう突き抜けるかをピクセル単位で求めて(レイ・キャスティング)、フォグの色を求める手法だ。こうしたボリュームフォグでは、立方体、長球といった単位形状を組み合わせた、自由な形のフォグをシーンに配置することができるのが特長だ。この他、厚み情報を持たせた雲スプライトによる雲表現、煙表現もサポートされる。
地面のジオメトリは実際には平坦なのだが、視差遮蔽マッピングにより、リアルな砂利の凹凸感が表現できている |
・法線マッピング、視差遮蔽マッピング(Normal Maps & Parallax Occlusion Maps)
ポリゴンで表現するには及ばないほどの微細凹凸表現の定番としては法線マップがある。法線マップは微細凹凸の法線情報をテクスチャ化したもので、ライティング時にこの情報を元にライティング計算を行なって微細凹凸の陰影を出現させるフェイク・テクニックが法線マッピングだ。
これをさらに拡張した技術が視差遮蔽マッピングになる。こちらは、ライティング時に微細凹凸の法線だけでなく、凹凸の高さ情報までを考慮する。凹凸の高さ情報をテクスチャ化したものはハイトマップと呼ばれ、法線マップとは1対1に対応するものを用意するのが一般的だ。
視差遮蔽マッピングでのライティング時には、このハイトマップから読み出した微細凹凸の高さ情報と、視線との衝突を探索して、視線と凹凸との遮蔽構造に配慮して陰影処理を行なう。視線と凹凸が衝突していれば、その視線が衝突した箇所に対応した法線マップ上の法線情報でライティングする。こうすることでジオメトリレベルでは平坦のままにもかかわらず、微細凹凸間同士の相互遮蔽関係にまで配慮した、より立体的な微細凹凸表現が可能となる。
右の詳細凹凸モデルから左の法線マップを生成するのがPOLUBUMPツール |
・POLYBUMPテクノロジー支援ツールがマルチコア+64ビット対応
オーサリング時に多ポリゴンで表現した微細ディテールを法線マップ化するCRYTEKの「POLYBUMP」テクノロジーだが、このPOLYBUMPツールが、CE3ではマルチコアCPUと64ビットOSに対応している。
新POLYBUMPツールでは法線マップだけでなく、ディスプレースメントマップの出力も可能。これはテッセレーションステージが新設されるDirectX 11パイプラインにも利用できそうだ。なお、POLYBUMPツールはCE3支援ツールとしてはもちろんのこと、スタンドアローンのツールとしても使え、例えば3ds MaxなどのDCCツールと連携して活用することも可能だという。
画面座標系を使った複雑なポストプロセスはGPU性能が向上すると共に進化してきた。SSAOもその1つで、簡単に言えば深度を見て遮蔽されている箇所に濃い色を付けていくという手法 |
・スクリーンスペース・アンビエント・オクルージョン(SSAO:Screen Space Ambient Occlusion)
「スクリーンスペース・アンビエント・オクルージョン」(SSAO:Screen Space Ambient Occlusion)は、最近の3Dゲームグラフィックスでの採用が相次いでいるが、もともとはCRYTEKが考案したものだった。
SSAOとは、各ピクセルが周囲にどれだけ遮蔽されているかを、レンダリング後の深度バッファの情報を参照しながら、陰影を付けていくポストプロセス。周りに遮蔽されているピクセルほど暗くしていくことで、グローバルイルミネーションぽい“陰”表現ができる。CE3では、この表現機能をPCだけでなく、PS3、Xbox 360にも対応させている。
前述の「リアルタイム動的グローバルイルミネーション」とは、このSSAOを発展させ、周囲の遮蔽探査時にそこのピクセル色までをサンプルして陰影処理に活用する応用を行なっていると見られる。
CE3には内製植物生成エンジンを統合している。植物とのインタラクションも正確に行なえる |
・統合された植物生成エンジン(Integrated Vegetation and Terrain Cover Generation System)
CE3に内蔵される植物エンジンは、自然のルールに従った説得力のある植物生成を行なってくれる。斜面の傾斜やその他の地質条件にあった密度で植物を生い茂らせることができ、その制御は自動で行なうこともできるし、手動でも行なえる。CE2で特徴的だった銃撃を植物に命中させると着弾地点から枝葉が折れる、植物破壊リアクションもサポートされる。
・HDRレンダリング(Eye adaption & High Dynamic Range Lighting)
CE3でも、当然HDRレンダリングを採用している。ただし、PS3ではRSXの制約で16ビット浮動小数点(FP16)-64ビットバッファでのレンダリング時にアンチエイリアシング(MSAA)が適用できなくなるため、おそらく8ビット整数-32ビットバッファを用いた疑似HDRレンダリングになっていると見られる。
屋外から屋内へ、屋内から屋外へと輝度レベルが全く異なる環境間の往来を行なった時には、そのシーンの輝度レベルに自動的に合わせた階調補正(トーンマッピング)が行なわれる。
【HDRレンダリング】 | |
---|---|
HDRレンダリングもサポートされる |
・モーションブラーと被写界深度(Pristine Motion Blur & Depth of Field)
画面全体の動きにブラーを掛けるカメラ・モーション・ブラー(CMB、Screen Based Motion Blur)と、3Dオブジェクトごとの個別なアクションにモーションブラーを付加するオブジェクト・モーション・ブラー(OMB)の両方がサポートされる。
CMBはカメラの動きに応じた動きベクトル情報を、シーンの深度値にバイアスさせて決定し、この値をキーにしてシーンをぼかす。つまり、遠いものはあまりぶれず、近いものは大きくぶれるような効果となる。
OMBでは、各3Dキャラクタの前フレーム時の各頂点の位置と現在フレーム時の各頂点の位置の差分から各頂点単位の速度を求め、これをキーにぼかして生成する。なお、CMBとOMBは、画面に躍動感を与えるだけでなく、映像表示時のフレーム落ちを視覚的に低減させる効果もあり、可変フレームレートのゲームには効果が大きい。被写界深度は、レンダリング後の深度バッファの内容を参照し、合焦点に相当する位置の深度値からずれればずれるほどぼかすような典型実装を採用する。
【モーションブラー】 | |
---|---|
美しいHDRモーションブラーは「CRY ENGINE 3」の特徴 |
・動的な日照システム
多くのゲームでは、「空」(天球)はデザイナーが描いた空や写真を元に作成した画像等で表現することが今でも多い。CE3では、リアルな空を再現するために、地球上の観測者を取り巻く天球の状態を、太陽や月の位置、雲の状態、待機中の湿度状態を設定することで、動的に求められる仕組みを実装している。
現実世界の空は、時刻によって太陽の位置が決まり、そこから観測者に向けてその光がどう伝わっていくかで見え方が決定されるが、これをCE3ではシミュレーションを行い求めることが出来る。具体的には光源となる太陽の位置を決め、光が空をどう伝搬するかを「レイリー散乱」と「ミー散乱」という2種類の光散乱現象(Light Scattering)を表した方程式を解く事で算出する。
「CRYSIS」の大海原の波 |
・高品位な水の表現
CRYTEKはGeForce3の発表当時から3Dゲームグラフィックスにおける水面表現の研究を行なっており、実に10年間の歴史がある。そんなわけでCE3は現存するゲームエンジンの中で最も品質の高い水の表現システムを持っているといわれている。大海の海原の波はJerry Tessendorf氏のアルゴリズムによる波動シミュレーションを実装し、リアルかつ荘厳なジオメトリレベルの波を生成している。なお、この表現は「CRYSIS」でも確認することができる。
水面に映り込む鏡像には垂直ブラーを施す工夫がなされ、水面下の屈折した情景とはフレネル反射を考慮して合成される。ここまでは比較的よく見られる水面表現だが、CE3では、水面下の情景のRGBピクセルをずらして見せる疑似的な色収差表現や、水面の凹凸がレンズ効果となって集光現象を起こして水底に網目模様のようなきらめきを映す「火線」(CAUSTICS)など、徹底したリアルな水底表現を行なっている点がユニークだ。ここまでの水面表現のこだわりを、筆者は他の3Dゲームグラフィックスエンジンでも見たことがない。
【水面の表現】 | |
---|---|
左が火線なし、右が火線有り | 左が泡沫なし、右が泡沫有り |
さて、水面のCGっぽさは、水面の陸地との境界線が強く出てしまうところにもある。CE3ではこの弱点を克服するために、水面と岸辺の境界が近くなればなるほど水面の透明度を上げるようにブレンドしている。また、この岸辺との境界には打ち寄せる波にシンクロする形で「泡沫」(水上の泡)の表現も盛り込んでいる。これは2レイヤーの泡テクスチャのアニメーションを水面のさざ波の法線マップで摂動させつつ、岸辺境界から水深の深い方向に向かって柔らかく合成することで実現している。
【水面表現 その2】 | |
---|---|
非常にリアルなCE3の水面表現 |
深度値を見て遮蔽マスクを生成して、これを太陽光の位置から放射状にブラーさせる。あとはこのマスクで、同様に引き伸ばし拡大した太陽光を覆えば完成 |
・リアルタイム光筋表現(Dynamic Volumetric Light Beams & Light Shaft Effects)
CE3では、光筋表現の美しさをその特徴として訴えている。驚いたことに、CE3では、そのシーンのジオメトリに的確にマッチした光筋表現を、画面座標系のポストプロセスで実現している。
その手順は、シーンをレンダリングした後に残っている深度バッファを調査して太陽を遮蔽しているマスクを生成し、これを画面上の太陽位置から放射状にブラーを掛ける。さらに同じ方向に太陽もブラーして拡大し、これを前出のマスクと合成すればできあがりだ。概念的には、逆光の太陽を遮っている遮蔽物の影の広がりが、太陽光を遮蔽する……というイメージだ。この光筋表現は地上の逆光時にだけでなく、水面下で水上を見上げたときにも適用される。
【光筋表現】 | |
---|---|
この美しい光筋表現は画面座標系のポストプロセスによって出来ている |
■ 「CRY ENGINE 3」のキャラクタ表現、アニメーションシステム
卓越したアニメーション機能 |
ゲームでは動的に動き回る人間キャラクタモデルの存在が欠かせない。CE3ではリアルな人間キャラクタ表現を行なうための機能を充実させている。
まず、CE3には専用には専用のアニメーションシステムが内蔵されており、キャラクタエディタで作成したキャラクタはすぐに前述のSandboxツール内で表示して動かすことができる。作成したキャラクタ・アニメーションがランタイムでどう見えるかをスピーディに確認できるのだ。
人体アニメーションエンジンはフレキシブルな設計になっており、体型や体格の違う様々なキャラクタを容易に作成できるとしている。具体的には作成した任意の3Dモデルに対し、別に作成した骨格(ボーン)を自動的に組み合わせてすぐに動かすことができる。また、リアルタイムに頭部、腕、上半身、下半身などのパーツを組み替えても動かすことが可能。さらには、プロシージャルに体型や体格の違うバリエーション・キャラクタを生成することもできるという。
骨格モーションは異なる複数のモーション間を滑らかに繋ぐことにも対応している。また、IK(Inverse Kinematics;逆方向運動学)をベースにした、シーンの傾斜や凹凸に臨機応変に動的に対応できる対応力も兼ね備えている。なので、特に調整をしなくても、斜面を駆け上がったときに、足が地面にめり込んでしまうようなこともない。どんな地形であっても、文字通り、「地に足を付けたアクション」が再現されるようになっている。
また、最近、特に重要度が増している顔面アニメーション、表情制御についてもCE3は力が入っている。フェイシャルモーションについては音声波形を解析して音素を分析して基本的な口の動きを自動生成できる仕組みを持っている。また、表情制御については、演者の演技を収めたビデオをトラッキングしてその顔面の動きをキャプチャし、これを顔面モデルにマッピングできる仕組みを搭載する。
顔面の質感を表現するためのスペシャルスキン(肌)シェーダもCE3には搭載されている。最近、採用例がちらほらと見られるようになった疑似的な表面下散乱表現にも対応しており、かなりリアルな皮膚の質感表現が行なえる。
なお、CE3のAIシステムは、各キャラクタをモジュール化された知覚システムをもとに制御できるようになっている。具体的には視覚、聴覚などで、他者の認識、周辺の物音などをトリガーにした制御が可能だということだ。
移動経路探索は、シーンの動的な破壊、あるいは地形の変形、障害物の出現にリアルタイムに対応できるとしている。移動経路の設計のためのナビゲーション・メッシュの自動生成にも対応。ナビゲーション・メッシュは、単なる二次元的なものだけでなく、複数フロアからなるビル、飛び降りたり登ったりのような立体的な移動を伴う地形など、三次元的なものも出力可能だとのこと。
【アニメーションシステム】 | |
---|---|
IK制御によりシーンの凹凸や斜面に動的に対応できる骨格モーションシステム | CE3では、このレベルの顔面表現がゲーム中のリアルタイム3Dゲームグラフィックスとして可能となった |
■ 「CRY ENGINE 3」は内製物理エンジンを統合
プロシージャル破壊(ノンリニア破壊)に対応 |
CE3では、ゲームに必要な全ての物理シミュレーションを内製で取りそろえているため、HAVOKやPhysXといった外部物理シミュレーションミドルウェアを必要としない。物理シミュレーションの適用範囲はビルディングから小道具、植物にまでいたり、物理シミュレーションのきっかけとなる要因は物同士の衝突や重力だけでなく、風や爆発、摩擦など多岐にわたる。
また、ゲーム仕様が要求する範囲での動的なプロシージャル破壊にも対応しており、破壊後の破片などはその素材ごとの物理パラメータをともなった状態でそのシーンにインタラクティブなオブジェクトとして存在し続けられる。例えば、飛び散った破片はそのシーンの他者と衝突もしあうし、水面に落ちても浮力が生じていれば浮いたりもする。
そして、CE3には先進的な紐物理(Rope Physics)シミュレーションも実装される。紐物理シミュレーションは木々の曲がりや吊り橋の表現、生物の触手の表現にも利用される。これらの全ての物理シミュレーションはマルチスレッド化された設計になっており、PC、Xbox 360、PS3のそれぞれのマルチコアCPUアーキテクチャに最適化されているという。
【物理シミュレーションエンジン】 | |
---|---|
CE3には内製物理シミュレーションエンジンが統合されている |
■ まとめ~「CRY ENGINE 3」はサードパーティー向けゲームエンジンとして成功するか!?
「CRY ENGINE 3」のシステムダイアグラム |
「CRY ENGINE」は“初代”も“2”も、その技術的先進性は認められながらも、エンジンビジネス的に成功したとは言い難く、採用タイトル(発売タイトル)はライバルのEPIC GAMESの「UNREAL ENGINE 3」(UE3)にまだ及ばない。
ただ、UE3は、日本デベロッパーとのサポートの不備や、開発思想の違いが取り沙汰されることが多く、CE3が付け入る隙はある。CRYTEK側もそれはよくわかっているようで、ライセンシーに対する協力を惜しまない姿勢を示している。
まず、ライセンシー・スタジオには、1週間、CE3のシステムを理解したエンジニアが派遣され、エンジン活用の基礎トレーニングを実施するサービスが提供されるという。その後、希望があれば、ドイツCRYTEK本社への研修も可能で、エンジン設計者とローレベル仕様までをディスカッションできる機会も与えられるという。
リアルタイムサポートはオンラインで行なわれるのはもちろんのこと、アメリカ、中国、日本、イギリス、韓国、ドイツ(本社)にローカルサポートセンターを設置する意向を明らかにしている。つまり、日本ローカルのサポートオフィスをも設置する予定があるというのだ。時差を気にせず、日本語でリアルタイムサポートが受けられるのはUE3にはない強みとなる。
(C) 2007 CRYTEK » all rights reserved
□CRYTEKのホームページ
http://www.crytek.com/
□「CRY ENGINE 3」のホームページ
http://www.cryengine3.com/
(2009年 5月 1日)