【連載】『Warlander』のエフェクト 第3回「Warlanderにおける大規模破壊演出の自動生成 -VFX編」
こんにちは、トイロジックでエフェクトとTAなどを担当しているオウと申します。今回は『Warlander』における大規模破壊演出のVFX自動生成についてお話したいと思います。
『Warlander』の破壊演出について
『Warlander』では2種類の破壊演出があります。
- リアルタイムの「物理破壊」
リアルタイムで計算し、インタラクティブな動きができます。主に木造建築や小物などの破壊で使用しています。 - Houdiniでシミュレーションした「破壊アニメーション」
事前にシミュレーションするので、負荷が軽く、芸術性の高いコンテンツの作成も可能になります。主にダメージを受ける大規模破壊演出で使用しています。
それぞれメリットとデメリットがありますが、『Warlander』では城壁や石橋などの石造建築の破壊でプレイヤーがダメージを受ける大規模破壊演出があります。この大規模破壊演出にはプレイヤー同士で破片の位置情報を同期する必要があるため、2.Houdiniでシミュレーションした「破壊アニメーション」を採用する事にしました。
Houdiniによる大規模破壊演出の自動生成
とは言え、物量的にすべての「破壊アニメーション」をアーティストによって手作りするのは工数的に現実的ではありません。そこで、『Warlander』では大規模破壊演出をHoudiniから自動生成するシステムを構築しました。
シミュレーションしたいマップとオブジェクトをリストアップするだけで、「破壊アニメーション」を自動的に生成することができます。ネットワークは主に下記の4つのHDA(カスタムノード)
で構築しております。
※HDAとは、Houdini Digital Assetの略です。
レベルデータを読み込み、Houdini内でマップを再現し、不要なオブジェクトをシミュレーションから除外します。2. Destruction Geo
破片の最適化や動力学的な拘束関係などを自動的に構築し、シミュレーションに使うアトリビュートを定義します。3. Destruction Solver
シミュレーションのソルバーで、モーション&コリジョン&VFXデータを生成します。4. PDG Mot Exporter
リストアップしたマップとオブジェクトの「破壊アニメーション」を一気に出力します。
これにより、レベルデータが変更される度に、モーションやVFXなどのデータがJenkins経由で自動的に更新されます。
エフェクトの自動生成
迫力のある破壊演出にはエフェクトが不可欠です。「destruction solver」ノード
は破片が地面にぶつかった時に粉塵エフェクトを起こすためのインパクトポイントを生成することができます。以下画像のように、衝突の位置、タイミング、方向、力なども一緒に生成されます。
これらのインパクトポイントのデータを元に、粉塵エフェクトが生成されます。
※HoudiniのデフォルトノードRBD Bullet SolverのImpactsの機能で同じ事ができます。
エフェクト処理負荷の削減
インパクトポイントをそのまま使って粉塵エフェクトを生成することもできますが、スペックを満たしていないPCではフレーム落ちの原因になります。そこで、インパクトポイントをクラスタ化し、発生するエフェクトの量を減らします。
「destruction solver」ノード
は、独自のクラスタリングアルゴリズムで生成されたインパクトポイントをクラスタ化し、エフェクトの負荷が一番低くなるよう自動的に最適化をします。そこから各クラスタ毎にエフェクトの種類、発生位置、タイミング、大きさ、方向などの情報を生成し、エンジンに渡します。この処理により、たった数個のエフェクトだけで迫力のある粉塵を作れるようになりました!
※動画での円はエフェクトの発生位置、大きさや方向などを可視化したものです。
『Warlander』エフェクトチームでは、このようにHoudini
によって制作工程の一部を自動化し、制作工数の大幅削減を行う事により、アーティストがより芸術的な部分に注力できるようにしています。
最後に
ここまで読んでくださりありがとうございました! 私も一緒にこんなエフェクトを作ってみたい、効率化してみたい!と思われた方は是非弊社採用ページからご応募お待ちしております。