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

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

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

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

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

イベント

[SQEXOC 2012]リアルタイムレンダリングデモ「Agni's Philosophy」に用いられた最新グラフィックス技術の全容を見る(前編)

ミドルウェア/開発ツール
 2012年11月23日と24日にわたって開催されたスクウェア・エニックスによるオープンカンファレンス2日め,同社の新世代ゲームエンジン「Luminous Studio」のリアルタイム技術デモ作品「Agni's Philosophy」関連のものとしては本イベントで最後となる,「リアルタイムグラフィックス技術解説」セッションが行われた。
 このセッションは,次世代ゲームグラフィックスを先取りするAgni's Philosophyに用いられたさまざまなリアルタイムグラフィックス技術を解説するものになる。現時点では次世代ゲーム機のスペックが不明瞭なため,ここで紹介された技術のすべてが実用化されるわけではないだろうが,「次世代ゲームグラフィックスの目標的水準」のようなものは見えてくるはずだ。項目が多岐にわたるため,今回は前・中・後編の3部構成でお届けしたい。


Agni's Philosophyの基本情報


 このセッションを担当した登壇者はスクウェア・エニックス,テクノロジー推進部のRemi Driancourt氏Napaporn Metaaphanon氏だ。共に海外から日本にやってきたエンジニアで,実はテクノロジー推進部にはこうした海外からの研究者も多く参加している。

Remi Driancourt氏(スクウェア・エニックス テクノロジー推進部 シニア R&D エンジニア)。同氏は元々はグラフィックスの専門家ではなく,ロボティックスやAIの専門家であったが,技術力を買われ,現在は,リアルタイムグラフィックス技術の研究開発を担当している
Napaporn Metaaphanon氏(スクウェア・エニックス テクノロジー推進部 R&Dエンジニア)

 まず,前提情報として触れておきたいのは,Agni's Philosophyでは,ヴィジュアルワークス部が手がけたプリレンダー版のジオメトリデータ(ポリゴンモデル)を,ほぼそのままの形でリアルタイムに持ってきているということだ。
 ただし,一部のキャラクターではポリゴン数の削減が行われており,例えば主人公Agniは,ヴィジュアルワークス部でのモデリング段階では205万ポリゴン(毛髪類を含まず)だが,リアルタイム化に際して約40万ポリゴン(毛髪類を含まず)と軽量化されている。
 ちなみに,毛髪は,基本的にはヴィジュアルワークス部が「Maya」でキャラクターをモデリングした時点で与えていたNURBS(※1)カーブの制御点パラメータを,そのままLuminous Studioのリアルタイムレンダリングエンジンで継承してリアルタイム描画させているという。

※1 Non-Uniform Rational B-Spline:非一様有理Bスプライン関数

 シーンにもよるが,多いシーンでは1フレームあたり1000万ポリゴンのレンダリングが行われており,おおよそだが現世代のゲームと比較して10倍ほどのジオメトリ量になっている。

街のシーンの遠景ショットをワイヤーフレーム表示させたもの
ミドルウェア/開発ツール

ミドルウェア/開発ツール
ミドルウェア/開発ツール ミドルウェア/開発ツール
各シーンにおける頂点数(※隣接する頂点はポリゴン同士で共有されているので閉じているモデルという前提であれば頂点数≒ポリゴン数と捉えて問題ない)とテクスチャデータサイズの情報。「このくらいが次世代機では目安になるはず」――という予測情報であるとともに,ゲーム機メーカーに「このくらいは動かせるようにしてください」という要求仕様とも取れる
ミドルウェア/開発ツール

デモのリアルタイム化におけるパイプラインについて解説した岩﨑 浩氏(スクウェア・エニックス テクノロジー推進部 リード エンジニア)
 プログラム的な処理について解説した岩﨑 浩氏(スクウェア・エニックス テクノロジー推進部 リード エンジニア)のセッションでは,Agni's Philosophyデモのランタイムの実行環境は,CPUが「Core i7-3770K/3.5GHz」,GPUが「GeForce GTX 680」,メインメモリは32GBという構成だったことが明かされた。
 なお,岩﨑氏によれば「実行にはこの環境が必要だったということではなく,その時点での最高スペックのPCを用意して実行しただけ」と,このハードウェア構成にした理由を述べていた。CPUやメモリについては,まだまだ使い切っていないとのこと。

ランタイム実行環境のスペック
ミドルウェア/開発ツール


Agni's Philosophyのライティングフィロソフィ


 Agni's Philosophyでは,ライティングをFP16(16bit浮動小数点数)ベースのHDR(High Dynamic Range)でレンダリングし,ライティング計算はガンマ補正された対数空間ではなく,線形空間で行っているとのこと。ディスプレイ表示に適した階調のガンマ補正は,HDRレンダリング完了後に行われる8bit整数へのLow Dynamic Range化処理であるトーンマッピング時に行われる。

ミドルウェア/開発ツール
Agni's Philosophyのレンダリングパイプラインの簡略模式図
ミドルウェア/開発ツール

 最近のゲームではとても重要視されている間接光ライティング,すなわち大局照明(Global Illumination:以下,GI)については,Agni's Philosophyが,ゲームではなくカメラパスが固定される映像作品であったことから,最終的な映像としての見映えを重視して,事前計算を伴った現実的な実装を採択したとのことだ。

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

 事前計算GIは,2D版と3D版の両方のアプローチで実践している。
 2D版というのは,要するに,ライトマップテクスチャのことなのだが,本作で用いているのは普通のライトマップではない。
 一般的なライトマップの場合,テクセルに格納する値は拡散反射によるライティング結果になるが,本作の場合,各テクセルには,全方位からの入射光の情報を球面調和関数(Spherical Harmonics:以下,SH)の形で格納している。球面調和関数とは,簡単に言えば,放射状に広がる全方位方向の情報分布を基底関数の和で表現するもので,3DCGでは空間全周の状態を非可逆に圧縮する技法としてよく活用されている。

球面調和関数(SH)ライトマップ
ミドルウェア/開発ツール

 本作では,球面調和関数に与えるスケール係数群をライトマップテクスチャに格納しており,実際のライトマップテクスチャ適用時には,テクスチャから読み出した係数を球面調和関数に与えていくことで,このテクセルにやってくる全方位からの光を(低精度ながら)復元し,ライティング計算を行っている。
 ライティング計算時には,拡散反射計算だけでなく鏡面反射計算まで行われている。これにより,ライトマップでありながらも,視線移動に対応したGI効果からの淡いハイライトまでが得られるのである。ちなみに,コナミの「METAL GEAR SOLID 4 GUNS OF THE PATRIOTS」では,このテクニックとよく似た手法を頂点単位で実装していた。
 このSHライトマップテクスチャは,3Dモデルに直接貼り付けるようなイメージで利用されている。

 対する3D版のほうは,3Dモデルに直接貼り付けるのではなく,シーンを適当な間隔で区切り,空間の各地点における「全方位からくる光の情報」を球面調和関数で表現しておく方式がとられている。つまり,シーンに充満する複雑なGI効果(環境光)を,各地点における仮想的な全周光源(ただし,SH化して表現するので大ざっぱなものにはなる)に置き換えるというアプローチだ。
 分割された空間は縦・横・高さを持つ三次元的な箱で埋め尽くされたような形で管理され,箱の一つ一つが1テクセルに対応するようなイメージになる。このデータ構造を3Dテクスチャで構成してやるわけだ。なので,「テクスチャ」とは言っても,実際には,x,y,zからなる三次元配列数値テーブルという体裁になっている。

SH放射輝度ボリューム
ミドルウェア/開発ツール

 動的な3Dモデル(例えばキャラクターモデル)は,ライティング時に,自分が今いる箱の周辺に対応するテクセルを読み出して球面調和関数を復元して補間し,これをライティング計算に当てる。つまり,3Dモデルは,シーンの中を縦横無尽に動き回っても,この空間内の静的なGI効果をある程度正しく得られるということだ。
 この手法は,Light Probeを用いたGIでよく使われるもので,橋本善久氏(CTO,兼 テクノロジー推進部 コーポレートエグゼクティブ)がセガ在籍時代に開発に携わった「ソニック ワールドアドベンチャー」PS3 / Xbox 360 / Wii)や,Valveが「ハーフライフ 2」で用いていた手法とかなり近いものになっている。
SH効果だけを適用したレンダリング結果の例
ミドルウェア/開発ツール


疑似的な環境光からの自己遮蔽〜Ambient Occlusion


 Agni's Philosophyにおけるリアルタイム影生成は,近傍比率フィルタリング(Percentage Closer Filtering:以下,PCF)ベースのソフトシャドウ処理を組み合わせたデプスシャドウ技法を採用している。
 背景などの固定オブジェクトの影は事前生成したライトマップに焼き込まれており,レンダリング時にはそれが適用されることになる。とはいえ,背景などの固定オブジェクトに対するリアルタイム影生成(シャドウマップ)処理は行われており,固定オブジェクトから動的キャラクターへの影投射には,この影が適用される仕組みだ。

 背景(固定オブジェクト)から動的キャラクターへの影の投射は,近年の3Dゲームグラフィックスではよく使われており,前出の「ソニック ワールドアドベンチャー」やカプコンの「バイオハザード5」「バイオハザード5」PC / PS3 / Xbox 360)でも,同種の実装が行われていた。

Agni's Philosophyにおけるライティングと影のポリシー
ミドルウェア/開発ツール

 こうした手法によるリアルタイム影生成は,オブジェクトのシルエットレベルでの影生成には向いているが,鼻の穴や目のくぼみといった微細な部分に使おうとすると,シャドウマップサイズの限界から,高精度に陰影を出すことが難しくなる。また,GI効果(環境光)からの自己遮蔽による淡いソフトシャドウも同様だ。
 そこで,近年では「Ambient Occlusion」と呼ばれるアプローチで,そうした影生成(≒陰影生成)に取り組むところが多くなっている。

 Agni's PhilosophyにおけるAmbient Occlusionは,シーンのライティング状況やアーティストのセンスに応じて,いくつかの手法が使い分けられている。

Ambient Occlusionとは疑似的なGI効果の一つ。あるピクセルが「環境光からどう遮蔽されているか」という情報に基づいて陰影を付けていくアプローチになる
ミドルウェア/開発ツール
Agni's Philosophyに用いられた三つのAmbient Occlusionテクニック
ミドルウェア/開発ツール

 一つは,3Dモデルの表皮上の各点から全方位に向けてレイを飛ばして,遮蔽率をあらかじめ求めておき,これをテクスチャ化したものを用いる方法だ。一種のライトマップテクスチャだが,各テクセルには遮蔽率が格納されることになる。この遮蔽率テクスチャ生成にはLuminous Studioの内製ツールが用いられているとのことだ。
 このテクニックは,曲がったり変形したりするオブジェクトとの相性は悪いが,細部の自己遮蔽陰影までを出せる特徴がある。なので,キャラクターの顔面における鼻の穴や目の凹みなど,比較的,静的で高精細な自己遮蔽表現に使われたそうだ。

テクスチャに焼き込まれたAmbient Occlusion
ミドルウェア/開発ツール

 二つめは,近年の3Dゲームグラフィックスでは定番となる,画面座標系での自己遮蔽陰影生成の仕組みである「Screen Space Ambient Occlusion」(SSAO)だ。こちらはレンダリング結果に対してポストエフェクト的に付加できる自己遮蔽表現なので,動的な移動体や変形オブジェクトにも対応できるが,原理的に精度はあまりよくない。そのため,Driancourt氏によれば,本作ではSSAOは補助的にのみ用いたとのことだ。

Screen Space Ambient Occlusionの効果
ミドルウェア/開発ツール

 三つめは,解析的なオブジェクトベースの自己遮蔽生成(Object Based Analytical Ambient Occlusion)だ。このテクニックに関する詳細な説明はなかったが,オブジェクトを構成する各ポリゴンを遮蔽単位要素とみなし,互いに誰が誰を遮蔽しているかを解析して遮蔽率を求めていく手法だと思われる。
 これと似た手法はNVIDIAのGeForce 6000シリーズ向けに提供された技術デモ「Timbury」で採用されている。詳細はこちらを参照してほしい。
 Driancourt氏によれば,このテクニックは負荷が高いので,あまり多くのシーンで用いてはいないとのことだった。

ミドルウェア/開発ツール
Object Based Analytical Ambient Occlusion=OFF
ミドルウェア/開発ツール
Object Based Analytical Ambient Occlusion=ON

顔面などにおける特別なAmbient Occlusion処理
ミドルウェア/開発ツール
 実際のライティング時には,これらの遮蔽率値を用いて陰影を付けることになるが(※遮蔽率が高いほど暗い陰影とする),鼻の穴の中や髪の遮蔽などは,ただ黒にするのではなく,赤味を帯びさせるなどの調整を行っているという。

ミドルウェア/開発ツール
ただの黒い陰影を付加しただけのAmbient Occlusion
ミドルウェア/開発ツール
色味を加えたAmbient Occlusion・その1
ミドルウェア/開発ツール
色味を加えたAmbient Occlusion・その2

顔面に対するAmbient Occlusionのオン/オフ
ミドルウェア/開発ツール ミドルウェア/開発ツール
ミドルウェア/開発ツール ミドルウェア/開発ツール


Agni's Philosophyにおける人肌表現の秘密(1)〜画面座標系の表面下散乱テクニック


 3Dゲームグラフィックスにおいて,長らく「やりたいのにできなかった」ことの一つとが本格的な人肌表現だろう。
 Agni's Philosophyでは「次世代ゲームではこのくらいはやりたい」という意志表示とも取れるような,現実的かつ高品位な人肌表現手法を採用している。
 人肌は,半透明の皮膚が多層に重なった透明度の低い半透明材質で,入射光のうち,表皮の脂質で約6%が反射し,残りの約94%が皮下に浸透して散乱して,再び表皮から出射することが実験的に確かめられている(※人種や年齢による差や個人差はある)。これが,皮下散乱(Subskin Scattering)現象で,CGの世界では一般化して表面下散乱(Subsurface Scattering)として扱われている。

 これをまともに計算するのはとても難しいのだが,一つのベンチマーク的手法が映画「マトリックス」におけるエージェント・スミスが大量発生するシーンで採用された。のちにNVIDIAは,このテクニックをGeForce 8800 Ultra向けの技術デモとしてリアルタイム実装した「Human Head Demo」を公開している。

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

 この手法は,キャラクターの顔面(皮膚)に対するライティング結果を,テクスチャ座標系に展開して,ボカしをかけてから再びテクスチャマッピングするという大胆なアプローチになる。なお,その「ボカし処理」は,皮膚面に対して直角に入射した白色光点が,どういう色分布で皮膚から再び出射するのかを計測した「反射率拡散プロファイル」( Reflectance Diffusion Profile,以下RDP)を用いて行う。RDPについて感覚的な解説をするならば,入射点に近ければ近いほど白に近く,遠ければ遠いほど赤黒くなっていく不均等な色分布を起こすような特性,といった感じになるだろうか。

ミドルウェア/開発ツール ミドルウェア/開発ツール
NVIDIAがHuman Head Demoで用いた「人肌のライティング結果をテクスチャ座標系でボカして疑似的な表面下散乱の結果とする」とした大胆なアプローチの詳細
ミドルウェア/開発ツール

 この手法は,ハイエンドGPUを用いて一体のキャラクターの人肌表現をやるだけでも,処理負荷的に相当きつい。
 そこで,Agni's Philosophyでは,この手法を簡略化したアプローチを採択している。それは,Activision BlizzardのJorge Jimenez氏が考案した手法だ。
 Jimenez氏の手法では,拡散反射のライティング結果を前述したRDPでブラーさせる概念自体は変わらないものの,ブラーをテクスチャ座標系ではなく,画面座標系(Screen Space)で行う点が異なっている。この特徴的なアプローチから,Jimenez氏はこの手法に対して「Screen-Space Subsurface Scattering」(SSSS)という名称を与えている(※2)。
 SSSSでは,人間キャラクターがレンダリングされたフレームに対し,人肌に対して選択的にRDPに従ったブラーを掛けることで,近似的な表面下散乱を実現するわけだ。そのブラー処理は画面座標系のポストプロセス的に実施する。

SSSSのアルゴリズム概念図。疑似的な表面下散乱処理のキモとなるブラー処理を,画面座標系のポストプロセスとして実践できるので,画面内に人が何人いようが,一定の負荷で近似的な表面下散乱を実現できる
ミドルウェア/開発ツール

 このポストプロセス的なアプローチだと,1フレーム内にキャラクターが1人だろうが,100人いようが,ほぼ同一の処理時間で済む。ただし,視点から近い人体と遠い人体とでは,そのブラーさせる幅が異なってくる。具体的に言えば,近いキャラクターは大きく,遠いキャラクターは小さくブラーさせる必要があるということだ。
 これについては,「深度バッファを参照してブラー対象までの遠近を見極めたうえでブラー半径を決定する」ことで対応している。ポストプロセスの定番であるピンぼけ表現を行うための被写界深度表現でも,ピントが合っている箇所とずれている箇所のブラー径(ぼかし強度)を深度値をもとに決定するが,それと同じ考え方だ。

Agni's Philosophyにおける疑似表面下散乱処理のパイプライン
ミドルウェア/開発ツール

 Jimenez氏の論文によるSSSSでは,異なるブラー径で複数回ブラーさせて合成させる手法がとられていたが,Driancourt氏によれば,Agni's Philosophyでは,このブラー処理を1回しか行わない実装にしているとのこと。
 また,ブラー処理自体に関しても,ガウシアンブラーではなくポワソン・ディスク・サンプリング(Poisson Disk Sampling)法を採用し,ブラー対象の遠近に応じたブラー径の調整を行っているという。

(※2)現在はScreen-Space Subsurface Scatteringは,改良されて「Separable Subsurface Scattering」へと改称されたが,Screen-Space Subsurface Scatteringのほうが知名度が高いため,本稿ではこちらを用いている。

Agni's Philosophyでは,疑似表面下散乱処理に用いたブラー処理にはポワソン・ディスク・サンプリング法を採用
ミドルウェア/開発ツール
ポワソン・ディスク・サンプリング法の採用により,画面全体に対しての人肌の占有面積に応じてスケーラブルなパフォーマンスを実現することができたとしている
ミドルウェア/開発ツール

ミドルウェア/開発ツール
表面下散乱オフ
ミドルウェア/開発ツール
表面下散乱オン
ミドルウェア/開発ツール
表面下散乱オフ
ミドルウェア/開発ツール
表面下散乱オン

 この画面座標系の疑似表面下散乱テクニックは,人肌だけではなく,モンスターの表皮表現や,本作の物語におけるキーアイテムであるクリスタル(水晶)のライティングにも用いられているとのことだ。

ミドルウェア/開発ツール
表面下散乱オフ
ミドルウェア/開発ツール
表面下散乱オン
ミドルウェア/開発ツール
表面下散乱オフ
ミドルウェア/開発ツール
表面下散乱オン
ミドルウェア/開発ツール
表面下散乱オフ
ミドルウェア/開発ツール
表面下散乱オン


Agni's Philosophyにおける人肌表現の秘密(2)〜「濡れた皮膚」と「乾いた皮膚」


 人肌のキモはここまで述べた表面下散乱の要素であることは間違いないのだが,たかだか約6%とはいえ,鏡面反射の要素も無視できない。
 Agni's Philosophyでは,鏡面反射のライティングについては,リアルタイム3Dグラフィックスの基礎となる算術的な方式,すなわちBlinnシェーディングやPhongシェーディングではなく,Csaba Kelemen氏やLaszlo Szirmay-Kalos氏らが2001年に発表した「A Microfacet Based Coupled Specular-Matte BRDF Model with Importance Sampling」の論文をベースとした「KS BRDF法」を採用している。
 KSはKelemenとSzirmay-Kalosの頭文字,BRDF「Bidirectional Reflectance Distribution Function」の略で,日本語訳では「双方向反射率分布関数」となる。
 BRDFをひと言でまとめるならば,「光がどう反射するかを光学現象に沿った考え方で一般化したもの」ということになる。BRDFの実装法としては「どう反射するか」を一つの方程式で表すことが困難であることから,測定器を使って対象材質を測定したデータテーブル(=テクスチャデータ)を作成し,これをレンダリング時に参照して陰影計算に用いる方法がよく見られる。

鏡面反射(スペキュラ)の計算にはKS BRDF法を採用
ミドルウェア/開発ツール


 KS BRDFでは,超微細な凹凸を表面に持つ材質の表現に適したベックマン分布(Beckmann Distribution)が採用されており,実装にあたっては計算負荷低減のため,このベックマン分布を事前計算してテクスチャデータに落とし込んでいる。KS BRDFについての,より詳細な情報は論文のほうを参照してほしい。

ミドルウェア/開発ツール
フォンシェーディングによる鏡面反射効果。ハイライトが唐突でしかも輝きが鈍い
ミドルウェア/開発ツール
KS BRDFによる鏡面反射効果。ハイライトがなだらかでありながら,ピーク輝度は鋭い

 なお,この鏡面反射(スペキュラ)の結果の適用の仕方については二つのバリエーションがあるとのことで,具体的には,通常の「乾いた皮膚」表現用と,汗や涙などで「濡れた皮膚」表現用が用意されている。
 「乾いた皮膚」では,KD BRDFライティングによる鏡面反射に対し,GI効果(SHライティング)による鏡面反射と映り込み表現用のキューブマップテクスチャの影響をミックスさせている。
 一方「濡れた皮膚」では,映り込み表現用のキューブマップテクスチャの影響を支配的にしている。濡れれば周りの情景が映り込みやすくなる……というのは経験的にも理解しやすいだろう。

ミドルウェア/開発ツール
2種類の皮膚に対する鏡面反射効果の適用

ミドルウェア/開発ツール
「乾いた皮膚」表現のみ
ミドルウェア/開発ツール
「濡れた皮膚表現」あり
ミドルウェア/開発ツール
キューブマップテクスチャによる映り込み表現なし
ミドルウェア/開発ツール
キューブマップテクスチャによる映り込み表現あり


Agni's Philosophyにおける人肌表現の秘密(3)〜透過光表現


 耳の耳殻や鼻の頭,手の指などの突起部では,光の強度によっては,表面下散乱に加えて光の透過も発生する。手のひらを太陽にかざしてみるまでもなく,逆光状態で前述したような部位が赤く鈍く光って見える現象を経験した人は多いだろう。
 この現象は,前節で解説した画面座標系の疑似表面下散乱では再現できない。なぜなら,画面座標系の疑似表面下散乱は,表皮に入射した光に対してのシェーディングテクニックであり,逆光(透過光)は考慮されていないからだ。

 そこで,Agni's Philosophyでは,対象物の近似的な厚みを算出し,厚み情報に比例して赤味を増すようなライティング効果を付加する方策をとっている。
 この厚み情報は,光源からの対象物裏面までの距離(深度値)と,視点から対象物表面までの距離(深度値)とをそれぞれテクスチャにレンダリングし,対応するテクセル値の差の絶対値を近似的なその対象物の厚みとするのだ。そして,この「厚み」が薄ければ透過光の影響が強く,厚ければ影響は小さい(=あまり光が透過してこない)ので,この値を指標にして一次元テクスチャなどをサンプリングし,ライティングに応用するのである。

Agni's Philosophyでは,耳などの厚みの薄い部位に,厚み情報を用いた透過光表現が用いられた
ミドルウェア/開発ツール

 なお,このテクニックは,GeForce 7000シリーズ向けの技術デモ「Luna」に登場する巨大な手のモンスター「Oracle」の透過光表現に使われていたものと同じである。
 Driancourt氏によると,「キャラクターモデルに対応する厚みテクスチャを事前に持たせる手法も検討したが,その手法では動的なシーンへの対応度が低いと判断した」とのこと。
 例えば,今回採用した手法ならば,耳の後ろに遮蔽物があったとき,その影を考慮した透過光表現ができる(≒遮蔽物の影を見せられる)。一方,厚みテクスチャを持たせる手法では,透過光表現の計算は耳の厚みだけの情報で行われるため,遮蔽物の影響には対応できないのだ。

ミドルウェア/開発ツール
透過光表現なし
ミドルウェア/開発ツール
透過光表現あり

 ちなみに,厚み情報テクスチャを利用する手法はElectoronic Artsの「バトルフィールド 3」PC / PS3 / Xbox 360)でも用いられている。厚み情報テクスチャの生成に事前計算は必要だが,ランタイム時の負荷が軽いため,ゲームグラフィックスでの実用的な手法として認知されている。
 Agni's Philosophyは映像作品であり,細かい表現にまでこだわりたかったため,Lunaのような手法を採用したということなのだろう。

ミドルウェア/開発ツール
ミドルウェア/開発ツール ミドルウェア/開発ツール
ミドルウェア/開発ツール ミドルウェア/開発ツール
バトルフィールド 3では厚み情報テクスチャを用いた表面下散乱テクニックが採用されていた
ミドルウェア/開発ツール



精気すら感じられる「メヂカラ」の裏側


 人間は人間を見るとき,眼を見ることが多い。だからこそ,「目のリアル度」が,「人間表現のリアル度」に直結していると考えられる。
 顔面の表現において,人肌がリアルになり,顔面の表情が感情豊かになったとしても,最終的なCGキャラクターの演技力の決め手は「眼力」(めぢから)にあるような気がしてならない。CGキャラクターの演技に最終的な「気迫」や「精気」を与えるのは眼球表現なのではないか。

 Agni's Philosophyでは,シネマティックな映像作品であるため,一般的なゲームよりもキャラクターの顔面が大写しになりやすい。そこでAgni's Philosophyにおいても,眼球表現に力が注がれることになったという。
 一部で疑似的なアプローチも伴ってはいるが,Agni's Philosophyでは,解剖学に基づく眼のレンダリングに取り組んでいる。


人間の眼球の構造
ミドルウェア/開発ツール
 人間の眼球形状は完全な球体ではなく,角膜部分が盛り上がった形をしており,その表面は涙で濡れている。また,「黒目」で瞳孔を取り囲んでいるように見える虹彩はその内側にある。さらにその「黒目」の中心部分は瞳孔内の暗闇部分であり,その暗闇部分は眼球の内部に存在する。
 と,このような複雑な構造をした眼の再現を実現するために,Agni's Philosophyでは特別な反射を再現する「眼球シェーダ」を設計して取り組んだ。この眼球シェーダの設計にあたっては留意したポイントはいくつかあるという。
 一つは,盛り上がった角膜部分の表現。これは一般的な法線マップを用いたバンプマッピング(ノーマルマッピング)を用いて実現している。
 二つめは,角膜の奥に見える窪んだ虹彩の表現。この窪んだ虹彩の陰影も法線マップを用いたバンプマッピングで実現されている。角膜のバンプマッピングが疑似凸陰影表現ならば,これは疑似凹陰影表現といったところか。虹彩部分は,角膜で使ったマッピングデータを流用し,反転して使っているとのことだ。

ミドルウェア/開発ツール
窪んで奥に見える虹彩の陰影も,法線マップを利用した凹マッピングともいうべき処理で実現している
ミドルウェア/開発ツール
映り込み表現は,キューブマップで作成した外界情報を,法線マップに配慮した環境マッピングで適用することで映り込みが角膜の部分だけ凸状に見える

 三つめはハイライト。眼球に入射した光は,眼球表面で鏡面反射してハイライトを生じさせる(一次ハイライト)。一方,鏡面反射しなかった光は角膜上で屈折しながら入射し,前房を通過して水晶体にて反射する。その反射光は逆経路を辿って眼球面に達し,もう一つのハイライトを生じさせる(二次ハイライト)。
 この表現は,前述してきたような凸状の法線マッピングと凹状の法線マッピングの両方による鏡面反射のライティング計算を行うことで実現されている。

ミドルウェア/開発ツール
角膜上のハイライトと虹彩上のハイライトは,凸状の法線マッピング面と凹状の法線マッピング面において鏡面反射ライティングを行うことで実践している
ミドルウェア/開発ツール
最終映像

 四つめは屈折だ。視点から飛ばしたレイは,盛り上がった角膜上で屈折するため,歪んだ虹彩や瞳孔を見ることになる。
 これは,眼球上のピクセルをレンダリングするときに,虹彩や瞳孔のテクスチャにオフセットをつけてサンプルすることで実現されている。この結果,虹彩や瞳孔は引っ込んでずれて見えるのだ。

眼球における屈折表現の概念図
ミドルウェア/開発ツール

ミドルウェア/開発ツール
屈折表現オフ
ミドルウェア/開発ツール
屈折表現オン
ミドルウェア/開発ツール
屈折表現オン+そのほかの要素をすべてオン(最終映像)

顔面全体の最終画像
ミドルウェア/開発ツール

 五つめは,眼球の白目部分に対して適用する疑似表面下散乱だ。眼球の白目部分も皮膚と同じで,透明度は低いが半透明材質で構成されているため,Agni's Philosophyでは,眼球に対しても,前節で触れた画面座標系の表面下散乱処理を適用している。

眼球に対しての表面下散乱処理の適用
ミドルウェア/開発ツール

 顔面の総面積に対する眼球の割合はごくわずかだが,実際に完成映像の人間キャラクター達がアップになったときの,この眼球シェーダによる精気溢れるメヂカラを目のあたりにすると,その効果の大きさを実感せずにはいられない。


 前編はここまで。中編では「髪」「髭」「衣服」、後編では「アンチエイリアス」「屈折」「メタボールパーティクル」「インスタンシングによる蛍のレンダリングといった要素を解説していくことにしたい。
  • 関連タイトル:

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

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