Blender2.9.3 損壊物理演算シミュレーション、物が壊れる

損壊(その物体のほぼ全体が壊れる)、破損(部分的に壊れる)をBlenderに搭載の物理演算衝突判定によりシミュレーションする設定を模索

厳密には、物体オブジェクトが衝突してから破片オブジェクトになるのではなく、
オブジェクトが損壊されたかのように事前に分割しておいてその状態から床に衝突して砕けるように見えるアニメーション。

使用するアドオンは、標準搭載だがPreferencesのアドオンで追加する必要がある。
Cellで検索して、Cell fractureをチェックする。

・使い方

(1)立方体(他の形状でもOK)rigidbody:activeと板(rigidbody:passive,静止)を作る
立方体はこのときに高めの位置に移動させておくと作業がしやすい
大きさはシミュレーションになれるまで大きさ1m程度にしておく。

(2)Boxを選択して、F3キー(検索Windowを表示)を押してCell fractureを検索して実行するか、ObjectメニューからQuick Effects reference のCell fractureを選択するとサブウィンドウが表示される。(Preferencesのアドオンで登録が必要)
破片オブジェクトを作成するための設定をする。
以下の内容で入力する。細かい部分はわからない。

画像

各種設定を入力する。設定は保存ができるので次回使用するときはその設定を選べる。以下の設定で106個の破片オブジェクトが作成される。選択したオブジェクトの形状により分割数は異なってくる。

重要なのは以下の設定を入れないと物体オブジェクトが損壊したように見えない。
Noize:1
Rando(不揃い)0.8〜1くらい

Mesh Dataの「Margin」は0.001になっていて、0.01くらいにすると破片の隙間ができるので便利かもしれない。

他にも数値を上げるほど破片オブジェクトが増える。あまり上げすぎないようにする。
またキャンセルがないので不用意にOK実行させない。作成されるオブジェクトが再帰的に増えるのでPCのファンが唸ってしまう。中止ボタンがないので終わるまで放置することになる。

(3)破片オブジェクトができたら、もとの立方体を隠し、分割された形状のサイズを少し小さくして隙間を作り、個別のオブジェクトが衝突しやすくする。

もとのBoxCubeは不用

Individual Originsを選択して >>追記、特に縮小する必要はなかった。そのままの破片形状で問題なかったのでこの処理は不要

Sキーを押して縮小する>>追記、特に縮小する必要はなかった。そのままの破片形状で問題なかったのでこの処理は不要

(4)ワイヤーフレーム状態から、立方体全体を選択して、どの破片オブジェクトでもよいのでShift+右クリック(左クリックのときもある)して1つ選択状態+全部選択状態にする。後で1つの設定を他オブジェクトに一括して設定コピーすることができる。(Object > rigidobody>copy from active)

 

Rigidbodyの設定 SurfaceResponseのFrictionを0.6〜0.8くらい

他にも以下を設定する
立方体
Rigidbody active
隣接する部分が近い場合は、
ここのMargin数値を小さくする。小さくしないと爆発するみたいにオブジェクト同士が干渉して弾き飛ぶ。0.001mを指定している。

 

減税の設定を他の破片へ一括コピーする copy from Active

 


Rigidbody passive

・シミュレーション確認

スペースキーを押してシミュレーションを開始。RigidBodyの場合、キーフレームを作成しなくても物理演算機能が働いて落下する。ただ、強制的な動きや力を加えたい場合は、SettingsのAnimatedにチェックしてキーフレームを設定することができる。またAnimatedはキーフレームに対応できるので、解除したいフレームでオフにできる。この機能により、途中のフレーム(位置)まであるオブジェクトを移動させて解除したいフレームでオフにすることでその後は物理演算機能が働いてアニメーションが作成される。例、ボールを水平方向に向けて投げて、レンガにぶつけるシーン

動きが激しすぎるときは、
シーンプロパティのRigidBodyWorldのSettingsのsubsteps per frame,  Solver iterations数値を上げると動きの変化がすくなくなる。ただし、処理が遅い。
オブジェクトの破片の動きが気になるときは、再度破片オブジェクトの作成からやり直す

 

・損壊の動きが正しくないとき

破片オブジェクトの間隔が狭いとき、板に接近する前に損壊してしまう。>数値を小さくする。
板をすり抜けてしまう。>板のRigidbody passive設定がない
シミュレーションが途中で終わる>フレームが足りないので増やす。200〜400Frame
動きが軽すぎる>重力や重さを増やす

・設定による損壊の変化

ここらへんは色々と数値を変えて試すしかない。

分割数を少なくしたい場合はRecursion,Souce Limitを0にすると分割数が少なくなる。簡易的に見せたい場合に都合がよい。 6個できる(最初の設定では106個できるので約10分の1)

こちらの記事もどうぞ