アニメの現場で活きるHoudiniの使い方 モンスターストライクPVメイキング ~CGWCC 2023(5)
13回目を迎えた日本最大級のCGカンファレンス「CGWORLD 2023 クリエイティブカンファレンス」。全36のセッションが配信され、注目作品のメイキングから最新の技術やテクニックに関する情報まで、幅広い話題で盛り上がりを見せた。本記事では、セッション「アニメの現場で活きるHoudiniの使い方【モンスターストライクPVメイキング】」の模様をレポートする。
本セッションにはYAMATOWORKSのCGディレクター/キャラクターモデラー/プロダクションマネージャーである澤田覚史氏と、同社CGエフェクトアーティスト/CGアニメーターである北居士龍氏が登壇。
『モンスターストライク【獣神化・改】魂を快気せし海の少女 キスキル・リラ SPECIAL MOVIE』に登場する生き物「サンゴクジラ」を題材にしたモデルメイキング、『モンスターストライク 獣神化 SPECIAL MOVIE』シリーズを題材にした、アニメの現場で活きるHoudiniTips、そして制作環境構築のこだわりの3つのパートで構成された。
登壇者
澤田覚史氏
YAMATOWORKS CGディレクター/キャラクターモデラー/プロダクションマネージャー
1988年神奈川県生まれ。2012年のYAMATOWORKS法人化より所属。アニメのCG制作業務全般に携わりつつ、システムインフラ・プラグイン開発などプロダクションのバックエンドをマネジメントしている。
北居士龍 氏
YAMATOWORKS CGエフェクトアーティスト/CGアニメーター
1996年茨城県生まれ。長岡造形大学出身。2019年からYAMATOWORKSに所属。LightWaveでのアニメーション作業とHoudiniでのエフェクト作業の二刀流で各案件に携わる。入社前から3ds MaxとHoudiniを独学で習得。
モデルメイキング「サンゴクジラ」
まずは『モンスターストライク 【獣神化・改】魂を快気せし海の少女 キスキル・リラ SPECIAL MOVIE』に登場したサンゴクジラのモデルを題材に、MODOでのモデリング、Houdiniを活用した最終処理について解説が行われた。
「ある日、監督から‟今回のPVは、サンゴのいっぱいくっついたクジラを出すから”と言われたんですね。僕の中で体の大きなものは面倒だという経験則があったんですが、その通りになりました(笑)。まずは何よりもクジラの素体が必要だろうと考えて、社内の担当モデラーに素体の部分を作ってもらいました」(澤田氏)
サンゴ部分のモデリングには時間を要するため、アニメーターはサンゴのない状態の素体を使用して作業を進めた。最終的に素体の外側がサンゴで装飾され、ボリュームが増すことを見越して、この時点ではクジラの身体は完成形より大きめにつくられている。モデリングにはMODOが、アニメーションツールにはLightWaveが使用された。
素体を使用したアニメーションのレイアウト作業と並行して、モデリング側では、サンゴをつくる工程に取り掛かった。「コンセプトアートの雰囲気を再現するためには、サンゴを手作業でねらって置いていく必要がありました。サンゴをひとつひとつインスタンス複製して置いていく方法は現実的じゃないなと判断したので、パーティクルマップ機能を使うことにしました。この機能を使うと、その後複製機能を使用した際に、それぞれの頂点に対して、トランスフォームの情報や、どのアイテムを使うかといった情報を持たせておくことができるんです」(澤田氏)
モデリングされたサンゴの配置を進めながら、よりリアリティのある表現が検討された。その結果、当初準備されたサンゴ単体のモデルだけではなく、岩に付着したサンゴのモデルも追加制作されたという。複製元となるモデルのパターンが増加したが、この工夫により「ランダム感」のあるサンゴの表現が実現した。
色まで含めてサンゴを配置をしたところ、非常に重たいモデルとなり、作業の途中でPCでの表示ができなくなり、レンダリングもできなくなってしまう事態が発生したという。「作業が進められなくなってしまったので、サイコムさんに急遽お願いして、メモリを32GBから64GBまで増設していただきました」(澤田氏)
「無事PCで作業ができるようになった後は、美術スタッフからのフィードバックを反映し、色の分布、配置や明度の統一を考えて配置を調整していきました」(澤田氏)
こうした工程を経て完成したかと思われたサンゴクジラだが、ここで問題が発生したという。
「アニメーションについては、LightWaveから持ってきたMDDやAlembicといったポイントのアニメーション情報をMODO上で流し込めばいけるんじゃないかと思っていたんですが、実際にはサンゴを安定してクジラの動きに追随させることができませんでした。
そんなとき、後ろの席に座っていた北居が“Houdiniならできると思いますよ”と提案してくれたんです。
フローとしては、まず簡略化したサンゴの代替モデルを置いていきました。リプリケーターベースで作っていたので、置き換えは簡単にできました。さらに全てのサンゴのモデルをバラで出してもらって、その対応づけを行いました。モデラーでの作業はここまでで、この先はHoudiniで作業することになりました」(澤田氏)
MODOからHoudiniへのデータの受け渡し
「MODOからHoudiniへのモデルの受け渡しが、本件における最大のハードルになりました。受け渡すのは、MODOのリプリケーター機能を使って配置された、インスタンス状態のサンゴです。単純なモデルデータであれば、OBJやFBXのファイルデータで受け渡すことができますが、今回はインスタンス状態であるため、他のソフトに簡単に受け渡せるデータではありません。まず思いつく方法としては、インスタンスをひとつに固めての出力ですが、インスタンスを固めると約2億5685万ポリゴンになってしまうため、その方法をとることはできませんでした」(北居氏)
ここで北居氏が取った方法は、配置されたサンゴのジオメトリそのものを送るのではなく、サンゴの配置情報だけを伝達し、Houdini側で再構築する方法であった。伝達する情報として、サンゴの位置、回転の程度、スケール、種類の4種類を使用した。
受け渡し後のアニメーション作業とサンゴのコピー
MODOから受け取った静的なデータを動かすためには、サンゴの情報入りのポイント群、クジラの初期位置を示すレストジオメトリ、そしてアニメーションジオメトリの3点が必要になる。3つを用意した上でPoint Deformノードを使うと、静的なジオメトリに対して、動的なジオメトリの動きや変形を適用することができる。アニメーションジオメトリの変形を、サンゴの情報入りポイント群に対して適用することにより、クジラのアニメーション作業が行われた。
「最後に、ポイントに対して適切なサンゴを選びながらコピーしていきます。ここでの問題は、サンゴの種類が多いことです。いくつかの方法を検討した結果、サンゴの大元のポイント群から特定の種類だけを抽出し、その種類に該当するサンゴのモデルデータを読み込み、コピーをするという方法を取りました。大元のサンゴのポイント群から種類毎に手動で分割をして、種類毎にCopy to Pointsノードにかますという、手間のかかる方法です。ともあれ、この方法でコピーは成功し、重すぎない程度に動いてくれました」(北居氏)
北居氏は後日、サンゴのコピー作業について、どのような方法で行えば最も早く処理できたのか改めて検証を行なったという。
「検証方法としては、12種類のジオメトリを用意して、コピー先のポイント5000個に対して、適切な種類を選びながらコピーしていくという処理です。120フレームのフリップブックを出力し、その際の処理時間を比較しました」(北居氏)
「結論としては、なんと今回使用した、分解して個別にコピーしていく方法が最速でした。Copy to PointsノードのPiece Attribute機能を使った場合も、所要時間はわずかな差のみでした。一方、Copy Stampノードを使った場合、他の方法と比べて約10倍も時間がかかってしまいました」(北居氏)
「コピーの種類を3つまで減らした場合でも、Copy Stampノードを使うと、他の方法の10倍ほど時間を要しました。ポイント数を500まで減らすと、所要時間の差がようやく2倍くらいにまで縮まりました。Copy Stampノードは、処理負荷がコピーの総数に大きく比例しているようです。結局、今回サンゴクジラの制作において採用した分解して個別にコピーする方法が一番速いことがわかりました。ただし、ネットワークの煩雑さとトレードオフです。
こうして、なんとかHoudini上でクジラをアニメーションさせることができました。納期が迫っている状況での土壇場の対応で、強引なネットワークでもしっかりと走ってくれるHoudiniの堅牢さに救われました。私はサイコムさんから提供していただいたThreadripperの32コアのハイスペックなマシンを使っているのですが、その強力なマシンパワーも存分に発揮された案件でした」(北居氏)
Houdini Anime Tips
Tips1 カメラスケールによるパース表現
「今回紹介する1つ目のTipsで最も重要な法則は、‟焦点距離変更=カメラスケール”です。焦点距離は、カメラのミリ数のことです。一方、カメラスケールというのは私の造語です。カメラが向いている方向の軸に対してスケールをかけることを、カメラスケールと定義しています」(北居氏)
LightWaveに用意されたシーンデータによって、焦点距離を変更していった場合とカメラスケールをかけた場合とでは、全く同じ見かけの変化を起こせることが説明された。
「単に焦点距離を変えるなら、カメラプロパティでミリ数を変えればいいだけです。では、カメラスケールを活用するメリットとはなんでしょうか?答えは、広角と望遠をミックスした見た目をつくることができる点です」(北居氏)
さらに、カメラベクトルを調整することで、消失点が移動したような効果を得ることもできるという。
カメラスケールの実装にあたっては、カメラからの見え方に基づく座標であるNDC座標空間が使用されている。NDC座標空間は常にカメラに対して水平であり、カメラが見ている範囲の端から端までが0.0から1.0の範囲で正規化される。
Tips2 パーティクルアニメーションのSOP編集
「‟DOP(Dynamic Operator)でシミュレーションした結果をSOP(Surface Operator)で編集する”というケースはよくあると思いますが、今回はその方法について少しトリッキーな例を紹介します。
検証に使用するのは、キャラクターの大群がカーブを描きながら手前へとやってくるショットです。このそのショットに対して、‟カーブのときには今よりも遅く、カメラに向かってくるときには今よりも速くして”というリテイクが来たとしましょう。DOPに戻っての調整は不可として進めていきます」(北居氏)
まず、Houdiniのポート上のパーティクルをラインポリゴンに変換していく。ラインポリゴン上のポイントには、IDアトリビュートとtimestampアトリビュートを設定する。timestampアトリビュートは、‟何秒にどの地点にいたか”を示すアトリビュートである。このtimestampアトリビュートを編集することで、進行速度を変えることができる。
「続いて、編集されたtimestampを加味しつつ、パーティクルに戻していきます。uvsampleというVEX関数(Houdini内のエクスプレッション言語)を使って、ライン上にポイントを走らせていきます」(北居氏)
timestampアトリビュートの変化を継承したUVをつくるために、fit関数を使用し以下の通り記述された。
float uvx=fit(timestamp,oldMin,oldMax,0.0,1.0);
timestampアトリビュートの最大値と最小値の確認にあたっては、Attribute Promoteノードを使用する。ポイントから、timestampアトリビュートをひとつしかないプリミティブへプロモートする。このとき、Promotion Methodでminimumとmaximumを選択すれば、最大値と最小値をそれぞれコピーすることができる。
「UVが設定出来たら、uvsample関数を使って走らせていきます。uvsample関数とは、指定したUV座標の特定のアトリビュートを取得する関数です。今回の例では、ライン上の座標を取得する必要があります」(北居氏)
現在時間における座標の取得が必要となるが、秒数形式で入れてもUVには対応していないため、先ほどの作業と同様最大値と最小値を使用し正規化する。正規化後に現在時間のUVを参照することで、座標pが得られ、ラインを走らせることが可能になる。
「最後に、SOPで調整することの利点について、私見を述べさせていただきます。まず1点目のメリットとしては、再シミュレーションする必要がないことがあげられます。さらに、他の要素に影響なく、修正したい要素だけを修正できることもメリットです。
例えば、あるショットに対して‟このモデルの動きだけだけ速くしたい”とか、‟この塊だけ退かしたい”とか、そういうピンポイントの指示が現場ではよく発生します。そういった場面でDOPに戻ってパラメータを調整してしまうと、基本的に全体に影響するので、想定外の二次災害的なリテイクが発生する危険性があります。一方、SOPで編集すれば、確実に修正したいところだけを修正し、最短で解決することができます」(北居氏)
職種ごとに最適化された、YAMATOWORKSの制作環境
「YAMATOWORKSでは、スタッフの機材にまつわるストレスを最小限にとどめるよう努めています。アニメーション制作におけるコストは人件費が大体を占めますが、 ハイスペックな機材を導入することでひとりひとりの作業が効率化されれば、長い目で見てコストダウンが狙えると思っています。スタッフのストレスが減ることが、クオリティアップにも繋がると考えております。ただ、もちろん闇雲にハイスペックな高額マシンを入れることも難しいので、アニメ制作における必要十分なスペックをよく検討しました。そしてたどりついたのが、サイコムさんのPCでした」(澤田氏)
澤田氏によれば、会社設立初期に導入したサイコムのPCはその後約8年間現役で、大きなトラブルもなく稼働していたという。その後はパーツスペックの観点から、新しいPCへの入れ替えが随時進められている。
YAMATOWORKSでは、3DCGクリエイター用/コンポジット作業用/レンダリング作業用/2Dクリエイター・貸出用の4分類でPCの構成を変えているという。近年Blenderを使い始めたことと、長編作品の元請事業の割合が高まったことが機材選定に影響を及ぼしている。
「BlenderはGPUのスペックを必要とするので、高スペックのGPUを積んだり、メモリも以前は32GBで統一していたところを、最近は64GBに増設しています。コンポジット作業用のPCは3Dクリエイター用よりさらにスペックの高い仕様にしています。
また、元請作品を制作するにあたり、外部の2Dクリエイターの方や制作・演出の方が出入りするようになったため、一時的な貸し出しのためにちょっと低めのスペックのPCも導入しています。レンダリング用のPCは、LightWaveでのレンダリングにそこまでのスペックは必要ないので、省スペースでコストパフォーマンスが高く、かつ高耐久のものを選んでいます。
最近では、GPUよりもCPUを酷使するZbrush用に、高スペックなCPUを搭載したモデルも組んでもらいました」(澤田氏)
「サイコムさんのPCはとてもカスタマイズ性が高くて、いつも助かっています。めちゃくちゃ安いかと言われると正直そこまでではないんですが(笑)、製品としてとても信頼できるんです。故障があっても、サポート対応がとてもしっかりしています。負荷がかかる作業の間もすごく静かで、サイコムさんのPCを使い始めてから、音が気になったことがありません。さらに、大した掃除もしていないのに、中がすごくキレイなんです。配線もキレイなので、社内でパーツ交換をする時も、かなり作業しやすくて助かっています」(澤田氏)
PCの購入に関するお問い合わせ
株式会社サイコム
TEL:048-994-6070/Mail:pc-order@sycom.co.jp
平日10時~12時、13時~17時(土日祝祭日はお休み)
www.sycom.co.jp
TEXT_オムライス駆 / Kakeru Omuraisu
EDIT_Mana Okubo(CGWORLD)