![]() |
| PC版「Borderlands 2」のグラフィック表現についての講演が開かれた |
ゲームに関連した講演も増加傾向にあるため,3月25日からサンフランシスコで開催されるゲーム開発者会議「Game Developers Conference 2013」(関連記事)にも似た,“ミニGDC”的な講演がずらりと並ぶ日もあったほどだ。
今回は,そんなミニGDC的なセッションから,「Post Mortem: GPU Accelerated Effects in Borderlands 2」(回顧録:Borderlands 2で採用した,GPUアクセラレーションを利用するエフェクト群)を取り上げる。
Borderlands 2はUE3ベース,エフェクトはPhysX
PC版はGPUアクセラレーション対応
Borderlands 2は2012年秋に発売されたタイトルで,日本でもPC版とPlayStation 3(以下,PS3)版,Xbox 360版が発売になっている。
GTC 2013はNVIDIA主催のイベントということもあり,講演の主役はPC版だ。GeForce搭載のPCでのみ実現可能な,Borderlands 2の特別なビジュアルエフェクトが解説された。
講演に登壇したのは,Borderlands 2のデベロッパである,インデペンデント系ゲームスタジオGearbox Software(以下,Gearbox)のJim Sanders(ジム・サンダース)氏と,NVIDIAのテクニカルアーティストKevin Newkirk(ケビン・ニューカーク)氏である。
![]() Jim Sanders氏(右,FX Director,Gearbox)と,Kevin Newkirk氏(左,テクニカルアーティスト,NVIDIA) |
![]() Borderlands 2はとくにPC版の評価が高い |
Gearboxというデベロッパについて簡単に説明しておくと,初期は「マイクロソフト ヘイロー コンバット エボルヴ」のPC版や,「サンバDEアミーゴ」のWii版など,移植を幅広く手がけてきた企業であった。最近ではその実力が評価され,前作「Borderlands」を始めとして,「Aliens: Colonial Marines」など新作を手がける機会も増えてきている。
Borderlandsシリーズもそうで,最新作のAliens: Colonial Marinesもそうなのだが,Gearboxはゲームエンジンとして,Epic Gamesの「Unreal Engine 3」(UE3)を採用してきている。一方,レンダリングエンジンに関しては,Gearboxのオリジナル技術を導入したカスタム版を使用しているという。
UE3は,物理シミュレーションエンジンとしてNVIDIAの物理シミュレーション技術「PhysX」を統合しており,対象のプラットフォームを問わずに,PhysXによる物理シミュレーションを利用できる。もっとも,ここはよく勘違いされるところでもあるのだが,物理シミュレーションとしてのPhysXはマルチプラットフォーム対応である一方,PhysXのハードウェアアクセラレーション「GPU PhysX」を利用できるのは,CUDAに対応したNVIDIA製GPUを搭載する環境のみとなる。つまり,GPUによるPhysXアクセラレーションに対応するのは,現状だとPCのみというわけだ。
![]() |
| Borderlands 2でGPUアクセラレーションが有効なエフェクト |
- パーティクルエフェクト(Persistent Mesh Debris)
- 力場(Force Fields)
- 流体(SPH Fluid Simulation)
- 布(Cloth Simulation)
なお,ここで言う「アクセラレーション」とは,ただ単に「高速になる」だけではなく,「表現自体が桁違いにリッチなものになる」という意味でもある。下に掲載したビデオは,GeForce GTXを使ってGPU PhysXを有効化した状態とそうでない状態とで,エフェクト表現の違いを示したものだが,非常に分かりやすい。
Borderlands 2におけるパーティクルエフェクトの秘密
前段で紹介したとおり,講演の中でBorderlands 2のパーティクルエフェクトは,Persistent Mesh Debris(パーシステント・メッシュデブリ)と紹介されたのだが,これはいったい何だろう?
一般的にパーティクルエフェクトというと,小さなポリゴン片にテクスチャを貼ったビルボード(≒スプライト)のようなものを,大量に描画することで実現されている。個々のビルボードにはライフタイム(存在していられる時間)を設定しておき,出現後は一定時間で消失するようにしておくのが基本的な使い方だ。
霧や煙,火花のようなものなら,この仕組みでも問題ない。たとえば銃弾が着弾し,そこから火花が無数に飛び散るパーティクルエフェクト表現を見たことがあるだろう。飛び散った火花は一定時間で消失するが,この表現を不自然に思うことはないはずだ。
![]() Persistent Mesh Debrisの概念 |
![]() Agni's Philosophy冒頭の「10万匹の蛍」も,3Dモデリングされたパーティクルで表現されている |
「Persistent」とは,「いつまでも消えない」「残り続ける」という意味の形容詞だ。また「Mesh Debris」とは,ポリゴン片ベースの平面的なパーティクルではなく,3Dモデリングされたパーティクルであることを意味している。
3Dモデリングされたパーティクルの大量描画と言えば,最近では,スクウェア・エニックスの「Agni's Philosophy」冒頭シーンにおける,「10万匹の蛍」の表現がまさにそれだ。
「Borderlands 2では,そうした3Dパーティクルがシーンに残り続けるだけでなく,その後のゲーム展開で起きる事象とも,正しく相互作用する点が特徴である」と,Sanders氏は強調する。
たとえば,飛び散った3Dパーティクルの破片の周辺で手榴弾を爆発させれば,その衝撃で破片はちゃんと別の場所に飛び散る。また,Borderlands 2の特徴的な武器であるブラックホール(Black Hole)を使ったときには,ブラックホールに破片が吸い寄せられる挙動を示す。
さらにSanders氏は,本作の3Dパーティクルが,ライティングシステムに統合されて描画されることも,特徴として挙げている。
一定時間で消失する一般的なパーティクルでは,ライティングが省略されていたとしても,その不自然さは一瞬なので目立たない。だが,シーンに残り続けるパーティクルでは,ちゃんと対処しなければ不自然さが持続してしまう。
Borderlands 2での3Dパーティクルは,この問題にきちんと対処しているという。だから,3Dパーティクルの破片がなにかの影に入れば,ちゃんと影に入った状態でレンダリングされるし,近くに光源があれば,その光源でライティングされる,ということだ。
![]() Borderlands 2のパーティクルエフェクトは,ライティングや影生成の影響も正しく反映して描画される |
もうひとつ,NVIDIAのNewkirk氏は,「本作のパーティクルは,ゲームシーンのジオメトリ構造と的確に衝突して運動し,静止する」という点を強調していた。
一般的なパーティクルシステムでは,運動中はそれらしく跳ね回っているだけでも,どうせ一定時間で消失してしまうので,衝突を正しく描かなくてもそれほど違和感はない。だが本作の場合,3Dパーティクルの破片がゲームシーンに残り続けるだけでなく,その後に起こる爆発やらブラックホールやらといった,ゲーム内の事象に的確に反応して動かなければ,不自然に見えてしまう。
![]() |
| PC版Borderlands 2では,衝突判定用として描画用精度と同等の衝突モデルを設定したという。スライドの画像からは,岩の形状に沿って破片が散らばっているのが分かる |
ただし,高品質な衝突モデルによる衝突判定をしているのは,背景のみである。動的キャラクターに対して,あるいは動的キャラクター同士の衝突は,一般的なゲームと同様に,球や直方体,円柱状といった,単純な形状で判定しているとのことだ。
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Borderlands 2における布表現の秘密
Borderlands 2では,衣服や旗,幌といった布状のオブジェクトが多数登場する。これらは単にひらひらと動く見た目だけの存在ではなく,銃撃で穴を開けたり,ナイフで切り裂いたりできる。また,動的キャラクターとカーテンのような布状オブジェクトの衝突も正確に判定しているので,カーテンがキャラクターを覆うような挙動も示す。
これも当然,PhysXによって実現された表現であり,PC版ではGPUアクセラレーションで演算される。
![]() 開発当初は,布の表現を頂点アニメーションで実現しようとしていたという |
![]() 最終的にはシミュレーションベースで実践されることが決定された |
元々の布状オブジェクトは,少ないポリゴン数でモデリングされた“折り目の粗い折り紙”のようなものだが,PC版では実行時にテッセレーションを行って多ポリゴン化したうえで,各頂点に対しての物理シミュレーションを適用する設計となっている。
また,布の伸び縮みを表現する“バネ物理”表現や,破壊や破れを制御するための追加のボーンが,布を構成する各ポリゴン上の頂点に仕込まれているとのことだ。
![]() 布オブジェクトはベースモデルから,テッセレーションされて表示される |
![]() 物理シミュレーション用のパラメータ設定 |
![]() |
![]() |
![]() |
Sanders氏は,「布シミュレーションの計算負荷はパーティクルエフェクトに対する計算負荷よりも高くなるため,ゲームシーンのデザインに配慮する必要があった」と,当時を振り返って述べている。極端に言えば,ゲームシーンの至る所に布を置いてしまうと,それによって表示のパフォーマンスが下がってしまうというわけだ。
Borderlands 2における流体表現の秘密
SPH法による独特の表現とその限界
Borderlands 2において,ゲーム性やキービジュアルに深く関わっているのが,流体の表現だ。
たとえば生きているキャラクターを殺したときの流血表現や,敵が吐き出す吐瀉(としゃ)物といったバイオウエポン系攻撃,そして背景オブジェクトとしてのさまざまな色の液体の表現において,PC版ではリアルな(というよりも独特な?)流体グラフィックスエフェクトが適用されている。
Borderlands 2ではこうした流体エフェクトに,昨今のゲームグラフィックスで採用事例の多い,「Smooth Particle Hydrodynamics」(SPH:スムーズ パーティクル ハイドロダイナミクス)法という流体表現を採用している。
ちなみにこのSPH法も,スクウェア・エニックスのAgni's Philosophyで採用されたテクニックのひとつである。ここでは大まかな説明だけに止めているので,詳細は2月9日に掲載した解説記事を参照してほしい。
SPH法では,流体表現をビルボード的なパーティクル単位で行う。だが,描画時に単なるビルボード描画を行うのではなく,まず深度バッファに半球状の深度情報を描き込んでから,これを平坦化して半球の表面をならし,その凹凸に見合ったライティングやシェーディングを行っている。パーティクル群が形成する液体の界面を生成する演算を,画面座標系で行うことから,流体表現としては比較的軽量な手法とされ,ゲーム向けの実装だともいわれる。
![]() Borderlands 2における流体表現は,GDC 2010でNVIDIAのSimon Green氏が発表したSPH法を使っている |
![]() SPH法は,水面としてのポリゴン生成は行わない,画面座標系の処理 |
![]() |
![]() |
![]() |
![]() |
| 流体シミュレーション自体は約2万5000パーティクルを使い,CUDAにより演算している |
たとえば視点(=カメラ)が固定で,表現したい流体がカメラから極端に近すぎたり遠すぎたりしないデモ映像ならば問題は少ない。だがBorderlands 2の場合,プレイヤーは自由に動くし,流体の発生源である敵キャラクターも動き回る。そうなると,流体が画面に大写しになる場合もあれば,遠くに描かれる場合もあるため,1パーティクルあたりの“流体の解像度”が変わってしまう。
簡単に思いつく対策としては,「大写しになる流体には,たくさんのパーティクルを使って解像度を上げる」とか,「遠くの流体は少なめのパーティクルで表現する」といった,LoD(Level of Detail)的な手法が考えられる。しかし,流体というものは,水滴が何かに当たると飛び散るように,衝突すれば飛散するものである。LoD的手法だけでは,簡単にはいかないのだ。
そこでBorderlands 2では,視点からの距離に応じてパーティクル密度をなるべく均一化し,パーティクルの大きさも適宜拡大縮小するような制御を入れているという。
だがそのような制御をしたとしても,実際に流体が大写しになれば,パーティクル解像度が不足することもあり,そうなると流体にジャギーが見えることになるだろう。さらに,Borderlands 2でのSPH法のパーティクルは,ゲーム画面の描画解像度に対して,縦横半分の解像度で処理されている。基本的にジャギーが強めに出がちな設計なのだ。
![]() |
| SPH法で流体を表現する際に出るジャギーは,FXAAで対策が可能である |
そのため,Borderlands 2の開発チームでは,SPH法による流体描画のジャギーを低減すべく,「FXAA(Fast Approximate Anti-Aliasing)」を使うことにしたと,Sanders氏は説明した。
![]() |
![]() |
| 左はSPH法による流体表現では出がちなジャギーが見えている。右はFXAAにより,スムーズになった流体 | |
こうして,目立つ問題はひととおり解決させたBorderlands 2の流体表現だが,マイナーな問題点はまだまだ散見されるという。そのうちのひとつは,異なる種類の流体が混ざり合ったときの表現が不自然になること。うまく混ざらなかったり,あるいは混ざってもダマになってしまったりするという。
もっとも,これはSPH法の表現最小単位がパーティクルなのでやむを得ない。流体に見えるように描画しているだけで,実際は粗いパーティクルの集合にすぎないのだから,混ざらないのはある意味当然なのだ。
![]() 複数種の流体が混ざったときに,SPH法では不自然になりがちだ |
![]() SPH法にも得意な面と不得意な面がある |
もうひとつは,画面座標系での処理となるため,SPH法では描画順序をしっかり制御しないとおかしな絵になることだ。SPH法でパーティクルが描画されている場合,基本的には視点から見て表側の界面しか描画されない。シーン内オブジェクトとSPHパーティクル,視点の位置関係によっては,正しく描画されない状況が起こりうるというわけである。
こうした問題点についてSanders氏は,今後の技術改良で対応していきたいと述べていた。
![]() 描画順序に起因する問題の例。ゲーム画面の中央に見える出入り口の中に,緑の吐瀉物が一切付着していないのは不自然 |
![]() SPH法による流血表現では,死体の横に浮き出たままになる。「血痕のデカールテクスチャにしたほうがよかったかも」とSanders氏 |
まだ荒削りな部分や課題も多いとは感じるが,GPGPUベースのシミュレーションを貪欲に採用したBorderlands 2のゲームグラフィックスは,高く評価できる表現を実現した。PlayStation 4やほかの次世代機のゲームでも,GPU PhysXは難しいにしても,本作で使われたような技術が応用されていくに違いない。

















































