>   >  LiNDAのHoudiniBros.チームが総力戦で挑んだ荒海ショット/No.2 海エフェクト篇
LiNDAのHoudiniBros.チームが総力戦で挑んだ荒海ショット/No.2 海エフェクト篇

LiNDAのHoudiniBros.チームが総力戦で挑んだ荒海ショット/No.2 海エフェクト篇

グリオグルーヴ LiNDAのHoudiniBros.チームは、その名が示す通りHoudiniに特化した10人のスーパーバイザーやアーティストで構成されている。10月28日(木)公開のパイプライン篇では、そんな彼らが総力戦で挑んだ映画『ミュウツーの逆襲 EVOLUTION』のヘビーな荒海ショットにおけるHoudiniBros.のパイプラインを紹介した。以降の海エフェクト篇では、嵐によって荒れ狂う海のシーンにおける、海面のエフェクト制作について紹介する。

※本記事は月刊『CGWORLD + digital video』vol. 255(2019年11月号)掲載の「LiNDAのHoudiniBros.チームが総力戦で挑んだ荒海ショット」に加筆したものです。

TEXT_今宮和宏、北村祐也(グリオグルーヴ LiNDA HoudiniBros.チーム)、
尾形美幸 / Miyuki Ogata(CGWORLD)
PHOTO_弘田 充 / Mitsuru Hirota

  • 映画『ミュウツーの逆襲 EVOLUTION』

    2019年7月12日(金)公開
    原案:田尻 智/監督:湯山邦彦・榊原幹典/脚本:首藤剛志/エグゼクティブプロデューサー:岡本順哉・片上秀長/プロデューサー:下平聡士・關口彩香・長渕陽介/アニメーションプロデューサー:小林雅士/CGIスーパーバイザー:那須基仁/音響監督:三間雅文/音楽:宮崎慎二/アニメーション制作:OLM Digital/製作:ピカチュウプロジェクト/配給:東宝
    www.pokemon-movie.jp

    ©Nintendo・Creatures・GAME FREAK・TV Tokyo・ShoPro・JR Kikaku ©Pokémon
    ©2019 ピカチュウプロジェクト


▲LiNDAのHoudiniBros.チームが制作した、Houdiniによる荒海のデモムービー

近景の飛沫から遠景の海面まで、全域をメッシュ化

本作ではエフェクト制作にHoudini 16.5.405、レンダリングにArnold 5.0.1.5を使用している。海面の制作手法は大きく分けて2種類あり、前半の港近くのシーンはWave TankのNarrow Band、出港後にボートで荒海を進むシーンはGuided Ocean Layerを使用。いずれの場合も、FLIPシミュレーションの適用範囲外では、Open Oceanというメッシュベースの手法を使用した。従来であればOcean Spectrumの情報を基にメッシュにディスプレイスメントを適用するが、今回はMayaを経由してArnoldでレンダリングを行う必要があったため、海面の全域をメッシュ化した。飛沫や泡も近景から中景にかけては実際にパーティクルを発生させる手法をとっているため、多くのショットがヘビーな計算量となっている。Deadline(スケジューラ)に投げるジョブ(中間キャッシュ)は20〜30個となった。海面のベース形状作成から、ある程度のルック設定まではボタンひとつで自動的に作成され、プレビュー映像をレンダリングして確認できるしくみも構築された。

▲【左】Wave TankのNarrow Bandを使用した港近くのシーン/【右】Guided Ocean Layerを使用した出港後にボートで荒海を進むシーン

複数人での作業分担を前提に、柔軟に対応できるノードを構築

▲ベースとなるノードの全体像。図内の「3. Local Whitewater Mist」はFlIPシミュレーション用の飛沫・泡・微粒子のノード、「4. Global Whitewater Mist」はOpen Ocean用の飛沫・泡・微粒子のノード。デフォルトのノードを使用する場合もあったが、大半のノードは何らかの改良を加えている


▲例えばFLIPシミュレーション後のメッシュ化で使用したParticle Fluid Surfaceノードの場合、デフォルトの【左】は見づらいなどの問題があったため、【右】のように整理し、大幅な改良を加えた


▲海のメッシュ[Ocean]、飛沫や泡のパーティクル[Whitewater]などの各セクションを一括でコントロールするためのノード。本作ではひとつのショットを複数人で分担して仕上げており、ショット単位の調整も必要だったため、柔軟に対応できるノードが構築された


  • ◀▲ネットワーク内にある全てのキャッシュやレンダリングの設定もノードで管理できる。作業者が新たにキャッシュなどを作成することも想定し、ボタンひとつでリストを更新できるようになっている

海面のベース形状、コリジョン、FLIP用のコンテナを作成

▲【左】OLM Digitalから提供されたプリビズ。波の高さや速度感などが、メッシュの簡単なデフォームで表現されている。これを基に、Ocean Spectrumを使ってメッシュのベース形状を作成する。大きな起伏が必要なものは、Low、Mid、High、Customと、Spectrumを複数組み合わせ、ディテールを分けて作成。Cusp(白波が発生しそうな波の先端)に色を着けた【右】の状態で最初のチェックに出し、おおまかな見た目の承認を得る


▲SpectrumのTime Scaleの値を1以外に設定すると、後述するWhitewaterのFLIPシミュレーションも同じ値にしないと形状がずれてしまう。【左】左側はSpectrum、右側はFLIPで、値は共に1。RGBは高さ情報を表し、Rが最も高く、Bが最も低い/【中】値は左が2、右が1/【右】値は共に2


▲SpectrumのTimeScaleのテスト


海面のコリジョンは、ボートのような動くものと、港のような動かないものに分けて作成した。前者はシミュレーション時にサブステップ分が必要だったため、倍の尺にリタイムして取得したキャッシュを、元に戻した後にサブステップ分として使用した。

▲海面のコリジョン作成時には、VDBとVelocity情報をもったポイントを用意し、主にStatic Collisionを使用。FlipでStick on Collisionを使用するとき、Max Distanceの値がVDBのHalfwidth未満でないと影響範囲を上手く計算できないため、VDBはActivate SDFとし、最後にHalfwidthの値を調整している


▲コリジョンとカメラの情報を基に、FLIP用のコンテナを作成

©Nintendo・Creatures・GAME FREAK・TV Tokyo・ShoPro・JR Kikaku ©Pokémon
©2019 ピカチュウプロジェクト


次ページ:
出港後に荒海を進むシーンでは
Guided Ocean Layerを使用

特集