ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【Blender】剛体破壊シミュレーションの方法

 今までBlenderで剛体のシミュレーションの記事は書きましたが、今回は破壊させるシミュレーションをやってみたのでその備忘録です。

 また、以下の記事の最後の方にある私が自作したアドオンを有効にしておくと今回の作業が楽になります。
【Blender/python】Blenderの自作アドオンの作り方(その3) - ソースに絡まるエスカルゴ

 ちなみにこんな感じのものを作ります。
f:id:rikoubou:20180421000305g:plain

 それでは説明していきます。


1:必要なアドオンを有効にする
 今回の剛体破壊シミュレーションには「Cell Fracture」アドオンを使用します。

 Blenderを起動させたら「File」→「User Preferences」を選択します。
f:id:rikoubou:20180419020010p:plain

「Add-ons」タブを開き、検索のところに「cell」と入力して出てきた「Cell Fracture」にチェックを入れます。そして「Save User Settings」ボタンを押して設定を保存します。
f:id:rikoubou:20180419154920p:plain

 これでBlenderを再起動させてもこのアドオンは有効になったままになります。


2:必要なオブジェクトを作成して色をつける
 まずは必要なオブジェクトを作成してわかりやすいように色をつけます。

 Blenderを起動したら出てくる「Cube」を選択した状態で「Objectアイコン」を左クリックし、LocationのZの値に「1」を入力します。
f:id:rikoubou:20180419153010p:plain

 次に左側にある「Create」→「Plane」を選択します。
f:id:rikoubou:20180419155318p:plain

「Plane」が追加されるので「Objectアイコン」を選択してScaleを調節します。ここでは全て8にしました。
f:id:rikoubou:20180420210155p:plain

 続いて左側にある「Create」→「UV Sphere」を選択します。
f:id:rikoubou:20180420210246p:plain

Sphere」が追加されますが、Cubeに隠れて見えないのでぶつけたい位置にまで移動させます。
f:id:rikoubou:20180420210431p:plain

 これで必要なオブジェクトは揃ったのでわかりやすいように各オブジェクトに色をつけていきます。

Sphere」を選択した状態で「Materialアイコン」を選択して「New」ボタンを左クリックします。
f:id:rikoubou:20180420210851p:plain

 するとMaterialが追加されるので「Diffuse」のパレット部分を左クリックします。
f:id:rikoubou:20180420210940p:plain

 色の選択ができるので色を選択します。ここでは赤っぽい色にしました。
f:id:rikoubou:20180420211033p:plain

 やらなくてもよいですが、管理しやすいようにMaterialの名前をダブルクリックして「sphere」に変更しました。
f:id:rikoubou:20180420211226p:plain

 同様のやり方で「Cube」と「Plane」にもMaterialを追加して色をつけます。

 以下のように「Cube」は青、「Plane」は白っぽい色に設定しました。
f:id:rikoubou:20180420211444p:plain


3:ぶつけるオブジェクトを破壊対象のオブジェクトの子にする
 今回は「Sphere」を「Cube」にぶつけて破壊したいので、「Sphere」を選択した状態で「Shift+右クリック」で「Cube」を選択します。
 その状態で「Ctrl+Pキー」から「Object」を選択します。
f:id:rikoubou:20180420212435p:plain

 これで破壊対象のオブジェクト(Cube)が親、ぶつけるオブジェクト(Sphere)が子という関係になりました。
f:id:rikoubou:20180420212622p:plain


4:Cell Fractureアドオンを使って破片を作成する
 3までできたら「Cube」のみを選択した状態で左側の「Tool」→「Cell Fracture」を選択します。
f:id:rikoubou:20180420212957p:plain

 設定画面が表示されるので「Child Verts」タブを開いて「Source Limit」を153、「Noise」を1に設定して「OK」ボタンを押します。
f:id:rikoubou:20180420213158p:plain

 するとアウトライナーに「Cube_cell.001」というような名前でオブジェクトがたくさん追加されます。
f:id:rikoubou:20180420213423p:plain

 この状態で3D Viewの下にある画像の部分を左クリックしてレイヤーを切り替えます。
f:id:rikoubou:20180420213710p:plain

 レイヤーを切り替えるとこのように破片のオブジェクトが表示されました。アドオンを使って作成された破片は別のレイヤーに作成されていたことになります。
f:id:rikoubou:20180420213818p:plain


5:破片の剛体設定を行う
 破片のレイヤーに切り替えた状態で破片のうちの一つ(どこでもよい)を右クリックで選択します。
 その状態で「Physicsアイコン」から「Rigid Body」を選択します。
f:id:rikoubou:20180420214055p:plain

 追加して出てきた中のスクロールさせた先にある「Rigid body Dynamics」の「Enable Deactivation」と「Start Deactivated」にチェックを入れます。
f:id:rikoubou:20180420214426p:plain

 設定が終わったら3D Veiw上で「Aキー」を2回押して破片全てを選択した状態にします。
f:id:rikoubou:20180420214547p:plain

 破片全てを選択した状態で左側の「Physics」→「Copy from Active」を選択します。
f:id:rikoubou:20180420214713p:plain

 すると破片全てが緑の枠になり、一つだけやった剛体の設定が全部に適応されます。
f:id:rikoubou:20180420214736p:plain


6:他のオブジェクトの剛体設定を行う
 破片の設定が終わったので、元のレイヤーに戻るために3D Viewの下にある画像の部分を左クリックします。
f:id:rikoubou:20180420214943p:plain

 元のレイヤーに戻ったら「Sphere」のみを選択した状態で「Physicsアイコン」→「Rigid Body」を選択します。
f:id:rikoubou:20180420215320p:plain

「Rigid Body」の「Animated」にチェックを入れます。
f:id:rikoubou:20180420215402p:plain

 次に「Plane」のみを選択した選択した状態で「Physicsアイコン」→「Rigid Body」を選択します。
f:id:rikoubou:20180420215526p:plain

「Rigid Body」のプルダウンから「Passive」を選択します。
f:id:rikoubou:20180420215732p:plain
f:id:rikoubou:20180420215824p:plain

 これで全てのオブジェクトの剛体設定が終わりました。


6:ぶつけるオブジェクトの位置をキーフレームに登録する
 キーフレームを見やすくするために左下から「Dope Sheet」を選択します。
f:id:rikoubou:20180420220031p:plain

 キーフレームを1に合わせます。
f:id:rikoubou:20180420220149p:plain

 この状態で「Sphere」のみを選択し、初期位置としたいところまで移動させます。
f:id:rikoubou:20180420220340p:plain

 移動させたら3D View上で「iキー」を押して「Location」を選択して現在位置をキーフレームに登録します。
f:id:rikoubou:20180420220457p:plain

 1フレーム目にキーフレームが登録されました。
f:id:rikoubou:20180420220550p:plain

 同様の方法で20フレーム目で「Sphere」を移動させてから現在位置をキーフレームに登録します。
f:id:rikoubou:20180420220806p:plain

 ここまでできたら左下のところから「Timeline」に切り替えます。
f:id:rikoubou:20180420220929p:plain

 切り替えたら破片のあるレイヤーを「Shift+左クリック」で選択します。これで破片のレイヤーも同時に表示されるようになります。
f:id:rikoubou:20180420221034p:plain

 この状態でタイムラインの「▶︎」ボタンで再生してみます。
f:id:rikoubou:20180420221159p:plain

 すると以下のように球体がぶつかると破片が飛び散る動きができました。
f:id:rikoubou:20180420221410g:plain

 Cubeが残ったままですが、単に破壊シミュレーションを行うだけであればこれで終わりです。
 Cubeを残したままにしたくない、レンダリングもちゃんとしたいという場合は以下の手順が必要です。


7:破壊対象の元の形を残さないようにしてレンダリングする
 破壊対象の元の形が残っている理由は「ずっと見えるようにしているから」というだけです。
 要は「ぶつかる直前までは元の形のみを表示、ぶつかったあとは破片のみを表示」という風にすれば良いのです。

 6で動きを確認したら、左下のところから再び「Dope Sheet」を選択します。
f:id:rikoubou:20180420222023p:plain

 フレームを動かして破壊対象に接触する直前のフレームと直後のフレームを割り出します。移動量やぶつけるフレーム数などによって違ってくるので各自で確認してください。
 自分の場合は9フレーム目までは当たっておらず、10フレーム目から破片が飛び散っていることがわかりました。つまり「9フレーム目までは元の形を表示、10フレーム目以降は破片のみを表示」すれば良いということになります。
f:id:rikoubou:20180420222419p:plain
f:id:rikoubou:20180420222519p:plain

 フレームの確認ができたら、まずは元の形のCubeのレンダリング時の表示、非表示を設定します。

 今は両方のレイヤーが表示されているので、破片のレイヤーのみを左クリックして無効にします。
f:id:rikoubou:20180420232352p:plain

 9フレーム目であることを確認し「Cube」を選択した状態でアウトライナーの「カメラアイコン」にマウスカーソルを乗せた状態で「iキー」を押してキーフレームに登録します。キーフレームに登録されると黄色になります。
f:id:rikoubou:20180420233050p:plain

 次に1フレーム目まで移動させ同じように「Cube」の「カメラアイコン」にマウスカーソルを乗せた状態で「iキー」を押してキーフレームに登録します。
f:id:rikoubou:20180420233207p:plain

 続いて10フレーム目まで移動させ「Cube」を選択した状態でアウトライナーの「カメラアイコン」を左クリックして無効化します。
f:id:rikoubou:20180420233446p:plain

 この状態で同じようにマウスカーソルを乗せた状態で「iキー」を押してキーフレームに登録します。

 これでレンダリング時に1から9フレーム目までは「Cube」を表示、10フレーム以降は非表示という設定になりました。

 同様に破片についても1から9フレーム目までは非表示、10フレーム以降は表示にする設定を行います。

 破片のレイヤーをクリックして切り替えます。
f:id:rikoubou:20180420233654p:plain

 9フレーム目まで移動させ、3D View上で「Aキー」を押して破片全てを選択します。
f:id:rikoubou:20180420233820p:plain

 この状態で「Cube_cell.001」の「カメラアイコン」のところにマウスカーソルを持っていき「Alt+左クリック」をして選択中の全ての破片のカメラアイコンを無効にします。
f:id:rikoubou:20180420234310p:plain

 これをキーフレームに登録していくのですが、破片の一つ一つのカメラアイコンを「iキー」を押して登録していくのは疲れるので、最初にのせてある記事の自作アドオンを使います。

 全ての破片を選択した状態で「Object」→「Insert Restrict rendering」を選択します。
f:id:rikoubou:20180420234539p:plain

 選択したあとにフレームを少し動かすとキーフレームが登録されているのを確認できます。
f:id:rikoubou:20180420234727p:plain

 次に1フレーム目に移動して同じように「Object」→「Insert Restrict rendering」を選択してキーフレームを登録します。
f:id:rikoubou:20180420234849p:plain

 続いて10フレーム目に移動して「Cube_cell.001」の「カメラアイコン」のところにマウスカーソルを持っていき「Alt+左クリック」で有効に戻します。
f:id:rikoubou:20180420235021p:plain

 そして同様に「Object」→「Insert Restrict rendering」を選択してキーフレームを登録します。
f:id:rikoubou:20180420235146p:plain

 最後にレイヤーのところを「Shift+左クリック」でどちらも有効にします。
f:id:rikoubou:20180420235510p:plain

 これでレンダリング時の表示/非表示の設定が終わりました。あとはカメラの位置や動画の長さを調節してレンダリングするだけです。

 カメラを調節して動画として出力すると以下のようになります。元の形が残ることなく破壊されているのがわかると思います。
f:id:rikoubou:20180421000305g:plain
 

 以上が剛体破壊シミュレーションの方法です。詳しく説明しているので長々となっていますが、順番さえ覚えれば10分程度でできるようになると思います。
 また自分が作成したアドオンを使えば表示、非表示のキーフレーム登録がかなり楽にできると思うのでよければ使ってください。


・参考資料
www.youtube.com