アニメーション制作会社ufotableにて、撮影と3Dの全般フローを統括するデジタル映像部が制作現場の課題解決に挑戦。NVIDIAのハイエンドGPUであるRTX 6000 AdaおよびRTX 5000 Adaを活用し、アニメーション制作の前線にて新世代のワークフローを模索した。
アニメ制作現場の効率化はハイエンドマシンで実現できるのか?
CGWORLD編集部(以下、CGW):まずは自己紹介からお願いします。
寺尾優一氏(以下、寺尾):ufotableデジタル映像部で部長と撮影監督を務めている寺尾です。アニメの業界歴としてはかれこれ20年少々になります。今回は直近のプロジェクト内でハイエンドGPUを駆使した映像制作フローを構築する機会をいただき、実践の中で楽しませていただきました。
奥屋武志氏(以下、奥屋):デジタル映像部でパイプライン設計やツール開発を担当するテクニカルアーティスト(以下、TA)チームを率いている奥屋です。大学やゲーム会社でCGのR&Dを経験し、ufotableには2022年に入社しました。今回はワークフローにUSDを組み込む技術検証を担当しています。
天野礼治氏(以下、天野):同じくデジタル映像部でTAをしている天野です。もともとはキャラクターモデラー出身ですが、ツール開発に携わるようになり、ゲーム会社に入社して以来、TAとしての仕事を続けています。奥屋と共に、デジタル映像部の制作環境をサポートするというミッションに取り組んでいます。
寺尾:さっそく雑談になりますが(笑)、奥屋がufotableにジョインしてから、社内の業務環境が確実に変わりました。それ以前の単一の「作業お助けツール」の域を超えて、日々の業務の隅々で「プログラムが助けてくれる」場面を見かけるようになりました。 社内には別部署に専任のプログラマー集団もいるのですが、彼らとのコミュニケーションも一切の垣根なく進行しています。万全の船旅をさせてもらっており、感謝ばかりです。
CGW:なるほど。具体的にどのような変化があったのですか?
寺尾:一例として、「現場で作業中のショットの最新の状態が見たい」という需要があり、従来は専用の商用ツールで映像データの閲覧環境を用意していました。ただ、機材や中継ソフトのライセンスの制約などもあるため、これまではデジタル映像部以外のスタッフは手動でこつこつとディレクトリをたどり、Windows標準の再生ソフトで個々に閲覧する状態でした。
奥屋:なので、いっそ全部ブラウザベースにつくり替えて、スタジオ内の誰でも利用できるようにしたんです。結果として、全ての制作関係者がリアルタイムで中間映像を共有できるようになり、チェック工程にかかる時間や人員が大幅に短縮されました。
OpenUSDによる3Dデータの民主化と現況
奥屋:これは今回の検証の本題であるUSDの話にもつながります。社外のパートナーさんと仕事をすると、BlenderからMaya、Houdiniまで、様々なファイルをやり取りする機会が増え、そのたびに社内環境への変換作業が発生します。例えば、Houdiniのファイルを受け取ったとき、まずそのチェックができるのはHoudiniの社内アーティストになりますよね。Autodesk製品、Adobe製品でも同様に、それぞれの環境が必要です。
寺尾:そのため、都度スタッフへ展開するために画像や映像などチェック用のデータを用意する作業が生じるわけですが、果たして、これってなくてはならないものだろうか? ツールが変わってもチェックしたい要素は共通なので、変換作業が不要でシンプルな方法はないのかな……?と。
また、日々の現場で自分たちデジタル映像部の作業状況をリアルタイムに他部署へ共有したいという想いもありました。3ds Maxで作成したキャラクターや背景モデルの最新バージョンを、その環境をもたない制作進行や作画チームが、彼らの判断でさっと開いて活用してほしかったんです。
奥屋:リアルタイム進捗データの民主化といいますか……誰もがアニメ制作に必要なデータをいつでもどこでも取り出せる——われわれはそのための課題を解消する未来をつくりたいと考えています。本検証を経て現状は、USDが最も効果的な選択肢だと考えています。
CGW:すごく重要なお話ですね。まず時系列的に、今回の検証をすることになった経緯を伺えますか?
寺尾:まず前提として、現在アニメーション映像の制作環境は、作業の高精細化が加速していまして、直近でも短期間に複雑なデータを何度も反復して計算するシチュエーションが発生してしまいました……しまいました、といいますが、よくあるんですよね。
これに対しては予測含め現場のノウハウがあって、様々な備えがあるのですが、その中でも今回はハイエンドのGPUを搭載した強力なマシンがあれば、力業で問題が解決できるのではないかと考えていました。そこにタイミングよくNVIDIAさん、さらに日本HPさんから今回のお話をいただいたんです。幸運にもぴったりなタイミングで作業が走っていましたので、3週間ほどお借りして、僕と奥屋、それぞれの分野でリサーチしていくことにしたんです。
奥屋:そうしたら、驚くほどパワフルなワークステーションが届きまして(笑)、RTX6000 Adaと、さらに比較用ということで5000 Adaも用意されました。
CGW:試用機は日本HPの「HP Z6 G5 A Workstation(以下、Z6)」ですが、まずは率直に、いかがでしたか?
寺尾:純粋に、全てが速かったですね。
天野:今回は主にEmberGenでのスモーク作成でGPUを利用したのですが、VRAMが48GBもあるので従来よりも高密度な設定でシミュレーションができました。しかも、演算能力も高いので、その高密度なシミュレーションがリアルタイムに近い速度で実行される。
寺尾:そしてCPUも。本筋ではありませんでしたが、主要CGソフトはCPU依存度が引き続き高い状況ですので、純粋にレンダリング速度が大幅に短縮されました。プレビューも加速しますので反復=試行錯誤の回数も増え、アーティスト単位時間あたりのアウトプットの品質も確実に上昇しているのを感じます。速度は正義なので、速ければ全てが許される……といいつつ、安定性も素晴らしいマシンでした。期間中、ヘビーに回しても一度もクラッシュせず、粛々と稼働していました。
天野:実は届いてすぐに筐体を開けて観察したのですが、エアフローがしっかり分かれていて安心感がありました。前面からCPUとGPUを個別のエアフローで冷やすしくみで、GPUは側面からも空気を取り入れるようになっています。運用中も背面からかなり熱い風が出てきましたが、熱暴走で落ちることもなく、とても安定していました。
奥屋:届いたその日に3ds Maxをインストールし、すぐにレンダリングに参加できる状態にしました。Ryzen Threadripper PRO7965WXが搭載されたZ6は、ワークフローをいっさい変えることなくスペックアップによる効果を実現できる理想的なマシンでしたね。
検証機材:HP Z6 G5 A Workstation
NVIDIAのハイエンドGPUを搭載し、安全かつ存分に機能するマシン。依頼を受けた日本HPが用意したワークステーションは以下のようなものだった。
- CPU
Ryzen Threadripper PRO 7965WX
- CPUコア
24基48スレッド(4.2GHz~5.3GHz)
- L1+L2+L3キャッシュ
合計152MB
- GPU
NVIDIA RTX 6000 Ada/RTX 5000 Ada ×1
- メモリ
128GB
- ストレージ
1TB M.2 SSD
NVIDIA RTX 6000 Ada世代
CUDAコア / Tensorコア / RTコア:
18,176 / 568 / 142
メモリ:48GB GDDR6
NVIDIA RTX 5000 Ada世代
CUDAコア / Tensorコア / RTコア:
12,800 / 400 / 100
メモリ:32GB GDDR6
OpenUSDなら“かなり手軽に” パイプラインを強化できる
CGW:今回の検証について伺っていきます。これまでufotableではOpenUSDについて、何か取り組まれていましたか?
奥屋:ソフト間の受け渡しで試したりした程度で、ほぼ使っていなかったんです。ツール開発を伴う本格的なテストは今回が初めてでした。
寺尾:USDに対する僕のそれまでのイメージは、映像界隈で使うフォーマットというよりは、自動車や建築といった産業で使うものかなと思っていました。
CGW:今回はNVIDIAさんから「OmniverseがOpenUSDをかなりサポートしているのでどうでしょう」と提案を受けて、Omniverseでテストされたのですよね?
奥屋:実際にやってみたら、Omniverse Launcherを入れるだけでUSDの表示と編集用の環境が構築できて、3ds Maxの開発環境もAutodesk配布のUSDプラグインとPythonのpipだけで済みました。こんなに簡単ならもっと早くやっておけば良かった(笑)。
CGW:「USDは難しい」という先入観をもたれていたのですね。
奥屋:日本では特に、最初にUSDが出てきた頃に「ビルドだけでこんなに大変なの!」という印象をもってそのままのエンジニアが多いと思います。でも実際に使ってみると、導入も開発も簡単にできました。
CGW:今回はどういった検証をされたのですか?
奥屋:ufotableの基幹は3ds MaxとV-Rayですが、最近は他のツールとのデータの受け渡しも増えてきました。そのため、USDのエクスポーター開発によるソフト間のデータ移行に挑戦しました。また、Omniverse Composerを使った3DレイアウトのテストやAfter Effects(以下、AE)との連携テストも行い、どれも良好な結果を得ることができました。
CGW:ちなみに、Omniverseはリアルタイムプラットフォームですが、UnityやUnreal Engineといったゲームエンジンとのちがいについてはいかがでしたか?
奥屋:一般的にゲームエンジンはプロジェクトフォルダ内に大量のファイルが作成されるため、データの管理方法が従来のDCCツールとは異なってきます。一方、Omniverseでは1カットにつき1つのUSDファイルという既存のパイプラインに近い構成から運用開始できるため、映像制作との相性が良いと感じます。
CGW:今後USDはどのように活用できそうですか?
寺尾:制作作業の中心は3ds Maxですが、もしUSDを基幹ファイルにできれば、例えばBlenderで演出チェックを行い、その場で修正してUSDファイル経由で3ds Maxに戻すといったワークフローが実現できるでしょう。今回の検証でその可能性が見えたのは大きいです。既存のツールの組み合わせでできることなので、コストメリットも期待できます。
奥屋:主要なDCCツールでのUSD対応が進んでいる現在では、かなり現実的なフローになってきたと思います。また、詳しくは後述しますが、USDは従来のフォーマットと異なり、ユーザー側で状況に応じてデータの構成を加工すると効果的になるという側面もあるので、多くのスタジオ様でUSDを導入いただいてノウハウを共有できると嬉しいです。
検証1:OpenUSDとNVIDIA Omniverseによるワークフローの可能性
1-1:ツール間でのファイル受け渡し
ここ数年、制作の大規模化や作画アニメーターによる3Dレイアウト作業の普及に伴い、ufotable標準の3ds Max+V-Rayという基幹ツールと他のツールとの間でデータを受け渡す機会が増えてきた。
従来はFBXファイルを介してデータをやり取りしていたものの、ufotableではテクスチャを3ds Maxマテリアル内のノードで補正・ブレンディングすることが多く、その際にテクスチャのパスが保存されないという問題があり、インポート後の作業が負担になっていた。
そこで、奥屋氏は今回3ds Max用のPythonスクリプトとして、ufotableのマテリアル構造に合わせたUSDエクスポーターを実装。これにより、複数ツール間でテクスチャ表示に対応した。
具体的な手順としては、まず3ds Maxの公式USDエクスポーターでアセットを保存する。この際、3ds MaxのマテリアルはUSD Preview Surfaceとして保存されるが、深い階層のテクスチャパスは抜けた状態となる。その後、奥屋氏が作成したUSDエクスポーターを実行し、保存したUSDファイルのUSD Preview Surfaceにテクスチャパスをオーバーライドして保存することで、ツールを移動してもテクスチャが正しく表示される。
1-2:Omniverse Composerでの3Dレイアウト作成
奥屋氏は今回の検証にあたり、Omniverseを活用した3Dレイアウトツールを開発。このツールは、3ds Maxで作成したモデルをOmniverse USD Composerに読み込んで3Dレイアウトを作成し、ボタンひとつで規定の情報を備えたフレーム枠付きの3Dレイアウト画像を生成することができる、Omniverseのエクステンションである。
従来の3Dレイアウト作業では、3ds Maxで作成したカットをDeadlineを経由してレンダリングするため、結果の確認までに待ち時間が発生していた。一方、Omniverseを使った3Dレイアウトでは、レンダリング結果と一致したプレビューをリアルタイムで確認できる。検証は高品質で頂点数の多いアセットを使用して行われたが、RTX 6000 Adaの豊富なVRAMのおかげで、余裕をもって表示できたという。
1-3:After Effectsとの連携
奥屋氏はさらに、AEのPythonプラグイン(GitHubにて公開)とUSDモジュールを利用して、AEの3DレイヤーにUSDのキーフレームを作成するツールを開発。
これまでufotableでは、3ds MaxからAEに座標やカメラ情報を送信する際、3ds Max専用のスクリプトが使用されていた。そのため、3ds Max以外のツールからAEに情報を移植するには、それぞれのソフトに対応したツール開発が必要だった。今回開発されたUSD読み込みツールにより、USDエクスポートが可能な全てのソフトからAEに情報を読み込めるようになった。
検証2:流体シミュレーションと作画のハイブリッド表現
RTX 6000 Ada/5000 Adaによる映像表現の可能性
寺尾:ではもう1件の検証についてお話しします。今回僕が検証したのは、パワフルなGPUを活用したコンポジットとCGエフェクト作業のコラボレーションです。具体的にはEmberGenを用いて、流体シミュレーションを高速に回し、編集と撮影、3Dエフェクト作業を並走させることでライブ感のある映像制作フローを行いました。具体的な検証シーンにつきましては、デジタル映像部のブログにて掲載していきますのでご覧ください。
画像は『テレビアニメ「鬼滅の刃」柱稽古編』第7話終盤から第8話冒頭の、鬼殺隊の当主のいる産屋敷邸へ鬼舞辻無惨が現れるシーンですね。ここは音楽の存在が非常に重要であるとあらかじめオーダーを受けていました。ベースにまず丁寧な作画があることが前提となるのですが、描かれたニュアンスを補完・拡張するようにEmberGenによる流体効果を追加していきました。
この作業は何度もプレビューを重ねるのですが、このプロセスでプレビューを見ていると「もっとゆっくりにした方が良い」、「地面からも流体(気流)を発生させたい」、「音楽のタイミングに合わせてスローにしたい」など、演出の解像度を上げていくほど、フレキシブルに映像をアレンジしたくなってきました。
そこで当時、元気のいい若手と2人で作業していたのですが、Z6だとEmberGenがほぼリアルタイムで結果を出してくれるので、アイデアからアウトプットまでの時間が限りなくゼロになっていきました。そのため、EmberGenはエフェクトの工程というよりも、コンポジットの一部のようなワークフローと捉えるようになりました。
当社内では、メインスタッフが常時近くで作業していますので、演出関連のチェック工程も常時口頭でどんどん進めていくことができます。結果、エフェクトからコンプ、編集までを非常に短いスパンでブラッシュアップしていきました。
このようにパイプラインを整備しておけば、関連工程が劇的に高速化されますので、体感で数倍の速度でショット制作が回っていたように思います。GPU特化型フローの優れた可能性ですね。
CGW:RTX 6000 Adaは48GBのVRAMを搭載していますが、その恩恵は感じられましたか?
天野:EmberGenはレンダリングで2~4倍のアップスケーリングができるのですが、その際にかなりVRAMを消費します。既存環境ではアップスケーリングは最大2倍までが限界でしたが、Z6で試したところ4倍まで対応できました。これは48GBのVRAMのおかげですね。
寺尾:そういえばDaVinci Resolveのエフェクトやトランジションも一度もまごつくことなくリアルタイムで計算されました。エンコードに関しては余りに速かったので記憶に残っていません。
こういった映像との向き合い方は近年ですとUnreal Engineなどで実現可能なフローに近いですね。ただしまだ映像開発の自由度は現行フローが優れていて、ちょうどいいとこ取りの、ハイブリッドなプロセスで制作に臨むことができました。
CGW:ありがとうございました。
お問い合わせ
株式会社日本HP
jp.ext.hp.com/prod/workstations
エヌビディア合同会社
www.nvidia.com/ja-jp/contact