今までBlenderで剛体のシミュレーションの記事は書きましたが、今回は破壊させるシミュレーションをやってみたのでその備忘録です。
また、以下の記事の最後の方にある私が自作したアドオンを有効にしておくと今回の作業が楽になります。
【Blender/python】Blenderの自作アドオンの作り方(その3) - ソースに絡まるエスカルゴ
ちなみにこんな感じのものを作ります。
それでは説明していきます。
1:必要なアドオンを有効にする
今回の剛体破壊シミュレーションには「Cell Fracture」アドオンを使用します。
Blenderを起動させたら「File」→「User Preferences」を選択します。
「Add-ons」タブを開き、検索のところに「cell」と入力して出てきた「Cell Fracture」にチェックを入れます。そして「Save User Settings」ボタンを押して設定を保存します。
これでBlenderを再起動させてもこのアドオンは有効になったままになります。
2:必要なオブジェクトを作成して色をつける
まずは必要なオブジェクトを作成してわかりやすいように色をつけます。
Blenderを起動したら出てくる「Cube」を選択した状態で「Objectアイコン」を左クリックし、LocationのZの値に「1」を入力します。
次に左側にある「Create」→「Plane」を選択します。
「Plane」が追加されるので「Objectアイコン」を選択してScaleを調節します。ここでは全て8にしました。
続いて左側にある「Create」→「UV Sphere」を選択します。
「Sphere」が追加されますが、Cubeに隠れて見えないのでぶつけたい位置にまで移動させます。
これで必要なオブジェクトは揃ったのでわかりやすいように各オブジェクトに色をつけていきます。
「Sphere」を選択した状態で「Materialアイコン」を選択して「New」ボタンを左クリックします。
するとMaterialが追加されるので「Diffuse」のパレット部分を左クリックします。
色の選択ができるので色を選択します。ここでは赤っぽい色にしました。
やらなくてもよいですが、管理しやすいようにMaterialの名前をダブルクリックして「sphere」に変更しました。
同様のやり方で「Cube」と「Plane」にもMaterialを追加して色をつけます。
以下のように「Cube」は青、「Plane」は白っぽい色に設定しました。
3:ぶつけるオブジェクトを破壊対象のオブジェクトの子にする
今回は「Sphere」を「Cube」にぶつけて破壊したいので、「Sphere」を選択した状態で「Shift+右クリック」で「Cube」を選択します。
その状態で「Ctrl+Pキー」から「Object」を選択します。
これで破壊対象のオブジェクト(Cube)が親、ぶつけるオブジェクト(Sphere)が子という関係になりました。
4:Cell Fractureアドオンを使って破片を作成する
3までできたら「Cube」のみを選択した状態で左側の「Tool」→「Cell Fracture」を選択します。
設定画面が表示されるので「Child Verts」タブを開いて「Source Limit」を153、「Noise」を1に設定して「OK」ボタンを押します。
するとアウトライナーに「Cube_cell.001」というような名前でオブジェクトがたくさん追加されます。
この状態で3D Viewの下にある画像の部分を左クリックしてレイヤーを切り替えます。
レイヤーを切り替えるとこのように破片のオブジェクトが表示されました。アドオンを使って作成された破片は別のレイヤーに作成されていたことになります。
5:破片の剛体設定を行う
破片のレイヤーに切り替えた状態で破片のうちの一つ(どこでもよい)を右クリックで選択します。
その状態で「Physicsアイコン」から「Rigid Body」を選択します。
追加して出てきた中のスクロールさせた先にある「Rigid body Dynamics」の「Enable Deactivation」と「Start Deactivated」にチェックを入れます。
設定が終わったら3D Veiw上で「Aキー」を2回押して破片全てを選択した状態にします。
破片全てを選択した状態で左側の「Physics」→「Copy from Active」を選択します。
すると破片全てが緑の枠になり、一つだけやった剛体の設定が全部に適応されます。
6:他のオブジェクトの剛体設定を行う
破片の設定が終わったので、元のレイヤーに戻るために3D Viewの下にある画像の部分を左クリックします。
元のレイヤーに戻ったら「Sphere」のみを選択した状態で「Physicsアイコン」→「Rigid Body」を選択します。
「Rigid Body」の「Animated」にチェックを入れます。
次に「Plane」のみを選択した選択した状態で「Physicsアイコン」→「Rigid Body」を選択します。
「Rigid Body」のプルダウンから「Passive」を選択します。
これで全てのオブジェクトの剛体設定が終わりました。
6:ぶつけるオブジェクトの位置をキーフレームに登録する
キーフレームを見やすくするために左下から「Dope Sheet」を選択します。
キーフレームを1に合わせます。
この状態で「Sphere」のみを選択し、初期位置としたいところまで移動させます。
移動させたら3D View上で「iキー」を押して「Location」を選択して現在位置をキーフレームに登録します。
1フレーム目にキーフレームが登録されました。
同様の方法で20フレーム目で「Sphere」を移動させてから現在位置をキーフレームに登録します。
ここまでできたら左下のところから「Timeline」に切り替えます。
切り替えたら破片のあるレイヤーを「Shift+左クリック」で選択します。これで破片のレイヤーも同時に表示されるようになります。
この状態でタイムラインの「▶︎」ボタンで再生してみます。
すると以下のように球体がぶつかると破片が飛び散る動きができました。
Cubeが残ったままですが、単に破壊シミュレーションを行うだけであればこれで終わりです。
Cubeを残したままにしたくない、レンダリングもちゃんとしたいという場合は以下の手順が必要です。
7:破壊対象の元の形を残さないようにしてレンダリングする
破壊対象の元の形が残っている理由は「ずっと見えるようにしているから」というだけです。
要は「ぶつかる直前までは元の形のみを表示、ぶつかったあとは破片のみを表示」という風にすれば良いのです。
6で動きを確認したら、左下のところから再び「Dope Sheet」を選択します。
フレームを動かして破壊対象に接触する直前のフレームと直後のフレームを割り出します。移動量やぶつけるフレーム数などによって違ってくるので各自で確認してください。
自分の場合は9フレーム目までは当たっておらず、10フレーム目から破片が飛び散っていることがわかりました。つまり「9フレーム目までは元の形を表示、10フレーム目以降は破片のみを表示」すれば良いということになります。
フレームの確認ができたら、まずは元の形のCubeのレンダリング時の表示、非表示を設定します。
今は両方のレイヤーが表示されているので、破片のレイヤーのみを左クリックして無効にします。
9フレーム目であることを確認し「Cube」を選択した状態でアウトライナーの「カメラアイコン」にマウスカーソルを乗せた状態で「iキー」を押してキーフレームに登録します。キーフレームに登録されると黄色になります。
次に1フレーム目まで移動させ同じように「Cube」の「カメラアイコン」にマウスカーソルを乗せた状態で「iキー」を押してキーフレームに登録します。
続いて10フレーム目まで移動させ「Cube」を選択した状態でアウトライナーの「カメラアイコン」を左クリックして無効化します。
この状態で同じようにマウスカーソルを乗せた状態で「iキー」を押してキーフレームに登録します。
これでレンダリング時に1から9フレーム目までは「Cube」を表示、10フレーム以降は非表示という設定になりました。
同様に破片についても1から9フレーム目までは非表示、10フレーム以降は表示にする設定を行います。
破片のレイヤーをクリックして切り替えます。
9フレーム目まで移動させ、3D View上で「Aキー」を押して破片全てを選択します。
この状態で「Cube_cell.001」の「カメラアイコン」のところにマウスカーソルを持っていき「Alt+左クリック」をして選択中の全ての破片のカメラアイコンを無効にします。
これをキーフレームに登録していくのですが、破片の一つ一つのカメラアイコンを「iキー」を押して登録していくのは疲れるので、最初にのせてある記事の自作アドオンを使います。
全ての破片を選択した状態で「Object」→「Insert Restrict rendering」を選択します。
選択したあとにフレームを少し動かすとキーフレームが登録されているのを確認できます。
次に1フレーム目に移動して同じように「Object」→「Insert Restrict rendering」を選択してキーフレームを登録します。
続いて10フレーム目に移動して「Cube_cell.001」の「カメラアイコン」のところにマウスカーソルを持っていき「Alt+左クリック」で有効に戻します。
そして同様に「Object」→「Insert Restrict rendering」を選択してキーフレームを登録します。
最後にレイヤーのところを「Shift+左クリック」でどちらも有効にします。
これでレンダリング時の表示/非表示の設定が終わりました。あとはカメラの位置や動画の長さを調節してレンダリングするだけです。
カメラを調節して動画として出力すると以下のようになります。元の形が残ることなく破壊されているのがわかると思います。
以上が剛体破壊シミュレーションの方法です。詳しく説明しているので長々となっていますが、順番さえ覚えれば10分程度でできるようになると思います。
また自分が作成したアドオンを使えば表示、非表示のキーフレーム登録がかなり楽にできると思うのでよければ使ってください。
・参考資料
www.youtube.com