ニュース
[SIGGRAPH]ゲームグラフィックス向けの先端技術も登場したリアルタイムデモ専門イベント「Real-time Live!」レポート(後編)
[SIGGRAPH]リアルタイムレンダリングの最先端が集結するイベント「Real-time Live!」レポート(前編)
Unreal Engine 4 Infiltrator Demonstration
Brian Karis氏,Epic Games
Epic Gamesの次世代ゲーム機向けゲームエンジン「Unreal Engine 4」(以下,UE4)の技術デモとして,GDC 2013で公開された「Infiltrator」が,Real-time Live!に入選した。
今回のイベントでは,デモのあとに,GDC 2013時点では公開していなかったグラフィックス技術に関しての解説が披露されており,あたかもそこだけUE4の技術セミナーのような雰囲気さえあった。
UE4のレンダリングエンジンは,「Tile Based Deferred Rendering」(TBDR)という技法を用いており,画面をタイル状に区切って,対象フレームのレンダリングには関係ない動的光源を排除するという,レンダリングメソッドを採用している。これにより,実用的な計算負荷の範囲に収めながら,数千を超える動的光源をシーン内に配置できるようになったという。
シェーディングには物理ベースシェーディングを採用し,ライティングに用いられる光源については,「Illuminating Engineering Society」(IES,照明工学学会)の規格に準拠したプロファイルを採用しているとのこと。これらにより,ライティング条件が変わっても説得力の高い材質陰影表現が可能になるほか,各光源からの光の伝搬の仕方や,光量の減衰の仕方も現実に則したものになる。
UE4の実力を見せつけるInfiltratorデモ。次世代機ではこのクオリティが当たり前になるのだろうか |
また,火花の表現に使うパーティクルシステムは,ジオメトリシェーダを活用した「GPUパーティクルシステム」で実現されている。ここでいうGPUパーティクルとは,CPUの手を借りず,GPU内だけでパーティクルの発現から消失までを制御するパーティクルシステムのことだ。UE4では,そのパーティクルの衝突判定までをGPU上で完結させているという。今回のデモでは,無数に散らばる火花パーティクルが,床や壁に衝突して反射する様子を見せていた。
DirectX 11世代GPUの代名詞的フィーチャーであるテッセレーションステージに関しては,アーティストの意図に応じて,キャラクターモデルなどにディテールを与える「アーティストプログラマブルテッセレーション」や,「アーティストプログラマブルディスプレースメントマッピング」といった機能が,UE4には実装されている。Infiltratorデモでは,この機能が活用されているとのことだ。
そのほかに重要なポイントとして,デモの説明担当者は,「カメラがパンしたときに起こりがちな『Pixel Shimmer』が,このデモには起こっていない」と強調していた。
Pixel Shimmer(Pixel Crawlingとも呼ぶ)とは,視点が横方向に移動(パン)するときなどに出やすい,“一定の時間間隔で発生するジャギー”のことだ。たとえば,MSAA(Multi-Sampling Anti-Aliasing)のようなアンチエイリアスを適用していても,ポリゴン輪郭とピクセル境界がちょうど重なったときに,アンチエイリアスがかからないピクセルが出てきてしまうことがある。
カメラをパンさせているときには,一定時間ごとにこの現象を起こすピクセルが出てきてしまうので,ゲームの画面でジャギーが一定のテンポで見えてしまうことがある。PlayStation 3やXbox 360世代のゲームでは,この現象は頻繁に起きているので,「ああ,あれのことか」と思い浮かぶ人もいるだろう。
Pixel Shimmerを避けるには,スーパーサンプリング法のアンチエイリアスを適用するのが,最も単純明快な解決方法だと言われている。ところがこの手法を1フレームごとに全画面で適用するのは,処理負荷が高くて困難だ。そこでInfiltratorデモでは,時間方向にもアンチエイリアスを適用する新手法を盛り込んでいるのだという。
今回はその手法の名称や詳細は解説されなかったが,時間方向へのアンチエイリアスの適用といえば,「SMAA」(Subpixels Morphological Antialiasing)や,「MLAA」(practical MorphoLogical Anti-Aliasing)といった手法があるので,これらの考え方を取り入れているのかもしれない。。
Infiltratorデモの最後では,画面を思い切り引いて,信じられないほどはるか遠景までが,ポリゴンでモデリングされていることが披露された。テクスチャアニメーションかと思えた遠方を飛ぶクルマの群れまでもが,ちゃんと実際にオブジェクトを設定して動かしている様子が公開されると,来場者も驚きの声を上げていた。
Massive Destruction in Real Time
Matthias Müller-Fischer氏,NVIDIA
一般的なゲームにおけるノンリニア破壊表現は,今までのやり方の場合,事前に“分解後の破片”となる3Dモデルを用意しておいて,それらを仮想的な接着剤でくっつけてシーンに配置しておき,衝撃でその接着剤が消滅すると,そこから破壊が起こる,といったアルゴリズムで実現されていた。
この手法は,比較的計算負荷が小さくて済む利点があるものの,最初から分解されているという仕組みなので,衝撃が与えられた部分から,ずれた状態で分解することもあり,不自然に見える場合がある。また,事前に用意された破片モデルよりも細かく破壊できないなど,制限の多い手法だ。
この課題に挑んだ技術デモのひとつに,NVIDIAがGeForce GTX 680を発表したときに披露した「Fracture Demo」(解体デモ)がある。以下のムービーは,GDC 2012で公開されたものである。しかし当時の説明では,「このデモでは,事前破壊モデルを生成していない」という点が強調されたものの,詳しい技術解説は行われないままだった。
今回のSIGGRAPH 2013では,その詳細が「Real Time Dynamic Fracture with Volumetric Approximate Convex Decompositions」という論文で公開されたうえに,Real-time Live!の場で,論文に合わせた新作技術デモが披露された。
下のムービーが技術デモの動画である。この技術デモは,古代ローマの闘技場のようなモデルに対して,クリックしたところに隕石を降らせて,ダイナミックに破壊していくというものだ。
結論から言ってしまえば,今回明らかにされた破壊表現のアルゴリズムは,破壊のされ方を解析的手法で計算したノンリニア破壊ではなく,事前に用意したパターンを当てはめるという作業を,プロシージャル的に行う破壊手法であった。
考え方は単純で,事前に分割するパターンを立体的なボリュームデータで持っておき,衝撃が与えられた部分に分割パターンを当てはめて,破壊対象オブジェクトを切断,分割するというものだ。
この手法は,従来の事前分解モデルによる手法と同程度の計算負荷で実現できるにも関わらず,表現できる破壊の多様性は,解析的手法に極めて近くなるということで,開発者であるMatthias Müller-Fischer氏は,「極めてゲーム向きの手法である」と主張していた。
分かりやすい2次元的な図解が論文に付属していたので,それを元に説明していこう。
まず,灰色のドーナツ型モデルに対して,黒点のところに衝撃が与えて,ここからモデルを破壊するとしよう。そこで,あらかじめ用意しておいた「切断線を定義した破壊パターン」(以下,切断パターン)を,このドーナツ型モデルに当てはめる(図の左)。この例では,図中の赤線が切断線に当たる。
中央の図は,切断パターンで分割された破片を,色分けしたものだ。ただし衝撃の伝搬を考えると,衝撃点から遠い部分まで切断パターンどおりに破壊されては不自然に見えるなので,衝撃点から遠い部分は破壊しないといった制御も,別途行う必要がある。図の右でオレンジ色に塗られているところが,破壊しない部分に当たる。
切断パターンは複数用意したり,拡大縮小したりできるので,小さな破片をさらに細かく破壊するような表現にも応用できるということだ。
この手法は,最初の「Fracture Demo」から使われていたとのこと。いずれはこれを実装したランタイムが,NVIDIAから公開されるのではないだろうか。
デモ動画を見ていると,破壊されたところから,動きがリアルな煙がやたらと発生しているのが分かる。この煙は,グリッドベースの流体物理シミュレーションを駆使して生成しているそうだ。煙と破片が衝突したときには乱流を発生させて,ちゃんと乱流の動きに合わせて,煙が流れたりする表現も実装されているという。そのあたりに注目して,ビデオを見直してみると面白い。
ちなみに,デモの実演にあたっては,GeForce GTX 690を2枚搭載したシステムを使用したという。破片の剛体物理シミュレーションや,煙の流体物理シミュレーション,そして実際のグラフィックス描画のすべてを,2枚のGeForce GTX 690で実行していたとのことだ。
Square
Thomas Mann氏ほか,Still,ドイツ
Stillというメガデモ制作グループは,フラクタルアルゴリズムを駆使して,人の目を引きつける映像効果を作り出すのを得意とするグループだ。そんな彼らが作ったSqaureは,ビデオドラッグ風というか,音楽のプロモーションビデオのようにも見える作品で,グラフィックスのほとんどは,リアルタイムの演算で生成されている。
Sqaureを構成するアルゴリズムは「マンデルボックス」(Mandelbox)と呼ばれるもので,「マンデルブロ集合」や「ジュリア集合」といったフラクタル図形の概念を,2D平面ではなく3Dの立方体に応用したものだ。
テクスチャのいくつかは手描きだが,アーティストがデザインした3Dモデルは,一切使われていない。映像がみるみる変形していく描写や,奇怪な幾何学模様が染み出してくるような描写も含めて,本作に登場する3Dオブジェクトっぽいものは,すべてプロシージャル生成されている。
しかもStillのメンバーが言うには,シェーダプログラムの総容量はわずか64KBだというから凄い。
ランタイムには通常版とLeap Motion対応版があるので,もしLeap Motionを持っているなら,後者をお勧めする。動作環境は「DirectX 10.1以上に対応するGPUを搭載したPCで,Microsoft .NET Framework 4以上がインストールされたWindows 7環境」だ。筆者もRadeon HD 5850を搭載した32bit版Windows 7のPCで動作を確認したが,64bit版Windows 8ではなぜか動作しなかった。ランタイムを試してみたいという人は,各自の責任において実行していただきたい。
Square 通常版(Zipファイル)
Square Leap Motion対応版(Zipファイル)
Real-Time Live!|SIGGRAPH 2013
SIGGRAPH 2013 公式Webサイト
- 関連タイトル:
Unreal Engine
- この記事のURL: