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

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

FLIPシミュレーションとOpen Oceanの境界処理

▲前述のBoundary MaskとInner Maskを使い、Open Oceanのメッシュ形状をFLIPシミュレーションの形状にオーバーライドしてなじませている。【左上】Open Oceanのみ/【右上】画面中央はFLIP、周辺はOpen Ocean、黒色の部分は港の埠頭/【左下】FLIPとOpen Oceanの境界をBoundary Maskで平坦化したもの/【右下】FLIPとOpen Oceanの境界はBoundary Mask、境界以外の変化の少ない領域はInner Maskを使ってなじませたもの


海面のパーティクルはVDB from Particle Fluidを使ってメッシュ化したが、飛沫が波砕して複雑に入り組んだ形状になった場合に小さな穴が空くケースがあり、VDBがメッシュ化できずに消える現象が発生した。根本的な原因はわからなかったが、穴が空いたら埋める処理を加えることで対応した。なお、Whitewater Sourceに渡すデータも、海面のメッシュと同じく事前に境界処理を適用している。

▲飛沫などの小さなメッシュは透明度が高すぎるとスケール感が損なわれてしまうため、 CurvatureやSpeedを基にSSSを適用し、海面のシェーダとブレンドした。【上】SSSの適用前/【下】SSSを適用し、海面のシェーダにブレンドしたもの

飛沫や泡のボリューム感も考慮し、FLIPシミュレーションを調整

海面の飛沫(Spray)、海面の泡(Foam)、海中の泡(Bubble)の作成には、Whitewater Sourceを使用した。なお、以降で紹介する手法は、Houdini 17.0からはやり方が変わっている。Whitewater Sourceを使ったSource作成に加え、FLIPシミュレーション時にエラーとなったSourceポイント(ひとつだけ明後日の方向に飛んでいるパーティクなど)の削除も行なっている。ここでのSourceの量と、FLIP時のEmissionの量によってパーティクルが大量に発生したり、少なすぎたりする場合があったのに加え、Pscaleの値によっても見え方が変わるので、結果が予測しにくい工程だった。また、FLIP時の見え方よりもボリューム感が増すので、この工程まで進めないと最終的な見映えがわかりづらく、監督などのチェックでは注意が必要だった。

「Narrow Bandを使って飛沫の跳ね上がりを表現するショットでは、1回のFLIPシミュレーションでねらった形状の飛沫にするのが難しかったので、5パターンくらいのFLIPをまとめて実行し、プレビューを見てベストの結果を選んでいました。ただし、Whitewaterの工程で飛沫や泡が加わると、かなりボリューム感が増し、ひとまわりくらい印象が変わってしまうので、そこまで考慮してFLIPを調整しておく必要がありました」(今宮氏)。

▲FLIPシミュレーション時の海面


▲FLIPシミュレーションを適用した海面に、飛沫や泡(Whitewater)と微粒子(Mist)を追加したもの。ボリューム感がひとまわり大きくなり、キャラクターが波にさらわれそうになっている。「こういうショットでは、埠頭に跳ね上がる飛沫のベクトルを反転させて海面へ飛ばしたり、ポスト処理で波を低くしたりするなどして、ボリューム感を調整しました」(今宮氏)



▲飛沫や泡を調整した海面

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


次ページ:
飛沫や泡のシミュレーションも
対策を講じて負荷を軽減

特集