【連載】『Warlander』における大規模破壊演出の自動生成システムを深堀り – 第2回「シミュレーション編」
こんにちは、トイロジックでTAなどを担当しているオウです。
弊社が企画・開発をしている『Warlander』では、様々なアセットの破壊演出があります。その中の一つに大型の建物を破壊しマップを変えるほどの大規模な破壊演出があり、この演出を実現するためにトイロジックでは独自のシステムとして「大規模破壊演出自動生成システム」を開発しました。
本記事は「システム概要&レベルデータ処理編」・「シミュレーション編」・「自動化編」の全3回の2回目である「シミュレーション編」をお届けいたします。
前回のおさらい
Houdiniのネットワーク
Destruction Env Loader
レベルデータを読み込み、Houdini内でマップを再現し、不要なオブジェクトをシミュレーションから除外しますDestruction Geo
破片の最適化や動力学的な拘束関係などを自動的に構築し、シミュレーションに使うアトリビュートを定義しますDestruction Solver
シミュレーションのソルバーで、モーション&コリジョン&VFXデータを生成しますPDG Mot Exporter
リストアップしたマップとオブジェクトの「破壊アニメーション」を一気に出力します
前回の「システム概要&レベルデータ処理編」では、レベルデータとオブジェクトを処理する1.Destruction Env Loaderと2.Destruction Geoをメインにご紹介しました。今回はシミュレーションソルバーの3.Destruction Solverをご紹介します。
シミュレーション
「Destruction Solver」は、「Destruction Geo」で処理した破壊オブジェクト・ボーン・コリジョン(マップ)を入力してシミュレーションし、モーションなどのデータを生成します。
『Warlander』では、大型の石造建築を破壊するために、メテオやカタパルトなどの大魔法や攻城兵器を使用します。そして、石造建築には短い城壁から長い石橋まで、さまざまな形状に対応するために、「Destruction Solver」には4種類のシミュレーション方法が用意されています。
球体衝突
メテオやカタパルトなどの弾による衝突をシミュレーションするには、球体衝突が最も適切です。破壊オブジェクトの重心と指定した角度から、インパクトポイントと衝突方向を決定し、そこに球体を衝突させることで、オブジェクトを破壊できます。
破片に初速を与える
短い城壁などの破壊では、球体衝突は上手くいくかもしれませんが、長い石橋などの破壊では、一部しか破壊できない場合があります。そのため、インパクトポイントを中心に、破片全体に初速を与えることで、衝突されなくてもオブジェクトを破壊できます。そして、均一に同じ初速を与えるのではなく、インパクトポイントから離れるほど、与えられた速度が減衰し、インパクトポイントから徐々に崩れていくのような演出も実現可能です。
ガイドシミュレーション
ガイドシミュレーションは、既存シミュレーションの破片の動きやジオメトリのアニメーションを利用して、シミュレーションの破片の動きを駆動させます。
これによって、オブジェクトをねじるや引き裂くような演出が可能です。
カスタマイズDOPネットワーク
「Destruction Solver」の中に入るとDOPノードを追加することができます。特別なフォースや他のSOP Solver DOPを適用することで、シミュレーションの挙動をカスタマイズし、このノードを拡張できます。竜巻やブラックホールに吸い込まれるなど、さまざまな演出が可能になります。
そして、この4つの方法を組み合わせて使用することも可能です。この柔軟かつ強力なツールによって、アーティストがより芸術的な部分に注力できるようになりました。
モーションデータの生成
シミュレーションから得たのは、ジオメトリアニメーションであり、そのまま出力すると膨大なデータになります。そのため、Wrangleを使って、各破片の動きをボーンにベイクします。このボーンアニメーションをエンジン専用のフォーマットとして出力すれば、ゲーム内で破壊FXを簡単に再生できます。
コリジョンデータの生成
破壊されたオブジェクトをプレイヤーやギミックとインタラクティブにするには、コリジョンが必要です。
『Warlander』の大規模破壊演出では、何百、何千もの破片が同時に生成されるので、ゲームのパフォーマンスを最適化するためにコリジョンタイプは外接球体に設定しています。クラスターアルゴリズムを使用して、時空間上で近い破片を1つのコリジョンに統合し、コリジョンの数を減らすことも可能です。
VFXデータの生成
「Destruction Solver」は、破片が地面にぶつかった時に粉塵エフェクトを起こすためのインパクトポイントを生成することができます。
詳細はこちらの記事「Warlanderにおける大規模破壊演出の自動生成 -VFX編」をご覧ください。
最後に
今回の記事では、『Warlander』の「大規模破壊演出システム」のシミュレーションソルバーを紹介しました。最終回となる第3回ではシステムの自動化部分を紹介する予定ですので、ぜひ次回も読んでいただければ幸いです。
※本記事はトイロジックのゲーム開発技術ブログ「トイログ」からの転載です。他にも記事を読みたい方はぜひトイログをチェックしてみてください!
この記事が気に入ったらサポートをしてみませんか?