
『ブループロトコル』アニメ表現はリアル系描画より大変。アニメ表現を実現する多数のプロセスとこだわりを解説【CEDEC2021】
2021年8月24日(火)~26日(木)の3日間に渡り、オンライン開催されたCEDEC 2021。
8月25日にはバンダイナムコスタジオの『ブループロトコル』エグゼクティブテクニカルディレクター・大井隆義氏による講演“BLUE PROTOCOLにおけるアニメ表現技法について ~実装編~”が行われた。その内容をリポートする。


昨今はゲームエンジンの進歩により、オブジェクトの描画はよりリアルに近付けられるようになった。そんな中、『ブループロトコル』はアニメ表現にとことんこだわっている。一見するとリアルな描写よりもアニメ表現は簡易に見えるが、むしろリアル描写よりもこだわりが多いようだ。
今回の講演では、ライティングを始めとするさまざまなアプローチと、それを実際のレンダリング過程でどのように盛り込んでいくのか、一連の流れが紹介された。

なお、CEDEC 2021の初日にはアニメ表現のノウハウや苦労がキャラクター描画の視点から語られている。こちらも併せてご参照いただきたい。
関連記事
『ブループロトコル』豊かなアニメ表現の秘訣「ニーソックスの食い込みに対応」「ほくろは離れるほど大きく」「マージ処理で負荷を軽減」【CEDEC2021】
デファードレンダリングの基礎構造を振り返る
『ブループロトコル』は、バンダイナムコオンラインとバンダイナムコスタジオで共同開発中のオンラインアクションRPGだ。2020年4月にはクローズドβテストも実施され、好評を博した。
現段階では開発に“Unreal Engine4”の最新バージョン4.26を使用している。昨年のCEDEC 2020でも、アートスタイルや背景などの担当者が講演でこだわりが語られたが、今回はキャラクターのレンダリングを中心に実装内容を解説していくという。


関連記事
『ブループロトコル』小さな“アニメらしさ”が積もり積もって、劇場アニメに入り込んだような体験を生む【CEDEC 2020】
Unreal Engine4のレンダラーは、デファードレンダリングによるPBR(物理ベースレンダリング)だ。つまり、2次元の平面的なスクリーン上で複数段階の処理(パス)を重ねていく方式で、そこに物理法則処理が重なるようになっている。
描画の対象物はノードベースエディタで多彩にカスタマイズできる。だが、その処理が可能なのは基本的なパス内に限られており、パス自体を増やすことは難しい。

まずはデファードレンダリングを例に、重要なパスのみを大まかに追ってみよう。最初は基本となる“BasePass”の複数のバッファに情報を書き込み、“ShadowDepth”パスでシャドウマップを生成。
それらの情報をもとに“Lighting”パスで照明による効果や影の生成が行なわれ、“Translucency”パスで半透明関連の情報を書き込み、“PostProcess”パスでさまざまな効果を加えることでレンダリングが完了する。

このうちBasePassで情報を書き込むバッファは“G-Buffer”と呼ばれる。エンジンによって書き込まれる情報は異なり、Unreal Engine4では世界単位の法線(そこが物体の表面であることを表す線)、金属質であったりや鏡のようであったりなどといった質感のパラメーター、物体の色などがここに含まれる。

ShadowDepthパスでは、光源からオブジェクトまでの距離を表すシャドウマップが書き込まれる。この情報と、BasePassのG-BufferをもとにLightingパスで実際のライティングが行なわれる。これが動的な光源の数だけくり返され、続くTranslucencyパスで半透明オブジェクトを描画する。
デファードレンダリングは、端的に言うと半透明オブジェクトの描画が苦手。シーンの描画結果にブレンドしていく必要があるため、このように最後のほうで反映するわけだ。



ゲーム開発のためには、このプロセスに改良を加えていく。まず一般的なセルシェーディング(3Dオブジェクトをアニメ調に表現する技法)の方法としては、“Surfaceマテリアル”と“PostProcessマテリアル”を使用するものがすでに多く出回っている。
Surfaceマテリアルの場合、Unreal Engine4自体のライティング機能をオフにし、マテリアル自体のライティングを反映する。PostProcessでは、ライティング自体はUnreal Engine4で行ない、その結果にエフェクトをかけていく。

どちらの方法にも、メリットとデメリットがある。いずれもUnreal Engine4自体の改造はしないためエンジンのアップデートによる影響が少ないが、Surfaceだと機能をオフにする時点でUnreal Engine4が持つ豊富な機能を使用できなくなる。
格闘ゲームのような限られた空間でライティングがほぼ固定されるタイトルなら問題ないと思われるが、『ブループロトコル』のような広大な空間を扱うタイトルには不向きだ。
PostProcessの場合、見方にもよるがせっかく出た描画の結果を塗りつぶすことにもなりかねない。Unreal Engine4の機能を活かしきれない場面が出てしまう懸念がある。
これらを解決するために、『ブループロトコル』では最小限のエンジン改造を実施したという。

ライティングのこだわりを実現するための改造
まずはライティングについてだ。『ブループロトコル』のライティング情報のメッシュ(※)には、アーティストがツールから設定した法線と、インポートした際に物理計算から算出されて決まる法線という、ふたつの法線が保持されている。
※メッシュ:線を組み合わせて網状に表現されたオブジェクト形式。表面のカラー情報や接触判定の情報などを流動的に管理できる。
また、ライティングの際に暗く見えにくくするための“Diccuse Offset”や、暗く見せるための“Ambient Occlusion”などの値が“頂点カラー”(※)の情報として書き込まれている。
※頂点カラー:メッシュの頂点に登録できる色情報。これをもとに、メッシュ各所の面の色や影などが反映される。

アーティストが設定した法線は、ライティングによってアニメ調の影が入るように作られている。これにより、キャラクターの頬の三角形の影など、アニメ表現ならではの独特な影が入るわけだ。

アーティストに設定してもらう法線は陰影を重視。物質形状を無視しているため、インポート時の法線には物理法線を面法線から計算した結果を書き加えている。
本作のアバターはいくつかのパーツの組み合わせでできているため、メッシュもパーツごとにバラバラだ。そのままインポートすると、隣り合うパーツの三角形どうしが判定の齟齬を起こし、エッジが立ってしまう。このパーツごとの法線をつなげて判定するために、一括インポートする仕様も取り入れている。