イベント
[CEDEC 2021]「BLUE PROTOCOL」のテクニカルディレクターが語る,UE4のアニメ表現。エンジン改造で実現したこだわりの実装とは
「BLUE PROTOCOL」公式サイト
さて,バンダイナムコオンラインとバンダイナムコスタジオが開発しているBLUE PROTOCOLは,最近ではめっきり少なくなった国産のPC用オンラインゲームである。Unreal Engine 4(以下,UE4)を使いつつ,アニメ風のビジュアル表現を採用しており,先行公開されていたプロモーションムービーが大いに話題を呼んだ。
2019年6月に発表され,8月にクローズドαテストという名の実質クローズドβテスト,2020年4月にクローズドβテストが行われ,現在も開発が続けられている。
ここで紹介するのはBLUE PROTOCOLにおける,主にキャラクターのセルシェーディング関連の実装についてだ。
大井氏によると,一般的なセルシェーディングには,ゲームエンジンでのライティングを使わず自前でライティング処理をする方法や,ゲームエンジンでレンダリングした画像に対してポストプロセスでアニメっぽい仕上がりにする方法がある。
こういった手法は参考資料も多く,エンジンを改造することもなく実装できるというメリットがある半面,ライティングをオフにすればUE4のウリともいえる豊富なグラフィックス表現も使えなくなり,ポストプロセスにすれば,きっちりレンダリングしたものを塗りつぶすようなパフォーマンスの無駄が出てしまう。
そこでバンダイナムコスタジオでは,UE4の機能を殺すことなく,希望する表現ができるように最小限のエンジン改造を行うことにしたという。
ライティング
まずは影を落とすためのライティング処理だ。BLUE PROTOCOLでは,キャラクターモデル1個に対して2種類の法線データを扱うことが特徴となっている。1つはモデリングデータ自体の法線,もう1つはアーティストが調整した法線だ。
見比べてみるとよく分かるのだが,物体自体の法線は3Dキャラクターだけあって,立体感に富んだものとなっている。一方でアーティストが調整した法線は,とくに顔の部分を見ると,ずいぶんんとのっぺりしている。
一般的なアニメでは,たいていの角度で,顔に落ちる影は光源と反対側の頬のエッジ付近にシンプルな線で区分けされたものとなることが多い。飛び出ているはずの鼻の影などは(絵柄にもよるが)ほとんど描画されない。影付けにこののっぺりした法線データを使うことで,アニメのような影が実現できるのだ。
こういった「いい感じの影が出るように法線いじっちゃえ」というのは,アークシステムワークスもUE3でやっていたことだが,アニメっぽい表現をするには必須なのだろうか。
西川善司の「試験に出るゲームグラフィックス」(1)「GUILTY GEAR Xrd -SIGN-」で実現された「アニメにしか見えないリアルタイム3Dグラフィックス」の秘密,前編
新連載「試験に出るゲームグラフィックス」では,西川善司氏が特定タイトルのグラフィックスにスポットを当て,その解説を行っていく。初回シリーズのテーマは,アークシステムワークスが開発した「GUILTY GEAR Xrd -SIGN-」。前後編に分けて,セルアニメにしか見えないリアルタイム3Dグラフィックスの正体に迫っていきたい。
スペキュラー要素(鏡面反射光)でも,いくつか特殊な処理が行われている。とくに目立つのは髪の処理だろう。スペキュラー処理では,Blinn-Phongモデルを2値化したスペキュラーマスクを作っておき,スペキュラーが出るところに張り付ける感じで実現されている。……のだが,髪の毛では中心部分のスペキュラーは丸く小さく,周辺部に行くほど細長い感じの光沢が入るようにしているという。言われてみれば確かにそうなっている。これはオブジェクトの重心からの距離に応じてスペキュラーマスクを拡大縮小することで実現されている。アニメの髪の光沢ってそうだっけ? と考え込んでしまうのだが,これで自然に見えるのでそういうものなのだろう。
さらにキャラクターの輪郭には逆光でなくてもリムライトが加えられ,背景と切り分けて立体感を加えられている。リムライトは,デプスバッファの内容を基にSobelフィルタを使うことでエッジを抽出して追加で明るくする処理がレンダリングパイプラインに追加されているとのこと。
またフィルタ時にオフセットを付けることでエッジの太さを調節し,輪郭に沿って幅を持ったリムライトも加えられている。さらに,リムライトが出てほしくないところ(背後からの光に対して影になっているところなど)にはマスクを施すというこだわりようだ。
輪郭線
アニメ絵でかなり重要な位置を占める輪郭線の処理もなかなか凝っている。
輪郭線はデプス値によって判定され,Sobelフィルタでエッジとなる部分を検出し,デプス値が大きい側に輪郭線を入れる処理となっている。キャラクターデータには頂点カラー2に輪郭線用のデータとして,太さとパーツごとのIDが入っており,輪郭線描画の際に利用される。また顔などの線が出てほしくないところでは,デプス値を操作して線を出にくくしている。
輪郭線はオブジェクトの輪郭の外側に描かれるようになっている。これは絵が小さくなった場合に,オブジェクトの中に輪郭線を描き込んでいると,オブジェクトが細く見えてしまうからだそうだ。
さらに前述のパーツのIDも,境界部分で輪郭線を発生させている。IDでのエッジを検出して,値が大きい側に輪郭線を描くルールにしているとのこと。
また,指などのデプス値の差が小さく,ID分けもしにくい部分では,法線から判定された輪郭線も利用されている。さらにアーティストによる手書きの輪郭線というものも別途用意されており,それも合成されている。
BLUE PROTOCOLのキャラでは,アニメやイラストでよく見られる,髪の毛の上に眉毛が見える仕様が採用されている。実際には,髪の毛を透過して眉毛が見えているのだが,これは眉毛の形でマスクを作って,髪の毛の上書きを止めるような方法で実現している。つまり,この処理だけのためにレンダリングパイプラインが1段追加されているわけだ。
そのほか,輪郭線はTemporal AAに弱く,溶けてしまいがちになるので,Responsive AAが使われているとのことだった。Responsive AAはステンシルを使って現状フレームの輪郭を保護し,強めに出すTemporal AAのようなもので,ブレンドされるフレーム数が少ない分,アンチエイリアス効果は低くなるのだが,動きのある絵ではこちらのほうが好ましいと判断したという。
また外部のオブジェクトの影はキャラクターにも落ちるが,顔の陰影などではない影ではキャラクターはセルフシャドウを受けず,キャラクターのシャドウマップは(地面などに落ちる)キャラクターの影でのみ使われる。
セルフシャドウを使わない代わりに一部でセルフシャドウっぽい表現も行われているのだが,それはオフセットシャドウを使い,ちょっとずらした物体のデプス情報と通常画像のデプス値を比較して,ベースカラーとシャドウカラーを使い分けるための2値情報バッファに描き込む。これによりシャドウ部分が広がることになる。
最後に,ポストプロセスとしては明るい部分が拡散するようなディフューズ処理が行われてる。これはブルーム処理で代替もできるが,エフェクトでのブルーム処理とぶつかるので,別で実装したとのことだった。
これらの一連の処理を行ってBLUE PROTOCOLのアニメ絵表現が実現されているわけだが,通常のUE4のレンダリングパイプラインに何段も処理パスが追加されており,ディファードレンダリングのGバッファも6枚のほぼ全チャンネルが使用されている。アニメ絵だと処理が軽いように思う人が多いが,決してそんなことはないと大井氏は語っていた。
バンダイナムコスタジオでは,今回UE4のエンジン改造に手を出したわけだが,レンダリングパスの追加を主体にした拡張だったので,エンジンのアップデートでも一応なんとかなっているようだ(かなりしんどいらしいが)。
今回実装されているさまざまな処理は,物理的な根拠があるものというよりは,理屈を超えたアーティストのこだわりを実装したようなものが多い。そういう処理を付けると,よりそれっぽく見える。アニメ表現へのこだわりが大事だと大井氏はまとめていた。
しばらく動きを潜めていたBLUE PROTOCOLだが,テーマ曲も発表されて少しずつ動きが見えてきた。まだまだ開発中なので,今回解説された内容からさらに発展していくことも考えられる(というか,確実に変わるとのこと)。正式サービスに向けた今後の展開にも注目しておきたい。
「BLUE PROTOCOL」公式サイト
- 関連タイトル:
BLUE PROTOCOL
- この記事のURL:
キーワード
(C)BANDAI NAMCO Online Inc. (C)BANDAI NAMCO Studios Inc.