>   >  3DCGのワークフローやポイントを解説「『蜘蛛ですが、なにか?』あにメイキングセミナー」CGWORLD 2021 クリエイティブカンファレンスレポート
3DCGのワークフローやポイントを解説「『蜘蛛ですが、なにか?』あにメイキングセミナー」CGWORLD 2021 クリエイティブカンファレンスレポート

3DCGのワークフローやポイントを解説「『蜘蛛ですが、なにか?』あにメイキングセミナー」CGWORLD 2021 クリエイティブカンファレンスレポート

煙エフェクトはベースモデルを流用することで効率化をはかった

3番目は、山﨑氏が「エフェクト/コンポジット制作工程」を紹介。まずは「『煙』汎用エフェクトの作成方法」を解説した。

煙エフェクトの制作工程としては、まずはオブジェクトのアニメーションを作成し、そのアニメーション付きのオブジェクトをエミッターとする。そこから、そのエミッターをtyFrowに読み込み、複数のパーティクルとして発生させる。その後、スピードやサイズ、方向などを調整し、全体の形状を整えていく。

▲煙のオブジェクトのイメージ。作成では、まず天球体にディスプレイスモディファイヤを追加。その後、3ds Maxに標準で入っている細胞テクスチャを使用して凸凹感が出るよう調整する。さらに、リラックスモディファイヤなどで凸凹感に柔らかさを加えたりもする

▲煙の動きの調整例

煙エフェクトの形状などが決まったら、次はマテリアルの設定となる。マテリアルは、グラデーションマップを使用して白黒のマテリアルを設定すると同時に、ノイズなどで細かな凸凹を加えることでディテールアップする。なお、注意点として山﨑氏は「アニメ作品なので明暗がハッキリした煙を目指し、アニメに馴染む質感に調整している」と補足した。

また、山﨑氏によれば本作ではバトルシーンが多く、バトル時の砂煙やブレス時の爆発といった煙のエフェクトを「多岐にわたって使用した」そうだ。そのため、3DCGカットで使用した煙エフェクトの大半は、ベースモデルを使って作成。使用用途の拡大にともなって作業量も増えることから、「流用しやすいようなやり方で作成する」(山﨑氏)ことで効率化をはかった。

▲マテリアル作成のイメージ。右図は、マテリアル設定後にAfter Effectsに素材をもっていき、煙らしい色味に調整したものとなる

次に山﨑氏は、後期オープニングのカット23を使用して「エフェクト/コンポジットの制作工程」を解説した。山﨑氏によれば、このカットはアニマティクスが完成した段階で「製作日数の残りが数日程度しかなく、スケジュールがかなりタイトだった」ことから、他のカットにはない「少し特殊な制作方法を採用している」そうだ。

まず、後期オープニングのカット23はカメラが大きく切り替わるなど、「作画的な疾走感のあるシーン」(山﨑氏)となる。そこで、制作時は短尺でスピード感を出すためにPhotoshopのビデオレイヤーを使用し、エフェクト素材をムービーの上から感覚的に作成した。ちなみに、Photoshopを利用した理由について山﨑氏は、「単純に使い慣れている」という点とともに、下に敷く動画を読み込んだ際に「他の動画ソフトよりも軽かった」という点を挙げた。

▲Photoshopで作成したエフェクト素材のみのイメージ

色分けされた手書きのエフェクト素材は、その後はAfter Effects上に読み込んで色を変更し、グロー効果やブラーなどの処理を加える。さらに、蜘蛛子に対しては、リム素材を使用してビームの光源影響による逆光効果を追加した。その後、After Effects上で簡単なフィルター処理を行って完成となる。

▲エフェクト素材をPhotoshop上でハッキリした色に色分けしている理由は「After Effects上での色調整が簡単になる」(山﨑氏)から。これにより「ビームの色を変更する」などの修正にも対応しやすくなっている

群衆システムは「アクター」、「クラスター」、「エリア」で構成

最後は、ジェローム氏が「エンジニアリングでアニメ制作を支援した事例」を解説した。本作では、コンポジットやアニメーターの作業を支援するツールをいくつか開発しており、「モーション制作工程」で紹介したフェイシャルツールやフッテージの差し替えツールなどはその1つとなる。

これに加えて、作品の後半では多くの兵士が戦う戦争シーンのカットが必要になったことから、新しい挑戦としてゲームエンジンを使ってそのようなシーンを簡単に作成できる「群衆システム」を開発。今回、ジェローム氏はその群衆システムの概要を紹介した。

ツール制作のプロセスとして、まずは「使う側の要望」を確認する。今回の場合は依頼時に「背景で戦っている大量のモブ兵士を楽につくりたい」、「キャラやモーションの入れ替えをすぐできるようにしたい」、「モブの体形にランダム性をもたせたい」、「派手に吹き飛ばしたい」といった要望があったそうだ。これらの要望からジェローム氏は、制作ツールで注意すべきポイントとして「大量のモブ兵士を簡単に配置・増減できる」、「背景なので、見た目は最低限で問題ない」、「戦っているので、単純なランダム配置ではない」といった点を推察した。

次に、これらのポイントを踏まえて群衆データの構造を検討。今回のシステムでは、「アクター」、「クラスター」、「エリア」という3つのレイヤー構造に決定した。

▲群衆システムのデータ構造のイメージ

アクターは、1つのキャラクターデータを管理するもので、同システムでは一番小さい単位となる。用意されているモデルからランダムでピックアップされ、味方同士で戦わないようにするための「敵/味方設定」があるほか、武器の入れ替えにも対応している。

クラスターは、複数のアクターが戦っているシーンになる。最終的にランダム配置するのはアクターではなく、このクラスターになる。クラスターのデータはUnity上のタイムラインで組み込めるほか、モーションキャプチャや3ds Maxで作成したアニメーションデータも利用できる。

そのほか、ループ可能なアニメーションにすることで、再生時にランダム感を出すことが可能。また、当たり判定の情報を使用し、ランダム配置時にクラスターが重なることを防ぐしくみも導入されている。

最後のエリアは、クラスターを生成する範囲で、クラスターの数や配置を管理するしくみとなる。エリア内では、クラスターの完全ランダム配置が可能で、その後の手動による配置調整にも対応。これにより、群衆を生み出すことができるようになる。

▲アクターは、サイズのランダム感を出すため、違和感が出ない範囲で体型と身長の調整にも対応。5体のキャラはまったく同じモデルを使っているが、体型と慎重にスケールをかけることで、バリエーションを生み出せている

もう少し詳しい群衆システムの中身において、まず見た目には「UnityChanToonShader」を使用。影は基本的にテクスチャに入れており、マテリアルは「頭」、「身体」、「武器」の3つに分割。さらに、それぞれに「BaseMap」、「1st ShadeMap」、「RimLight Mask」の3つのテクスチャを用意した。

アウトラインには「Pencil+」を使用した。3ds Maxのアウトライン設定ファイルをそのまま活用できる点で便利だが、Pencil+には「ポリゴン数が増えると重くなる」(ジェローム氏)というデメリットがあるという。そこでジェロームは、最終的なレンダリングをPencil+にまかせつつ、Pencil+のクオリティには及ばないが「リアルタイムで確認できるようなアウトライン」を検討し、ポストプロセスアウトラインを利用することにした。

また、カメラワークでは「MeshSync」というプラグインを使用し、3ds Maxからカメラデータや背景、レイアウトのハイパーオブジェクトをUnityにインポートした。

▲「リアルタイムで確認できるようなアウトライン」の検討では、反転メッシュや法線エッジ検出、深度バッファーエッジ検出なども試したそうだ。しかし、「線がつながっていない」、「ノイズが入る」などの理由で却下された

出力では、Unityを使ってカラー、アウトライン、影をレイヤーに分けて出力する。出力用のスクリプトは社内で作成したそうで、ジェローム氏によれば「タイムラインでコントロールできる」、「Pencil+とボスプロセスのアウトラインを切り替えられる」といった機能を備えているそうだ。

なお、ここでジェローム氏は「半透明をしっかり出力する」ことをポイントに挙げる。なぜなら、カメラの背景の色が「半透明で映ってしまう」という問題が発生するケースがあるからだ。

この問題の解決策としては、まず同じフレームを白い背景と黒い背景でレンダリングする。次に、各ピクセルに特殊な計算式を適用。これで「きれいな半透明を作ることができる」(ジェローム氏)という。また、各フレームでこの作業をCPUにまかせるのは効率が悪いため、ジェローム氏は「Computer shaderを用いてGPUにまかせている」とアドバイスした。

▲半透明問題の解決策のながれとピクセルに適用する計算式

▲Computer shaderのソースコード

これに加えてジェローム氏は、最初にあった「派手に吹き飛ばしたい」という要望に対応する方法についても触れた。ながれとしてはまず、各モデルにラグドールを入れるとともに、当たり判定用のオブジェクトを用意。コリジョンが発生したらアニメーションを止め、ラグドールと物理処理をオンにして吹き飛ぶためのフォースを与えるしくみとなる。

ただし、吹き飛ぶ際に武器をもったままでは不自然なので、武器を落とすしくみを導入。これに加えて、一緒に戦っているキャラクターもそのまま武器を振っていては不自然なので、クラスターのタイムラインを止めてそのクラスター内の他キャラクターを待機モーションに切り替えるしくみも入れ込んだ。

群衆システムのまとめとして、ジェローム氏はメリットに「配置が楽」、「大量のキャラクターでもすぐにプレビューができる」、「レンダリングスピード」、「1ボタンで全モデルや武器の入れ替えが可能」という点を、デメリットに「データの準備に手間がかかる」、「Unityの理解がある程度必要」という点を挙げた。また今後の改善点としては、「データの準備時間の短縮」、「Unityを理解していなくても使えるようにする」、「(AIで行動するような)群衆シミュレーションの実現」などを挙げた。

Endeavor Pro9050aが圧倒的な性能を発揮する結果に

最後にもう1つ、ジェローム氏は群衆システムを利用した「パフォーマンス検証」についても紹介した。この検証では「ジェローム氏のPC」、「exsaの最新ワークステーション」とともに、エプソンダイレクトのAMD製Ryzenシリーズを搭載した「Endeavor Pro9050a」を使用し、複数のテストを実施した。

▲検証で使用した各マシンのスペック

▲エプソンダイレクトの「Endeavor Pro9050a」は、16コア32スレッドのAMD製CPU「Ryzen 9 5950X」やNVIDIA製のGPU「GeForce RTX 3090」などを搭載。圧倒的なパフォーマンスはもちろん、ホワイトカラーのボディもなかなか魅力的だ

まず、ボスプロセスアウトラインを使った「プレビューレンダリング(GPU)」のテストでは、GPUの負荷を検証。GeForce RTX 3090を搭載するEndeavor Pro9050aがその性能をいかんなく発揮し、ジェローム氏も「想定以上の差が出た」と舌を巻いた。

CPUの負荷が大きい「Pencil+レンダリング(CPU)」のテストでは、複数のモブ数で検証を実施。500体の場合で、Endeavor Pro9050aがジェローム氏のPCよりも3倍近いスピードとなった。

最後に、再生したときの最初の「起動タイム(SSD+CPU)を計測した。最初の起動時はオブジェクトの生成やランダム配置の処理などが発生するため、SSDとCPUの性能が影響するテストとなるのだが、1000体の場合でPCIe 4.0に対応するEndeavor Pro9050aがジェローム氏のPCの半分以下の時間で起動。この結果に対してジェローム氏は「Endeavor Pro9050aがかなり欲しくなった」と実感を込めて語った。

▲「プレビューレンダリング(GPU)」テストの結果

▲「Pencil+レンダリング(CPI)」テストの結果

▲「起動タイム(SSD+CPU)テストの結果

Profileプロフィール

exsa株式会社

exsa株式会社

スペシャルインタビュー