小規模スタジオ環境における APEX、Solaris、USD の役割

Frame48 // Lenovo

Enrique De la Garza - Frame48 CG スーパーバイザー

Frame48 は、Sonos や Shimano といったブランドのプレミアムな製品広告で知られるロサンゼルスの CG スタジオです。彼らが新たに手がけたのは、Lenovo にとって実に思い入れの深いストーリーでした。Yoga Pro 7a のキャンペーン用スポット映像である本作は、CG アーティストの視点から描かれており、火山の地形のスカルプトからハイパースポーツカーのリギング、そして光と色彩が弾ける中を駆け抜けるシーンまで、一連の制作プロセスを追いかけています。

納品されたのは 60 秒の本編映像と一連のカットダウン映像です。他の制作業務も抱える中、8 人のアーティストが 8 週間かけて作り上げました。

Frame48 の CG スーパーバイザーであり、スタジオの USD ベースへのパイプライン刷新を主導した Enrique de la Garza 氏はこう述べています。「今回のプロジェクトは、いわゆる王道の FX に挑む好機となりました。普段の製品広告ではなかなか出番のない、Pyro や FLIP、リジッドボディなど、Houdini と聞いて誰もが真っ先に思い浮かべるような手法です。数週間かけて R&D を行い、地形の様々なルックや各種FX要素の手法を探究できたのは、本当に楽しく、やりがいのある体験でした」

スムーズな引き継ぎを目指したパイプライン

プロジェクトの裏側には、そのスポット映像以上に大きなストーリーが存在していました。Lenovo プロジェクトは、Frame48 が前年にゼロから再構築したパイプラインを全面的に導入した、最初の大型案件の1つだったのです。

このパイプラインが解消を目指したのは、あらゆる小規模スタジオが直面する課題でした。つまり、シーンの引き継ぎ、作業の分担、そしてタイトな納期です。これまでのワークフローでは、ショット間でアセットを共有するのに HDA を多用していました。「HDA でもある程度はうまくいきます。ですが最終的には、数十個ものロック解除された HDA を抱えることになり、中身を編集したりバージョン管理を行うには、依然としてショットごとに更新を反映させる必要がありました」と、de la Garza氏。

/obj コンテキストでの HDA を使用した従来のワークフロー

移行を決断したのは 2024 年の終わりでした。de la Garza 氏はこう振り返ります。「難易度が高く、時間のかかった大型プロジェクトを終えた後、トムとじっくり話をしました。ワークフローの問題がどこにあり、どうすればチーム全体の作業効率を高められるかを洗い出していったのです。USD の動向はここ数年追い続けていましたが、導入には踏み切れずにいました。というのも、システム全体を作り直すことになるからです。ですが、その年の作業が一段落し、年末にかけて 3 ~ 4 週間ほど余裕のある期間ができたことから覚悟を決め、スタジオ用に USD パイプラインを構築するという挑戦に踏み出すことにしました」

Frame48 が 100% Houdini に移行した際、USD と Solaris をパイプラインの軸に据え、全部署へと統合しました。最初に実感したメリットは、リアルタイムでコラボレーションしているかのような感覚でした。アセットに対してクライアントから修正指示が入ったり、ショット内のアニメーションを微調整しても、ワンクリックでプロジェクト全体に反映されます。ショットを 1 つずつ開いて更新を反映する必要はもうありません。

Lenovo プロジェクトで、このパイプラインは幾度となく真価を発揮しました。「特に大きかったのは、週末に複数のショットのレンダリングを控えた日の終業数時間前に、車のモデルを丸ごと差し替える必要が生じたときです。「アーティストの 1 人である Will は、シーングラフの構造とメッシュ名がぴったりに一致するよう細心の注意を払いながら、車全体をまったく別のモデルに差し替えました。構造が旧モデルと一致し、リギング用テンプレートも同一のコントロール名を使用していたおかげで、更新がパブリッシュされた瞬間、そのアセットを含むすべてのショットがアニメーションを保持したまま自動で更新されたのです。必要なレンダリングをすべてキューに入れ、定時に帰宅できました」と、de la Garza氏。

このパターンが、このプロジェクトにおける日々の制作リズムとなりました。ノート PC やそのアクセサリーが変更され、火山の山アセットは進化し続け、プロジェクト全体で 36 を超えるバージョンが積み上がったほどです。de la Garza 氏は語ります。「これこそが USD の醍醐味です。アセットのリファレンスを一度ショット内に読み込めば、あとは何もしなくてもすべての更新が反映されます」

リギングテンプレートと APEX を活用することで、モデルが変更されてもアニメーションが保持される

USD により、1 つのショットをレイアウト、アニメーション、FX、ライティングといった各部署へ整然と切り分けることも可能になりました。何人ものアーティストが 1 つのショットを同時に作業でき、それぞれが前の作業者のデータを上書きすることなく、レイヤとして積み重ねていくことができます。

Frame48 の創設者であり、エグゼクティブクリエイティブディレクターでもある Tom Teller 氏にとって、このパイプラインはスタジオが受注できる仕事の幅を大きく広げるものとなりました。

Teller 氏は語ります。「Enrique にパイプラインの構築を任せたのは、彼が現場のアーティストからプロデューサーまで、プロダクション全体を見渡せる稀有な視野を持っているからです。彼が構築したツールや決断は、アーティストの自主性を守りつつ、プロダクションで真に重要なことを優先したものばかりです。彼が設計したシステムのおかげで、今では 1 つのショットに複数のアーティストを同時にアサインしたり、数十ものショットにわたる変更を 1 つずつ開くことなく一括で適用できます。私たちのような規模のスタジオでは、以前なら到底考えられないことでした」

Frame48 の CG アーティスト、Kyle Lin 氏は次のように述べています。「USD パイプラインのおかげで一番助かったのは、アセットやショットのバージョンを手動で追跡、更新する必要がなくなったことです。移行前は、ショットに着手する前に古いアセットがないか確認し、ある場合には手動で更新しなければなりませんでした。今では古いバージョンを読み込んでいないか気にすることなく、ショットをロードして作業に入れます。古いアセットのままファームに送信してしまう失敗は二度と起きません!」

アニメーション開始まで 26 秒

パイプラインはアセットから始まります。Frame48 は、3D モデルをなるべく短時間でアニメーション作業に回すためのテンプレートを構築しました。アーティストがモデルを取り込んでボタンを 1 回クリックするだけで、テンプレートが基本の APEX リグ付き USD アセットを自動的に生成し、アニメータがショットのブロッキングを開始できる状態が整います。「未加工のモデルからアニメーション可能な v001 を作成するまでの現在の最速記録は 26 秒です。これを超える自信のある挑戦者がいれば、いつでも受けて立ちますよ」と、de la Garza 氏は冗談めかして語ります。

世界最速記録: > usd -> apex ->usd

「私はテンプレートと標準化の重要性を強く信じています。比較的小規模なチームでありながら、高品質な広告制作のニーズに応え続けられているのも、まさにこれが最大の理由です。FX や ANIM のセットアップから、部署やアセットの hip ファイルの構造といった基本的な部分まで、あらゆるものにテンプレートを用意しています」

スタジオで使用している HIP テンプレートの一部

アセットに関する重大な決断は、APEX アニメーションデータをどのように LOP へ渡すかという点でした。de la Garza 氏は説明します。「いくつかの手法をテストしました。一番シンプルでわかりやすかったのは、ジオメトリをシーンに読み込み、ポイント位置データを USD アセットの上にオーバーレイするやり方でした。他の手法も検証した結果、最終的にすべてのリグ付きアセットに対して USDSkel を採用することにしました」

USDSkel API を使用すると、変形は入力されるスケルトンとスキンデータに基づいて処理されます。「アセットを構成する数百万ものポイント群ではなく、数個のジョイントのスケルトントランスフォームデータのみを保存すればよいため、極めて高速かつ効率的です。テストの結果、Solaris での再生速度が約 2 倍から 3 倍に跳ね上がることがわかりました。他にはブレンドシェイプのサポートも気に入っています。前に確認したところ、サブフレームサンプルの数を計算する必要もありませんでした」と、de la Garza 氏。

APEX から LOP へ

もちろん、メリットばかりではないことも想定内でした。「完璧なわけではありません。大規模シーンでの拡張性には優れている一方で、USDSkel がサポートしているデフォーマは限られているため、スキン法線にアーティファクトが発生する場合があります。そうしたケースでは、UsdSkel.BakeSkinning() を含む Husk プリレンダリングスクリプトを実行し、すべてのアニメーションをメッシュのポイントにベイクします」

火山のレイアウト

レイアウト部門は、Height Field、手動でのアセット配置、そして散乱とインスタンス化を組み合わせて火山環境を構築しました。USD アセットをインスタンス化する際のアーティストの負担を軽減するため、de la Garza 氏はカスタム LOP ツールである F48_Instancer を開発しました。  

「アーティストがプラグ&プレイ感覚で USD アセットをインスタンス化できるように、このシンプルな HDA を作成しました。このノードは任意の SOP ポイントを入力として受け取り、データベース内の任意のアセットを接続すると、バリアントや LOD を含めてインスタンス化できます。さらに、回転やスケールをランダム化したり、アセットがアニメーションされている場合はリタイムや時間のオフセットも可能です。なるべくアーティスティックな作業に集中できるようなツール作りを心がけていますが、一方で技術的な仕組みに興味がある人は、いつでも内部構造を展開していじれるようになっています」と、de la Garza 氏。

動作中の F48 Instancer

ハイパーカーを動かす

アセットのパブリッシュや、レイアウト部門からのデータの受け渡しが完了すると、アニメーションチームはアセットデータベース経由で SOP に読み込むか (APEX リグ付きのアセットの場合)、F48 Shot HDA 経由でロードしました。そこから、SOP の APEX Scene Animate ノードを組み合わせたり、比較的軽い動きであれば LOP でシンプルなトランスフォームノードを直接使用して、キャラクタやカメラにアニメーションを付けました。車のアニメーションの一部には組み込みのRBD Car Rig を利用したことで、物理的に正確な車の動きを素早くイテレーションすることができました。

RBD Car Rig と APEX リグ

そのアニメーションを抽出して LOP へ戻すプロセスは、あえてシンプルな設計となっていました。de la Garza 氏は語ります。「アニメーションが終わったら、Scene Animate の後に APEX Unpack Character ノードを配置し、アニメーションされたスケルトンを LOP の SOP Import Character ノードに接続して、プリミティブパスを一致させます。これにより、静的な USD アセット上にアニメーションされたスケルトンがオーバーレイされ、アニメータの意図が反映されて、アセットが動き出します。この一連の処理を F48_Apply Anim という HDA にパッケージ化しました」。スケルトンデータのみがやり取りされるため、受け渡しのデータは常に軽量に保たれます。

ショットを分割する

Lenovo プロジェクトを進める中で、従来の 4 部署モデルの限界が浮き彫りになりました。1 つのショットに対して、同一部署内の複数のアーティストが別々の FX 要素を作業しなければならない場面が生じたのです。「ショットを 4 つの部署に分けるだけでなく、部署内のサブタスクへさらに細分化する必要があることに気付きました。例えば、3 人のアーティストが、同じショットにおいて、同じアニメーションを読み込みながら、異なる種類の FX を同時に処理し、それらを USD レイヤスタックでシームレスに重ねて結合する必要があったのです」と、de la Garza 氏。

チームは F48 Shot Exporter HDA を改良し、アーティストが部署内のカスタムサブレイヤへとショットを分岐できるようにしました。ショット VLC_0240 では、FX レイヤスタックが以下の 3 つに分割されました:

1557_VLC_0240_FX_PYRO

 1557 VLC_0240_FX_DEBRIS

1557 VLC_0240_FX_EXPLOSION

それぞれがサブレイヤーとなって 1557_VLC_0240_FX.usda を構成し、これが他の各部署のデータとともにメインの 1557_VLC_0240.usda へ供給されます。

もう 1 つの重要な要素はデータでした。「私たちは F48 SOP USD Cache を構築しました。これは USD Configure SOP ノードからパラメータをプロモートすることで、GeoClip Sequence や Volume LOP として LOP に再ロードするために必要な USD 構造をすべて備えた形で、アーティストがシミュレーションキャッシュを構成できるように支援するツールです。これによりスムーズな再生が保証され、サーバー上でのデータの二重化を防げます。シミュレーションキャッシュは .bgeo.sc ファイルとして一度書き出され、USD によって直接参照されます」と、de la Garza 氏。

最終ルックとファーム

ライティングルックデベロップメントは、CG パイプラインの最終工程であり、すべての要素が再び1つに集約される段階です。F48 Shot HDA が全部署の成果物をロードし、ライティングアーティストが最終的なルックを調整します(アセットのバリアント切り替え、カスタムシェーダの上書き、カメラの調整など)。

ショットの準備が整ったら、エクスポートし、「RENDER」モードに設定した F48 Shot HDA で再ロードします。これにより全部署のレイヤスタック全体が読み込まれ、パブリッシュ済みの最新バージョンがロックされるため、レンダリング中にデータが上書きされるリスクがなくなります。あとは、レンダリングジオメトリ設定と Prune ノードの組み合わせを使用してレンダリングレイヤーを分岐させ、それらを集約したうえで、Husk を用いてレンダリングファームへと送信します。

少しずつ始める

こうした一連の取り組みについて、de la Garza 氏は移行作業が決して生易しいものではなかったことを率直に認めています。「制作プロセスに対するチーム全体の意識を切り替えるのは、とても大変でした。タイムサンプルの管理、モーションブラー向けのサブフレームサンプリング、SOP とは異なる結合順序やスタイル、SOP 修正時と LOP インポート時での xform の挙動の違い、Asset Resolver (アセットレゾルバ)など、USD の実装は誰にとっても直感的なわけではありません」

小規模スタジオに対する de la Garza 氏からのアドバイスは、「気負いすぎないこと」です。「大規模な変更を試みようとするとき、圧倒されてしまうのは当然のことです。でも、だからといって挑戦を諦める理由にはなりません。私たちのように 100% 全面移行しなくてもよいので、少しずつ始めてみてください。普段のワークフローを見渡して、USD や Solaris を導入したらメリットがありそうな部分を見つけ出し、切り分けてみるのです。肩の力を抜いて楽にできるやり方はいくらでもあります。結局は、自分たちのスタジオにとって何が本当に必要か、それ次第なのですから」。同氏は笑いながらこう付け加えます。「実は、私たちもいまだにカスタムアセットレゾルバを導入していませんしね」