8月24日(水)から26日(金)の3日間にわたりパシフィコ横浜にて、日本最大のコンピュータエンタテインメント開発者向けカンファレンス「CEDEC2016」(コンピュータエンターテインメントデベロッパーズカンファレンス2016)が開催された。本稿では、ビジュアル・アーツ系のセッション「NPRでの大域照明活用事例 〜Street Fighter V meets Enlighten〜」をレポートする。
TEXT & PHOTO_小野憲史
EDIT_沼倉有人 / Arihito Numakura(CGWORLD)
CEDEC 2016の会期3日目となる8月26日(金)に催された「NPRでの大域照明活用事例 〜Street Fighter V meets Enlighten〜」。その壇上には、ARM傘下のGeomericsでシニアエンジニアを務めるウィリアム・ジョセフ氏と、カプコンのアートディレクター・亀井敏征が登壇し、グローバルイルミネーション(GI、大域照明)向けミドルウェア「Enlighten」を使用した、ノンフォトリアルな画づくりについて解説を行なった。
写真には写っていないが、壁には入口側の壁には立ち見の聴講者がずらりと並び、熱気あふれる講演となった
EnlightenはリアルタイムGIを実現するミドルウェアで、Unreal Engine (UE) 4とUnity 5に内蔵されており、SDKを介して内製ゲームエンジンへの統合も容易だ。2013年にARMに買収されたことで、近年ではモバイルゲームのサポートにも注力している。
ウィリアム・ジョセフ氏(ARM Enlighten事業部、シニアエンジニア)
もっとも、Enlightenの活用はフォトリアルなGI表現が中心で、『STREET FIGHTER V』のようなノンフォトリアル(NPR)表現に対する活用事例は少ない。それだけに開発者の注目は高く、セッション会場は立ち見が出るほどの盛況ぶりだった。
亀井敏征氏(カプコン CS第二開発統括 第二開発部 第一開発室、アートディレクター)
<1>Seastack BayによるEnlightenの紹介
セッション前半ではGDC 2016で公開された海辺のデモ「Seastack Bay」を用いて、ジョセフ氏がEnlightenの特徴を解説した。Seastack Bayは25キロ四方(625平方キロ、東京23区の面積が621平方キロ)に広がる海岸地帯で、Uneral Engine 4とEnlightenで作成されている。オープンフィールド向けのゲームステージとしても、そのまま活用可能だ。
「Seastack Bay」Techデモ
もっとも、グラフィックアセットは他のデモの再利用でまかなわれており、制作チームはわずか2名。主要光源はSkylightのみで、あとはEnlightenが提供するGIで、細部にいたるまでリアルな陰影が表現されている。ジョゼフ氏はGIの効果をわかりやすく示すために、切り立った渓谷や崖、洞窟など、縦に長い場所を意図的にデザインしたと語った。
Enlightenではランタイム側でリアルタイムにGIを調整することもできる。Seastack Bayでも天候や時間帯による間接光の変化をリアルタイムに変更可能。Seastack Bayでは紹介されなかったが、室内で燭台を倒すと、それに伴い影の描写が変化する、などの演出も行える。
大域照明OFF(左)とON(右)の比較。ONでは、同じシーンでありながら色味や質感が大幅に向上している。ライトはSkylight一灯とのことだが、光が岩肌を反射することで、より現実に近い色彩に仕上がっていることがわかる
EnlightenのGI効果は大きくライトマップとライトプローブという2種類の設定で行われる。ライトマップはフィールドのように静的で広範囲なサーフェース。ライトプローブはキャラクターのようにstaticをつけていない、動的なオブジェクトに対して有効だ。
なお、ライトマップは近景・遠景・背景など、段階に応じて解像度を調整し、事前計算の時間を効率化できる。事前計算ではブッシュや橋など、GIにさほど効果をおよぼさない小さなオブジェクトを省くことで、時間を短縮することも可能だ。ちなみにSeastack Bayでは10台のPCを並列処理させ、40分間で終了したという。
遠景は青、近景は緑といった具合に、解像度の異なるライトマップが色分けされている。ライトマップはタイル状のメッシュで区切られており、メッシュ単位で解像度の設定を変えることが可能。また、ライトマップを事前に計算しておくことでリアルタイムによる大域照明を実現できる
ライトプローブはディフューズ(拡散反射)する球体のことで、空間内に配置し、その中を移動する動的なオブジェクトなどに対して、間接光を加えられる。空間内に矩形を区切り、その範囲で配置することも可能だ。リフレクションのキューブマップをリアルタイムに更新し、間接光の色味を調整することもできる。後述する『STREET FIGHTER V』でもこの機能が多用されている。
ライトプローブは矩形で指定した範囲内に自動で配置され、その範囲内に配置されたオブジェクトに大域照明を適用することができる。当然ながらライトプローブの数は処理負荷に影響を与える
任意のサーフェースを発光させる機能もある。Seastack BayでもアニメーションとEmissive Colorがついたマテリアルで溶岩を表現しており、清流を溶岩に変更することも可能だ。なお、溶岩に近い岩肌が赤く照らされているなど、ここでもGIの効果が得られる。そのため追加のランタイムコストを消費することなく、エリアライトの効果が出せる。
任意のサーフェスを範囲指定で発光することが可能。発光体からも周囲に対して大域照明の影響を反映させることができるので非常に便利とのこと。溶岩を清流に変えるといった変更もリアルタイムで行えるとのこと
前述のように「Seastack Bay」はUE4ベースで作られている。そのためUE4のブループリントを用いて、GI調整用のUIを追加することも容易だ。ジョセフ氏は「Enlightenを使うと、ライティングのイテレーションを高めて、可能な限りベストな表現ができる」と効果をアピールした。
次ページ:
<2>Enlightenだからこそ実現した間接光表現
<2>Enlightenだからこそ実現した間接光表現
続いてカプコン・亀井氏が登壇し、『STREET FIGHTER V』の画づくりにおいてEnlightenが果たした役割を解説した。亀井氏は『STREET FIGHTER V』では他のハイエンドゲームとの差別化や、歴代シリーズのアートスタイル踏襲のため、NPRによる「油彩+リッチなライティング」を目指したと語った。
『ストリートファイターV』ハイエンドCGトレーラー
『STREET FIGHTER V』はUE4ベースで開発されており、間接光もUE4標準のIndirect Lighting Cacheと、Enlightenによる二段階で行われている。これによってキャラクターの間接光に意図的に色を加えて、鮮やかな色彩やディティールアップを可能とした。
フォトリアル全盛のAAAゲームの中で埋没することなく、シリーズの伝統も踏襲した『STREET FIGHTER V』の画づくり。これを成し得る上では間接光の強調が不可欠であった
【ライティングのワークフロー】
1.背景ライト(Sky Light / Static Light)
2.キャラライト(Statinaly Light)
3.間接光(Indirect Lighting Cache / Enlighten)
3段階のライティングを経て完成した『STREET FIGHTER V』の個性的なビジュアル。その中でも仕上げに用いられたEnlightenの効果がポイントとなった
亀井氏はEnlightenを使用した理由として「アーティストが思うがままに、意図的な色を間接光で当てたいが、そのためにライトビルドすることは避けたかった」からだと述べた。そのためにはライトプローブで動的キャラクターに対してリアルタイムに間接光を加えられるEnlightenが不可欠だったという。
Enlightenによる間接光の有無でビジュアルから受ける印象が大きく変わることがわかる。間接光に固有の色をリアルタイムで加えられることもEnlightenの強みのひとつだ
一方で『STREET FIGHTER V』では格闘ゲームということもあり、Enlightenの特徴である、ランタイム側によるリアルタイムなGI制御は行われていない。亀井氏も「本来のEnlightenからは少し離れた、贅沢な使い方」だと補足した。
セッションでは実際の開発環境を用いたデモも行われた。『STREET FIGHTER V』の中国ステージではステージの上手(右側)が寒色系、下手(左手)が暖色系の色味、中央はその中間で照らされており、格闘ゲームならではのメリハリがつけられている。
Unreal Engine 4上のエディタで実際のステージを開いた例。Enlightenはメニュー画面が1つに統合されているので直感的に作業が行える。先日Unity 5にも統合されたほか、自社開発したエンジンにもSDKを介して組む込むことが可能だ
ステージ全体を照らすのが上空に設置されたSky Lightで、上手側と下手側で1灯ずつ、合計2灯が設置されている。ステージ上にはたくさんのライトプローブが配置されており、この中にあるキャラクターやオブジェクトが間接光の影響を受ける。
このとき、Sky Lightに「Enlighten On」の設定を加えると、ライトプローブに一次光の影響を廃して、間接光だけを拡散反射させられる。前述の通り、リフレクションのキューブマップを調整することで、色味をリアルタイムに調整可能だ。このようにすることで、キャラクターの立ち位置によって、自動的に寒色・暖色の間接光を付与できた。
ライトプローブの色味をエディタで調整した例。この空間に存在するオブジェクトに対して、エディタで設定した色味が間接光として加えられる。UE4でゲームプを楽しみなら(プレイヤーの目線で)つくりこむことが可能である
Enlightenを使用することで、NPRな色彩表現ができ、ライティングの設定コストも削減できた......このようにまとめた亀井氏。Indirect Lighting Cacheによる間接光の表現を廃して、Enlightenに一本化していく方針も明かされ、セッションは終了した。
将来的にはEnlightenのみで間接光の表現を集約させていく方針とのこと。ワークフローをシンプルにすることで、アーティストの作業量を軽減させることも期待できる