Houdiniのプロシージャルと、USDの優れた汎用性&互換性を活用することによって、アジャイル型のVFX制作を実現。その成果をエンバイロンメントと群衆表現から深掘りする。

 

記事の目次

    関連記事:映画『室町無頼』|【Houdini】東映アニメーションがUSD(Solaris)を全面的に取り入れたエンバイロンメント制作にチャレンジ! その手応えを聞く

    映画『室町無頼』

    Amazon Prime Videoにて独占配信中

    muromachi-outsiders.jp

    Houdini+USDフローの導入でアジャイル型のVFX制作を実現

    映画『室町無頼』は、室町時代中期に、大飢饉と疫病に苦しむ民衆を救うために日本史上、初めて武士階級として一揆起こした蓮田兵衛(はすだひょうえ)の活躍を描いた時代劇アクション作品だ。
    本作では長回しアクションシーンのプリビズ制作にボリュメトリックキャプチャを用いるなど、新たな手法が積極的に取り入れられた。そんな本作のVFX制作をリードしたのが、東映アニメーションである。

    〈前列・左から〉テクニカルアーティスト・山下稀恵氏、ライティング&コンポジター・山本久美子氏、マットペインター・楊 惠馨氏、エンバイロメントスーパーバイザー・野村 潤氏、エフェクトスーパーバイザー・須藤 悠氏/〈後列・左から〉VFXプロデューサー・小倉裕太氏、テクニカルディレクター・森重孝太氏、ライティングスーパーバイザー・松本涼一氏、コンポジター・丸山空透氏、コンポジットスーパーバイザー・荻野隆行氏、VFXスーパーバイザー・鎌田匡晃氏。以上、東映アニメーション

    「物語の舞台は、応仁の乱が起きる前の京都周辺という広大な設定のため、できるだけ早いタイミングからチェックを行う必要がありました。そして山の上から京都の街並みを捉えたロングショットが登場するなど、建物や自然物を含めて膨大な物量のアセットが求められました」と、VFXスーパーバイザーを務めた鎌田匡晃氏はふり返る。

    また従来のワークフローでは、背景シーンを構成する各種アセットをルックデヴまで終えたHighモデルに差し替えた状態でレンダリングしないと完成イメージを把握できないため、監督や各セクションのSV等へのチェックを段階的に進めていく必要があり、後から修正対応のコストが増えがちであった。

    そこでレイアウトとモデル制作を同時並行で行うことも難しかったため、本作では背景制作を中心に、HoudiniとUSDを主軸としたワークフローを構築した。

    「最終的なVFXショット数は638。BGもカットバイを含めると15ステージ制作しました。これだけの物量のVFX制作をHoudini+USDベースで行うのは初めてでしたが、これまでにTVCMなどの短尺案件で同様のアプローチを試す中で手応えを感じていました」(鎌田氏)。

    背景以外にも一揆集や死体の山に群がるカラスなどの群衆表現もHoudini+USDで制作。このワークフローでは、Hydra(USDを扱うためのツール群「Solaris」で利用されるレンダリングAPI)の機能によってアニメーションとレンダーで個別にデータを作成する必要がなくなるなどシーンデータの大幅な圧縮を実現したほか、制作後半に入ってからの背景を構成する個別アセットの修正も可能になったという。

    映画『室町無頼』VFXブレイクダウン

    SolarisによるUSDベースのワークフロー

    VFX制作の実状をふまえた有効解と成り得るワークフロー

    Houdini+USD(Solaris)ベースのワークフローを導入したねらいは次の3点である。

    〈1〉アセット単位での修正を可能にする
    〈2〉アセット制作とレイアウトを同時並行で行える
    〈3〉協力会社との連携のしやすさ(使用ツールを限定しない)

    ……具体的なワークフローは下表の通り。国内でもUSDの導入事例が増えているが、オープン規格のため様々なソフトウェアを用いた共同制作を柔軟に行えるほか、相対パスでの運用が可能になったため、協力会社とのやり取りを従来よりもスムーズに行えるようになったという。

    ▲ 背景制作のワークフロー(上流工程)。社内のモデラーと、ほぼ全ての協力会社はMayaで作業。カメラトラッキング作業はBlenderとNukeで行われたが、.abcと.usdを併用している(協力会社からは.abcで受領)
    ▲ 背景制作のワークフロー(下流工程)。背景シーンのレンダリングは全てKarmaで行われた

    「各セクションのリードにはHoudiniに慣れているアーティストをアサインしました。スタッフの中にはHoudiniの経験が浅かったり、初めて使う者もいましたが、セクションごとに行う作業をできるだけシンプルにまとめたことで大きな問題は起きませんでした。ワークフローについても、過去の案件を通じてひと通りの検証を済ませた状態で臨むことができたこともあり、導入のための道筋もスタッフ間で共有できていました。その結果社内のショットワークに関しては、6〜7名で対応することができました。将来的に、アニメーションなども全面的にHoudiniをベースとして制作を行うには、さらなる検証とアーティストのHoudini使用率が高くなる必要があると感じています。」(鎌田氏)。

    撮影は2023年9月から12月にかけて行われ、ポストプロダクション期間は2024年9月から11月上旬までの約半年だったという。

    VFXの中心は、エンバイロンメント制作だったが、冒頭シーンの死体の山が積み上がった河原などにはカラスやハエの群衆表現が求められた。そしてクライマックスの一揆集が京の市中を襲撃する描写では、一揆集の群衆カットも多く登場する。

    また納品したショット数は638だが、欠番を含めると約700に達したという。それだけの物量のフォトリアルなVFXを確かなクオリティに仕上げることができたこと。

    さらに、近年は各工程を順番に進めていくという従来のワークフローが難しくなっている実状をふまえると、本作で実践したファイナルデータを待たずにアジャイル型で制作を進めていくことができる、なおかつ協力会社を含めた様々な環境で効率良く共同制作が行えるHoudiniとUSDをベースにしたワークフローには大きな可能性を感じているそうだ。

    ▲ 全体的なスケジュールのイメージ。Houdini+USD(Solaris)ベースのパイプラインを構築したことで各工程の作業を同時並行で行えるようになり、イテレーションの回数を増やすことができた

    制作後半のアセット単位の修正が可能〜エンバイロンメント

    シーンデータの大幅な軽量化や修正対応の効率化を実現

    背景制作をリードしたのは、エンバイロンメント・スーパーバイザーを務めた野村 潤氏。USDファイルを扱うにあたってのデータ階層や作業の進め方などの設計や仕様などを野村氏が中心となり決めていったという。

    「背景アセットのモデリングは、社内のモデラーと協力会社さんにお願いしました。モデリング作業はMayaとHoudiniで行われ、作成したモデルアセットやフォトスキャンデータなどはUSDを採用したことで、効率良く各工程へデータの受け渡しを行うことができました」(野村氏)。

    ▲ 背景セットのワークフロー。社内モデラーはHoudiniとMaya、協力会社はMayaで作業。カメラトラッキング作業はBlenderとNukeで行われたが、USDを採用したことでスムーズなデータの受け渡しを実現。背景シーンのレンダリングは全てKarmaで行われた

    レイアウト用モデルには、HDAを用いることで再利用や共有を効率的に行うことができたという。また、地形については国土地理院が公開している地形データ(GSI Maps)を利用。初期のレイアウト検証では当該データを使い、大枠が決まり次第、データを軽量化したものUSDZパッケージ化することで取り回しをしやすくしたという。

    <STEP 1>レイアウト用土壁モデル(HDAを利用)。HDAとしてパッケージ化し、フォトベースのプロシージャルモデリングで作成された
    • <STEP 2>土壁、門、家屋それぞれのHDAのネットワークビュー。Solarisへ持っていくためのアトリビュート設定までHDA内で行なっている
    • <STEP 3>それぞれのHDAで作成されたモデルをマージした状態

    本プロジェクトでは、背景シーンを構成する1つ1つのアセットを「セットエレメント」と呼んでいた。それらのモデリングは従来通りの手法で行えるようにすることで協力会社にとっても迷わずに作業が行えたようだ。

    「協力会社さんにはMaya+Arnoldで作業をしていただき、Mayaシーンファイルで納品してもらいました。納品データをHoudiniに読み込む際は、半自動的にMaterialXとUSD形式に変換するためのHDAを作成しておいたので大きな問題は起きませんでした」(野村氏)。

    ロングショットでは、樹木や建物(町屋など)オブジェクトが大量に求められた。そこで「セット・ドレッシング(Set Dressing)」工程が設けられている。

    「1つの背景シーンを構成するアセットの数と種類が膨大だったため、1つ1つのアセットをつくりながらその都度配置するのは非効率でした。そこでセット・ドレッシング工程を導入し、作成された多くのセットエレメントをHoudini上でプロシージャルにインスタンス配置しました」(野村氏)。

    また、撮影時の制約などから発生したオンセットへの詳細なセットエクステンション、監督からのフィードバックによるディテールアップなど、カットバイの調整についてもカットバイで作成したアセットをリファレンスにして、元のセットエレメントと差し替えるだけで対応できたという。

    「USDのコンポジション設計やディレクトリ構造の見直しをする必要を感じるなど、課題も残りましたが、大きなメリットを実感できました。エンバイロンメント制作についてはひき続きこのワークフローで運用していけるよう、各種ツールや社内の制作環境を整えているところです」(野村氏)。

    ▲ 背景セットを構成するアセット制作のワークフロー図。本プロジェクトでは、パーツ単位のアセットのことを「セットエレメント」と呼んでいた

    HDAを用いたプロシージャルモデリング例

    <STEP 1>作業UI
    <STEP 2>町屋アセット用に作成された各種HDA。町屋を構成する要素を分解し、それぞれをHDAの組み合わせにて作成
    <STEP 3>ルックデヴ後の町屋アセット。シェーダもプロシージャルに作成されている

    土壁と門のプロシージャルモデリング例

    • <STEP 1>土壁モデル(Highモデル)のHDA
    • <STEP 2>HDAの作業UI。カーブに沿って生成され、パターン切り替えやrender、proxyの両方を同時に作成する
    <STEP 3>門モデル(Highモデル)のHDA

    カットバイ用モデルの作成例〜セットドレッシング〜

    ▲ Mayaで作成したカットバイアセットをHoudiniに戻した状態
    ▲ HoudniでセットドレスしたUSDデータをMayaに読み込んだ状態。手前の3棟をセットの家と置き換えるかたちで作成された
    ▲ HoudniでセットドレスしたUSDデータをそのままMayaに読み込んだ状態。実写プレートとの厳密な合わせが必要なアセットについては、Mayaでモデリングされた

    群衆表現〜一揆集&カラス〜

    新しい機能を試しながらプロシージャルの利点を引き出す

    群衆表現、そして本稿では割愛するが才蔵のデジタルダブルを用いたアクション表現については、テクニカルディレクター 森重孝太氏が中心となり制作が進められた。

    「私はこれまでHoudiniを用いた制作実績があったため、このプロジェクトにおいても活用の余地があると考えました。群衆表現では、農民だけでなく貴族や武士なども作成しました。性別ちがいに加えて、サイズや持たせるプロップ、そしてモーションにもバリエーションがありますが、今回は多数あるスキャンモデルの準備からエージェントセットアップまでの一連の作業を1つのHipファイルにまとめることで効率的に作業を行うようにしました」(森重氏)。

    群衆エキストラの3Dスキャンモデルは数が多く多様なプロポーションがあったため、エージェント自体の数を抑えて管理運用しやすくするために、スケルトンをS、M、Lの3種類のサイズに限定。これによりスキャンモデルのクリーンアップと共にプロポーションを一番近いサイズのスケルトンに合わせるという作業が必要になったが、雛形となるノードツリーを用意しておくことで、ある程度汎用性を残した上で多くの処理を半自動化することができたという。

    「ショットによっては1万体以上の規模になるためエージェントモデルのポリゴンをリダクションする作業も多く発生しましたが、Houdiniはそうした処理もUVやスキンウェイトを壊さずに上手く調整してくれたので助かりました」(森重氏)。

    またエージェント用のモーションキャプチャは、MVNを使い社内で収録。リターゲットやモーションエディットなどのポスト処理は全てHoudiniで行なったそうだ。

    「女性のモーションは全て私が演じました。ポスト処理はKineFXで行いましたが、プロシージャルに構築されているのでエディットがやりやすかったです。基本モーションの収録を少なく済ませることにもつながりました」と、テクニカルアーティストの山下稀恵氏。

    実は山下氏は、以前から森重氏のHoudiniによるプロシージャルなつくり方に興味をもっていたそうで、このプロジェクトに志願したそうだ。

    「比較的小規模の群衆の動きを調整する際は、動線をパスを使って直感的に制御できるCrowd Motion Pathが便利でした」(山下氏)。  

    「カラスの群衆表現用のリギング・アニメーションに、新しく実装されたAPEXを使ってみました。制作時はベータ版でしたが、他ソフトだったらカクつくような重いリグでもほぼリアルタイムで動いたので効率良く作業できました。Houdiniは敷居が高いイメージが浸透していて、実際習得のハードルも高いのですが、そこを乗り越えると必ず良い結果が待っているので、選択肢のひとつとして参考になればと思っています」(森重氏)。

    HoudiniによるMOCAPデータのポスト処理作業の例

    <STEP 1>リターゲット例(Rig Match PoseからFull Body IKへ)。スケルトンのネーミングがソース側とターゲット側で異なる場合もリターゲットが可能
    <STEP 2>Motion Clip Cycleを使用してサイクルモーションを作成
    <STEP 3>モーションエディット例。IK ChainsとRig Poseを使用して、収録したモーションからの派生で新たにモーションを作成した
    ▲ ポスト処理を「Motion Retarget Tool」としてHDA化。モーション数が多かったので、効率化につながった。一斉に更新する場合も都合が良かったという
    ▲ ノードツリー。HDA(Motion Retarget Tool)の中の処理

    Crowd Motion Pathの活用

    ▲ 小規模の群衆カットでは、Houdini 20で実装されたCrowd Motion Pathも活用された。モーションパスを直接操作できるため、壁との干渉を避けるなど意図したルートへ直感的に置きやすかったそうだ

    群衆が手に持つ松明の表現

    • ▲ナイトシーンにて、一揆集が手に持つ松明は、Pyroで作成した炎をジオメトリ化した上でCrowdを配置後に松明の先端にアタッチして表現
    • ▲ 左図を拡大した画像
    • ▲ 炎はBendノードで曲げておくことで、自然な見た目に仕上げている
    • ▲ Velocityをもたせて、MotionBlurに使用している

    群衆に対するクロスシミュレーション

    ▲ 群衆が持つ旗のクロスシミュレーション。パーツごとに揺れの特徴が異なるため、VellumConstraintのConstraint Typeから最適な組み合わせをテストした上で適用
    • <STEP 1>旗のシミュレーション図解。群衆をシーンに配置する
    • <STEP 2>シミュレーションするパーツを取り出す
    • <STEP 3>Vellum Solverで旗を動かす
    • <STEP 4>旗を差し替えた状態

    KineFXを用いたカラスの表現

    • ▲ カラスのKineFXセットアップ例(羽根のスケルトンビルド)。3ds Max形式の市販モデルをAlembicで出力したものをインポート。なおHoudiniでは、ウェイト作業・設定のことを「キャプチャー」と名付けられている
    • ▲ 羽根のジオメトリ
    • ▲ 羽根のシャフト
    • ▲ 羽根のスケルトン。For Loop 処理により羽根の芯のジオメトリからそれぞれに対応するスケルトンを生成。プロシージャル処理のため、ジョイントのチェイン数の変更も後からでも容易に行える
    • ▲Capture Geoを使用したウェイト調整例。スケルトンの形状によってはウェイトが上手く割り振られない箇所が出てくるものだが、そのような箇所に設定してウェイト分布を形づくる
    • ▲ ヘルパーのみを表示した状態。Biharmonic Captureでのみ使用できる
    • ▲ For Loop処理を利用した効率的なキャプチャー。複雑に接しているジオメトリとスケルトンを1対1で処理することで、ウェイトが関係のないジオメトリに飛んでしまわないようにしてある
    • ▲ 合計232本の羽根を一括で処理。要求される品質にもよるが、このカラスの場合は一度もウェイトペイント作業を行わずに済ませることができたそうだ

    条坊制を利用した群衆の動線制御

    ▲ 京都市内の碁盤の目と表される区画整備(条坊制)を利用した群衆表現の制御例。設定に基づく一揆集の走行ルートを図示したもの。右上のUnknownは、元の設定にはないが演出に応じて追加した集団
    • ▲ 一揆集のCrowdは、Path Curveによって「決められた方向・経路に沿って進む」「切り取られたObstacle(建物・壁)を避ける」「切り取られたTerrain(地形)の上を走る」ように設定
    ▲ 上図のパースビュー。起点になるPath Curveを変更するだけで、そのながれにある集団をほぼレンダリングの手前までプロシージャルに更新(7〜8割程度の作業を自動化)できた
    ▲ 実際にあった「群衆全体をもっとカメラに近づける」という修正作業の例。「Path Curveを変更→各キャッシュを取り直す→レンダリング」という手順で終えることができたという
    ▲ 修正後。ほかにも「路地に派生する小集団を追加する」場合も、「メインのPath Curveに枝を追加→追加分のCrowd Sourceを少なめに設定→各キャッシュを取り直す→レンダリング」といった具合に手早く終えられたそうだ

    INTERVIEW & TEXT_NUMAKURA Arihito