オススメ機能
Twitter
お気に入り
記事履歴
ランキング
お気に入りタイトル/ワード

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

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

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

モバイル版4Gamer(β)
※ドコモ旧機種には対応してません
特集記事一覧
注目のレビュー
注目のムービー
印刷2012/08/28 00:00

イベント

[SIGGRAPH]スクエニの「Luminous Studio」やEpicの「Unreal Engine 4」などに関する技術解説が行われた「Real-Time Live!」レポート(2)

 前回のレポートから少し時間が経ってしまったが,2012年8月11日に掲載した「Real-Time Live!」レポート(1)に引き続いて,レポートの後半となる「Real-Time Live!」レポート(2)をお届けしたい。
 Real-Time Live!とは,開発者や制作者がリアルタイムレンダリング技術を披露し,プレゼンテーションを行うイベントのことだ。SIGGRAPH 2010から開催されているので,今年で3回めの開催ということになる。

[SIGGRAPH]最先端のリアルタイムレンダリングデモが
多数披露される「Real-Time Live!」レポート(1)


 「Real-Time Live!」レポート(2)では,スクウェア・エニックスの「Luminous Studio」をベースとする技術デモ「Agni's Philosophy」や,Epic Gamesの「Unreal Engine 4」を用いた「Elemental」といった,次世代ゲームグラフィックスのプレゼンテーションはもちろん,Activision BlizzardやLucasArts Entertainment Companyによる,「実は私達こんな凄いことをやってました」的なものまでを取りそろえてみた。順番に紹介していこう。


Agni's philosophy

by 橋本善久氏(スクウェア・エニックス/日本)


Unreal Engine
E3 2012で公開されたAgni's Philosophyが技術的視点から解説された
橋本善久氏(スクウェア・エニックス)
 スクウェア・エニックスが新世代ゲームエンジンとして開発を進めているLuminous Studio。その存在は2011年に明らかとなったが,「E3 2012」では,そのエンジン上で構築された技術デモ,Agni's Philosophyが公開されていた

 SIGGRAPH2012のReal-time Live!では,来場者全員がAgni's Philosophyの技術デモを見ているものと想定し,その全編映像はあえて流されておらず,要素技術の解説のみがスクウェア・エニックスの橋本善久氏によって行われた。

 念のため本稿では,公式サイトで公開されているAgni's Philosophyの全編映像を下に掲載しておくが,CEDEC 2012では,「メイキングオブ『Agni's Philosophy - FINAL FANTASY REALTIME TECH DEMO』-リアルタイムCG映像の未来」と題されたセッションが行われており,橋本氏がAgni's Philosophyの開発秘話を語る様子を8月21日に掲載した記事でレポートしているので,そちらも参照してみるといいかもしれない。


 さて,今回のプレゼンテーションでまず紹介されたのは,キャラクターの髪や髭の表現だ。
 現行ゲームのグラフィックスにおいて髭は,短冊がジョイントされた帯状,もしくはヒレのようなポリゴンに髪の毛っぽいテクスチャを適用して表現するのが一般的だが,Agni's Philosophyでは,実際に線分として髭を植え込んでいる。さらに,それを増毛するためにジオメトリシェーダを用い,線分をテッセレーションし,幅広の帯にしてレンダリングしているとのことだ。シェーディングには,髪の毛の簡略化ライティングモデルとして著名なSteve Marschner氏の手法を採用しているという。

 デモでは,Agni's Philosophyの冒頭に出てくるガイド役のおじいさんを利用。拡大画像を出してパラメータをいじって毛髪の伸び方や縮れ具合を調整し,事前に植え込まれている髭モデルではなく,リアルタイムレンダリングしているものだということをアピールしていた。


 橋本氏は,もうひとつ,冒頭シーンで無数の虫(=ホタル)がドラゴンの骸骨に群がり,ドラゴンの肉片に変態していく表現についての解説も行っている。
 あまりに膨大な量の虫は,一見,スプライト(ビルボード)表現に見えるかもしれないが,実は,ちゃんとモデリングされた3Dオブジェクトなのだ。この膨大な虫の大量描画は,同一3Dモデルを異なるパラメータ,つまり異なる座標や異なるアニメーションなどで描画するジオメトリインスタンシングによって実現しているという。

 虫がとろけて肉片へと変異していく様子はまるでメタボール表現のようだが,これは実のところパーティクル表現だ。ただし,パーティクルを表示フレームにただレンダリングするのではなく,同時にZバッファに対して“もっこり”とした球形の深度情報を持たせて描画しているという。
 Zバッファには,重なり合った球形状の深度情報が無数に書き込まれることになるが,これにブラーをかけて滑らかに(≒整地)して,深度情報から法線情報を生成する。さらに,この法線情報をもとに,ライティングを使ってブヨブヨしたものがくっつき合っているような表現を実現しているのだ。

 デモでは,深度情報へのブラーを外してただの球形が重なり合っているだけの状態や,球形の半径を極端に大きくするといった様子が披露された。



Unreal Engine 4 Elemental

by Paul Oliver氏(Epic Games/アメリカ)


 続いて紹介するのは,Epic Gamesの新世代ゲームエンジンであるUnreal Engine 4のプレゼンテーション,Elementalだ。こちらはReal-time Live!のラストを飾った技術デモとなる。

Paul Oliver氏(Epic Games)
Unreal Engine
Elemental


 Unreal Engine 4では,レンダリングメソッドとしてディファード・レンダリング(Deferred Rendering)を採用しており,さらに,リアルタイム大局照明(Global Illumination,グローバルイルミネーション)エンジンを組み込んでいるのが特徴だ。
 組み込まれているリアルタイム大局照明エンジンは,SIGGRAPH 2011で発表された「Sparse Voxel Octree」(スパースボクセルオクツリー,以下 SVO)法を用いたもので,レンダリング対象となるシーンを空間分割し,それにより生成されたボクセル(Voxel)を処理単位としてコーントレーシング(Cone Tracing,錐状体トレーシング)する「Interactive Indirect Illumination Using Voxel Cone Tracing」(ボクセルコーントレーシングを用いたインタラクティブインダイレクトイルミネーション,SVOGIと呼ばれることが多い)という手法が採用されている。

Elementalの要素分解を示した貴重なスライド
Unreal Engine Unreal Engine

 NVIDIAとEpic GamesによるUnreal Engine 4の解説をレポートした記事に詳しく記載しているのでそちらを参照してほしいが,ここでも軽く説明しておこう。

 SVO法とは,レンダリングターゲットとしている3Dシーンのジオメトリ詳細度(密集度)に応じて適宜,疎密なボクセル化を行い,各ボクセルごとに代表平面を仮定してしまうという大胆なジオメトリ解析法である。ようするに,空間をその複雑度に応じて,適当に疎密なポリゴンに代表化してしまうのだ。

 実際にピクセルレンダリングを行う場合には,SVO法によって得られた情報を使い,着目しているピクセルを通るレイを放つレイトレーシング的な処理をすることになる。

 レイは,3Dシーン内をトラバースする(進ませる)のではなく,先ほどの疎密ボクセル構造を舐めるように飛ばしていく。事前に3Dシーンの解析が終わり八分木構造でボクセル化されているため,何もない空間を一気に飛ばして,密度の高い部分のみをじっくりとトラバースできるので,非常に広い空間に対して効率よく大局照明を行えるわけだ。
 こうして,「代表ポリゴンにレイが到達し,そこに直接光のライティングが行われているならば,その光量を持ち帰る」という,間接照明(≒大局照明)が実現されることになる。
 Unreal Engine 4のレンダリングエンジンでは,1本の線としてレイを飛ばすのではなく,トラバースするごとに参照先が広がっていく,錐状体のレイを飛ばすようになっている。これが前述したコーントレーシングである。

 なお,Unreal Engine 4では,SVOGIにより,リアルタイムで大局照明を実現できるとされている。キモとなるのはSVO処理だが,こちらはリアルタイムでの部分更新が可能なので,キャラクターが動き回っていても,つじつまの合う大局照明を実現できることになる。
 ただ,このSVO法による疎密ボクセル化処理では,仮想的に設定した3つの視点から3方向にレンダリングするようなプロセスを取るため,GPU側にあるラスタライザの特質上,遠方の情報が不正確になってしまう。オープンワールドのようなシーンに対しては,どの程度有効なのかまだ未知数とされているのだ。

 なお,Real-time Live!では,SVOGIの解説に加えて,CPU支援が一切不要なGPGPUベースのパーティクルシステムの解説も行われていたので,以下にスライドとムービーで紹介してみたい。

CPUではリアルタイムの制御と更新がとても無理な100万個超のパーティクルエフェクトだが,GPUならそれぞれのパーティクルには個別の力場処理を行える
Unreal Engine



Separable Subsurface Scattering

by Jorge Jimenez氏(Universidad de Zaragoza/スペイン)


Jorge Jimenez氏(Universidad de Zaragoza)
Unreal Engine
Activision Blizzardと併記されていたので「あれ?」と思ったのだが,氏は同社の社員になっていた。氏のWebサイトには,2012年にPhD(博士)を取得したと記載されており,SSSは在学時の研究ということから,サラゴサ大学名義で講演を行ったのだろう
 IRYOKUというハンドル名で,リアルタイムレンダリングの世界においてはちょっとした有名人のJorge Jimenez氏は,スペインのサラゴサ大学を経て,現在,Activision Blizzardに勤務している人物だ。

 そんなJimenez氏の最新研究成果「Separable Subsurface Scattering」(以下,SSS)の技術デモがReal-time Live!にて,リアルタイムで実演された。

 Jimenez氏が開発したSSSは,PlayStation 3やXbox 360といった現世代のゲーム機では実現できないかもしれないが,現行のハイエンドGPUを搭載したPC,あるいは次世代ゲーム機ならば,リアルタイムで十分実現できるという,人肌の再現手法だ。

 リアルタイムレンダリングにおいて,非常に重大なテーマとなる人間の肌の質感表現だが,肌は多層構造の半透明材質でできているため,再現するのがなかなか難しい。レイトレーシング的なアプローチが最も堅実なやり方だとされているが,リアルタイムグラフィックス向きなソリューションとはいえないだろう。

Unreal Engine
SSSのアルゴリズムを図解したもの
Unreal Engine
SSSならば,画面内に何人のキャラクターがいても,このクオリティで肌表現が行える
 SSSの基本的なアプローチは非常にシンプルで,「拡散反射のシェーディングを行った人肌に対して画面座標系でブラーをかけ,これをマスク処理で抜き出して合成する」というものになる。SSSの原案となったのは,NVIDIAの「GeForce 8800 GTX」向け技術デモとして公開された「Human Head Demo」だ。拡散反射よるシェーディング結果をテクスチャ座標系でブラーさせていたHuman Head Demoは,正確性が高いものの,1人分の表現を行うだけでGPUパワーをすべて使ってしまっていた。

 一方,Jimenez氏の手法は,正確性が若干劣るものの,画面座標系のポストエフェクトという概念になるため,それこそ画面内にいるキャラクターが1人だろうと100人だろうと,処理コストはほとんど変わることなく,高速に表面下散乱処理を実現できるのだ。

 Jimenez氏が2012年2月に発表した論文(※pdfファイルが開きます)では,「透過光の影響が多い部位に対しては特別な処理を適用する必要がある」と結んでいたのだが,SIGGRAPH 2012のReal-time Live!では,当時の問題解決に取り組み,特別な眼球シェーダを新規開発し,眼球表現を適用したバージョンを披露していた。

Unreal Engine
眼球シェーダオフの状態
Unreal Engine
眼球シェーダオンの状態

 なお,Jimenez氏のWebサイトでは,DirectX 10世代以降のGPUでSSSを試せる実行ファイルが配布されているので,気になる人は実際に自分のPCで試してみるといいだろう。

Separable Subsurface Scatteringのリアルタイムデモムービー



Star Wars 1313

by Roger Cordes氏(LucasArts Entertainment/アメリカ)


 現在,LucasArts Entertainmentが制作している,Star Warsシリーズの完全新作タイトル「Star Wars 1313」。LucasArts EntertainmentとIndustrial Light & Magic,Lucasfilm Animation,Skywalker SoundのLucasfilmグループ4社合同という,渾身のプロジェクトだ。Real-time Live!では,そのデモが披露された。

Roger Cordes氏(LucasArts Entertainment)
Unreal Engine
Star Wars 1313

 Star Wars 1313では,Industrial Light & Magicのパフォーマンスキャプチャを使って,顔と身体の演技をモーションデータとして同時に取り込み,使用している。そう,普段,Lucasfilmが行っている映画製作のコンテンツパイプラインをトップダウン式にゲーム制作へと応用しているわけだ。
 この制作システムの影響か,CGキャラクター達の身振りや手振り,そして表情からは,従来のゲームグラフィックスとは異質な人間臭さが伝わってくる。

プレゼンテーションでは,顔面の演技を要素分解するデモが行われた
Unreal Engine Unreal Engine

 顔面には疑似表面下散乱を適用し,そのほかのオブジェクトのレンダリング技法にも物理ベースレンダリングを採用するなど,徹底したフォトリアルにこだわって制作が進められているStar Wars 1313。なお,下に掲載した公式トレイラーはリアルタイムレンダリングによるものだ。


 ただ,現在公開されているゲームビジュアルのほとんどは,PC上で動作しているものとなり,PlayStation 3版やXbox 360版では,ビジュアルのスペックダウンも考えられる。
 筆者の勝手な予想になるが,PlayStation 3やXbox 360に対して,ややオーバーキルなコンテンツパイプラインを採用する開発スタイルは,PC版のため,というよりは,次世代ゲーム機に向けた準備なのではなかろうか。

 あるいは,ゲームエンジンを使って,映画制作の「PreViz」(プリビズ:本格的な映像制作の前に作る動くCGベースの絵コンテのこと,Pre-Visualization)をずいぶん前から行っていたようなので,本作は,そうした技術の試験的な応用成果物なのかもしれない。



Leo

講演者なし(AMD/アメリカ)


LeoはRadeon HD 7000シリーズ用のテクニカルデモだ
Unreal Engine
 Real-time Live!でAMDが披露したのは,Radeon HD 7000シリーズのリアルタイム技術デモ「Leo」だ。本プレゼンテーションのみ,AMDのスタッフが機材の前に座って操作を行ったため,壇上に誰も立たないという,やや異様なプレゼンテーションスタイルで行われた。

 Leoは,「“剣士が龍を退治してお姫様を救う”という寸劇を,おじいさんが自宅のスタジオでストップモーション撮影している」という,劇中劇のような内容となっている。本デモのポイントは,「Forward+」(フォワードプラス)という,新方式のレンダリング技法が用いられている点だ。


 Forward+を簡単に説明すると,「昔ながらの通常レンダリング方式であるFowardレンダリングに,最近はやりのジオメトリ先行レンダリングと,ライティングやシェーディングに必要なパラメータを先出ししてしまうDeferred系レンダリングとの良い点を融合させたもの」ということになるだろう。

 Deferred系レンダリングの良い点は,無数の光源を取り扱えることであり,Forward系レンダリングの良い点は,MSAA(マルチサンプルアンチエイリアシング)処理や半透明処理が行いやすく,材質表現のバリエーションに融通が利くことなどが挙げられる。それらのいいとこ取りをしたのがForward+というわけだ。

白色のタイルがあればあるほど,多数の光源が影響していることを示している
Unreal Engine

 Forward+では,Deferred系レンダリングと同じく,ジオメトリを先行レンダリング(=Zバッファレンダリング)するが,無数の光源が「画面内のどこに当たるか(ライティングが実行されるか)」,あるいは「当たらないか(光源をカリング=破棄)」は,DirectX 11のCompute Shaderを使ってタイルベースの処理を行っている。「どの光源がレンダリングに関わるのか」のリストを作成してしまうところが,Forward+の特徴的なメカニズムといえよう。後段のレンダリングは普通のForwardレンダリングになるが,ライティングは前段で作成した光源リストデータを参照しながら行うことになる。

Unreal Engine
 さて,Leoでは,最大3072個の光源が置けることになっているが,それだけの数を一体何に使うのか。それは,間接光を新たな動的光源として置き,疑似的な大局照明を実現するためである。この手法は,「Virtual Point Light」(VPL,仮想点光源)を使った疑似大局照明技術で,最近ではリアルタイムレンダリング向けの大局照明技術として研究が盛り上がりつつあるのだ。
 そのほかLeoでは,物理ベースレンダリングの採用や,材質表現に「Bidirectional Reflectance Distribution Function」(BRDF,双方向反射率分布関数)が用いられている点も特徴といえるだろう。

 AMDの開発者向けサイトでは,Leoの実行ファイルが公開されているので,Radeon HD 7000シリーズのユーザーは,自分のPCで実行することが可能だ。

柔らかい間接光照明はVPL法によるものだ
Unreal Engine Unreal Engine


Brigade: Real-Time Photorealistic Rendering with GPU Path Tracing

by Samuel Lapere氏(OTOY/ベルギー)


Samuel Lapere氏(OTOY)
Unreal Engine
OTOYの主要メンバーには,HDRレンダリングの父(?)ともいえるPaul Debevec氏の名前もある
 クラウドレンダリングソリューションを提供しているOTOYのSamuel Lapere氏がプレゼンテーションを行ったのは,GPUベースで動作するリアルタイムパストレーシングの,ゲーム風技術デモだ。

 パストレーシングとは,“きまじめな”レイトレーシングといったイメージで,視線から飛ばしたレイが何かのオブジェクトに当たると,再帰的にレイを飛ばして,その場所の素材表現に必要な情報を求めていく手法である。
 レイトレーシングをリアルタイムで,というのが最近話題になりつつあるが,パストレーシングをリアルタイムで,というのは「さらにその先」の話だ。

 しかしLapere氏らは,今回のReal-time Live!にて,GPUクラウドシステム上で走らせたパストレーシングシステム「Brigade」を使って,ゲームライクなオープンワールドを1280×720ドット解像度で構築し,60fpsでウォークスルーしてみせていた。


 上の映像では,解像度,フレームレートもそれほど高くないが,これは実行環境が実際のデモとは異なるため。もっとも実際のデモでも,フレームレートを優先し,再帰的に飛ばすレイをある程度制限しているためか,ビジュアルはノイジーだった。
 一方で,下に掲載したスクリーンショットで,そうしたノイズが出ていないのは,十分に時間を掛けて膨大なレイを飛ばし,レンダリングを行ったためだ。

Unreal Engine

 なお,Lapere氏のWebサイトには,パストレーシングのより詳細な情報が記載されているので,興味のある人はそちらを参照してほしいとのことだった。

Unreal Engine Unreal Engine

[SIGGRAPH]最先端のリアルタイムレンダリングデモが
多数披露される「Real-Time Live!」レポート(1)

  • 関連タイトル:

    Unreal Engine

  • 関連タイトル:

    Brigade

  • 関連タイトル:

    ミドルウェア/開発ツール

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