「ガールズ&パンツァー 最終章」第4話のメイキング記事が公開されています。
https://cgworld.jp/article/305-girlsandp01.html
https://cgworld.jp/article/305-girlsandp02.html
https://cgworld.jp/article/305-girlsandp03.html
ワークフロー篇
Unreal Engine活用の幅を履帯跡や走行煙などにも広げ、迫力の戦車戦を表現!
Unreal Engineを積極的に活用したことにより、全1,100カットほどのうち、約800カットに3DCGが活用され、さらにそのうち600カットほどでUEを使用。3DCGとUEによるカットが大きく増えている。
特にUEについては、前作では背景を中心に使われていたところ、本作では戦車の履帯跡や走行煙、着弾跡、吹雪、砂嵐といった表現にも活用され、使用範囲を大幅に拡大している。
絵コンテにアイデアを盛り込みプリビズに反映する
本作のプリビズは絵コンテをベースに制作。この過程で、戦車の出るカットに対して緊張感や説得力、戦略性、テンポ、ギャグなどを上手く表現できるか考え、ブラッシュアップを行なっていった。
『ガルパン』専用のデータコンバートツール「MAXtoUE4」
情報共有と遊び心を両立した社内Wiki
戦車&キャラクター篇
実機の動きを精察してつくり上げた戦車のリグ
戦車のモデルには全て壊れた状態があり、そうした破損のバリエーションを含めるとモデル数は200を数える膨大な量となる。
スキー板を履いたBT-42のリグ
スキー板は地面への接地・乖離の切り替えが手動でもボタン操作でもスムーズにできるようになっており、別系統の車体揺れノイズも備えている。
また、ハンドル操作で前輪とスキー板が向きを合わせて動き、接地機構とも同期するスクリプトを内蔵している。動力の伝わっていないタイヤは、車体の揺れノイズに合わせて自動で回転する。
特徴的な展望塔を備えるIII 号突撃砲G型のリグ
戦車に載んでいる白樺やワイヤーなどは、走行に合わせて自動で揺れるように別途アニメーションを仕込んであり、車体ノイズヘルパーで制御する。
キューポラハッチの開閉構造。わかりにくい機構のものは、1スライダで多段階開閉できるように自動化してある。
主砲と照準器の動きは実機の機構から推測して構築。照準器カバー可動部が車体の傾斜を撫でるように移動し、スコープの向きと同期するようにスクリプトを設計した。
破壊を念頭に置いて構築したKV-1
追加で分割や部分破壊が必要になっても極端に操作系が増えないよう、あらかじめパーツを細かく取れるように分割しておいた。増加装甲の内部は資料を基に中空機構やボルトの留め方などを再現し、破壊時にどう取れるかを推測して分割。揺れものについては車体の揺れに合わせて自動でアニメーションするよう、スクリプトと物理シミュレーションで制御している。
KV-1は傷のない状態から撃破まで26種類のモデルが存在し、モデルごとに細かな指示がある。
中遠景・ガイド用の3Dキャラクターモデル
本作のキャラクターは基本的に作画だが、中遠景用と作画用のガイドとして使うための3Dモデルも制作してある。
髪がなびくアニメーション。低速走行、高速走行、発砲の3種類を用意した。
UEによる背景&エフェクト篇
カット制作からエフェクトまでUnreal Engineを本格活用
基本的なフローは以前と変わらないが、走行煙や着弾跡、雪、吹雪、砂嵐などのエフェクト類を充実させ、背景モデルも近・中・遠距離用にそれぞれ用意した。
UEの導入に伴って、3D側の制御を必要とする場面も増えた。例えば、吹雪の見え方やトンネルに入ってからのライティングなど、従来は背景美術が担っていた部分をCG側が担当するようになった。
大きなメリットは、リアルタイムでエフェクトを確認できること。ファイルの書き出しも高速で、3ds Max用プラグインのAfterBurnよりも高速でリッチな表現が可能に。クオリティについてはAfterBurn以上、FumeFX以下という評価。
UEによるカット作業のながれ
BG、戦車、キャラクター、プロップなどの各種データを使って3ds Maxでレイアウトを作成。OKが出たらEXRでレンダリングする。
UEではカットごとにベースのレベルを複製して、そこに3ds Maxからインポートした素材を配置し、シーケンサーを作成する。
雪原シーンで使用したBGアセット
スキーで滑り落ちる際にアニメーターが演技のために地面を変形しやすいように地形変形用ヘルパーを仕込んだ地面アセットが用意された。
雪だまり制作の様子。BlueprintのFoliageでメッシュとデカールをセットにしたものをつくり、これにより地面に対するめり込みをカバーさせてなじませている。
木のアセットの一例。カメラ距離に応じて低ポリから高ポリへと自動で切り替わるLOD機能を使うとパカついて見えるため、「低/中/高ポリ」の3バリエーションを用意。
岩のアセットの一例。Megascansのものを改造して使用。
一連のアセットを使ってつくられた実際のカットの例。
UEのVolumetricsプラグインコンテンツを活用して制作した雲海。
3ds MaxとSubstance 3D Painterで制作したモデルとテクスチャをUEに読み込み、UE上でマテリアルを作成。
冒頭に登場するダム穴。3ds Max上で距離を変えたり変形したりできるようにつくられている。調整後に雪原の地面同様FBXを書き出してUEに読み込み、専用のBlueprintにてスタティックメッシュと差し替える。瓦礫に関してはアニメーションが必要なものはFBXとABCの2種に分けて3ds Maxから書き出す。
カット制作の例
Niagaraとパーティクルで描く吹雪
本作ではNiagaraで雪を、パーティクルで地吹雪を発生させ、この2種類を組み合わせてリアルな吹雪を描いている。
地吹雪マテリアル。雪と吹雪、どちらもマテリアルで距離による不透明度の調整と、オブジェクトに重なった際にボケる処理を仕込んでいる。
雪エリア。当初、雪は戦車の移動範囲を覆う巨大なエリアを用意する予定だったが、雪と雪の間に隙間が生じ、隙間をなくすために雪の量を増やすと負荷が高くなってしまい、レンダリングできなかった。
雪のエリアはカメラと親子関係になっているが、追従を制御するため、Niagaraの「Inherit Source Movement」モジュールで逆方向に補正をかけている。
地吹雪エリア。地吹雪は立体感が出るように低空と上空の2種類を用意し、それぞれの量やサイズ、濃さ、流れる速度などがBlueprint上で調整できるようにされた。
地吹雪では8✕8の連番をまとめたSubUV用のテクスチャを使用し、動きのある煙を再現している。
吹雪のレンダリングの際は、素材を分けるために「PostProcess」コンポーネントを仕込んだBlueprintにて、吹雪素材のみグリーンバックになるようにレンダリングされる。黒で抜くと煙の影部分までくりぬかれてしまうため、グリーンバックを採用し、AEでキーイングしてコンポジットされている。
砂漠と雪原に描く戦車の履帯跡
戦車の履帯跡は「Infinity Weather」というアセットを使用し、Shapeにコリジョンを割り当てており、地面と触れた部分だけが凹む仕様。
アニメーションに応じて3タイプのShapeから最適なものを選ぶことで、1カットで使うShapeの数を削減することにした。
遠景になるほど履帯跡が薄くなる効果も実装。カメラからの距離によって履帯跡の色や凹みの深さを自動調整する。
履帯跡の生成システムは砂漠と雪原で同一だが、特に雪原の場合は地形によって履帯跡の深さが変わるため、これを調整できるようにした。
積雪量が多い場所。
積雪量が少ない場所 。
雪崩の制作
雪崩はUEによるものと3ds Maxによるもの、2種類を用意しており、中遠景ではUEによる雪崩を採用している。
Phoenix FDでの流体シミュレーション検証。はじめは流体シミュレーションで生成されたメッシュを発生源にして、UEにてパーティクルを生成させようとしたが、頂点数が多いと重くなることと、Niagaraの発生源としてABC形式が対応していなかったため、SkeletalMeshとして読み込める形式にした。
3ds Maxでの雪崩のセットアップ画面。
Niagaraの設定画面。3ds Maxからスキンを適用してアニメーションを付けたメッシュをFBXで書き出し、UEへSkeletalMeshとして読み込ませる。そのメッシュを発生源にして6種類の要素(雪煙と雪の塊を大きさを変えて3つずつ)をNiagaraで生成させている。
雪崩の先頭にフォースが付いている様子。そのままだと木に当たっても動かないので、「RadialForce」コンポーネントを組み込んだBlueprintをシーケンサー上で雪崩の発生源となるSkeletalMeshのボーンに親子付けさせ、木のSkeletalMeshの物理で設定した当たり判定に当てることで、中遠景で使える簡易的な木の揺れを表現している。
倒れる木の当たり判定。
雪崩の厚みの表現。演出上、雪崩の下を走行するシーンでは、雪崩の方向がわかるように組み込んだライトをシーンに追加するかたちでライティング部分と影面部分を調整し、雪崩の厚みを表現している。