ボロノイ分割を使うとお手軽に破壊アニメーションが作れますが,今回はボロノイ分割のコネクタを使って段階的な破断アニメーションを作る例を紹介します.
※今回紹介する方法は,新しいシミュレーションではボロノイ分割のコネクタが正しく機能しないため(2025年1月現在),Bulletのダイナミクス機能を使う必要があります.
ボロノイ分割と床に衝突タグを適用する
ボロノイ分割にBulletの「リジッドボディ」タグを,衝突オブジェクトに「衝突」タグを適用します.
ボロノイ分割のコネクタを有効にする
ボロノイ分割のコネクタを作成すると,ボロノイの破片を接続するコネクタオブジェクトが追加されます.
このコネクタはボロノイ分割のそれぞれの破片を繋ぐ役割があり,加わる力によってそれらを破断させることができます.例えば,落下した後に床に衝突した時の衝撃や回転する力で破断させたりといったことができます.これらは「フォースで破断」,「トルクで破断」の数値で設定でき,さらにMoGraphウェイトを使って部分的に破断しやすい,しにくい箇所をつくる,ということもできます.
「フォースで破断」,「トルクで破断」の値を高くすれば破断しにくくなります.小さい値ではわずかな力や回転で破断するようになります.
アニメーションを再生させると,次のように床に衝突した時に自動的に破断させることができます.
フォースの値を高くすると力が伝番しにくくなるため,衝突したところだけ破断します.
フォースとトルクの値は,オブジェクトの大きさ,厚みにより適切な値が変わるので注意が必要です.
キーフレームなしで次のような段階的な破壊を作ることができます.ダイナミクスは計算速度や精度は新しいシミュレーションのリジッドボディには劣りますが,2025年1月現在ではボロノイ分割のコネクタはダイナミクスを使わないと正しく機能しないため,用途に応じてBulletの方法を使ってみるとよいでしょう.
この方法は簡単ですが,最初からボロノイによって分割されているため,ガラスのようなマテリアルの場合には透過や屈折が起きるため,見た目が不自然になります.そういった場合には適していません.