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

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

【Blender】剛体シミュレーションと手づけのアニメーションをミックスさせる

 タイトル通り今までの知識を組み合わせて、剛体シミュレーション(物理演算)と手づけのアニメーションをミックスさせた動きを作成します。
 今回作成するのは以下のような動きです。

  1. ロボットアームが静止しているオブジェクトを掴む(手づけ)
  2. 掴んだオブジェクトをロボットアームがベルトコンベアに載せる(手づけ)
  3. 載せられたオブジェクトがベルトコンベアに合わせて移動する(物理演算)
  4. ベルトコンベアの終端に来たらオブジェクトが落下する(物理演算)


1:ロボットアームで物を掴む動作を作成する
 以下の記事で作成したデータを読み込んで流用します。
【Blender】オブジェクトを掴むアニメーションを作成する方法 - ソースに絡まるエスカルゴ

 オブジェクトを掴んで動かすというところまではできているので、あとはベルトコンベア部分を作成するだけです。
f:id:rikoubou:20180402192650g:plain


2:ベルトコンベア部分を作成する
 ベルトコンベアは以下の記事の内容に沿って作成します。
【Blender】ベルトコンベアの作り方と物理演算 - ソースに絡まるエスカルゴ

 以下のようにPathで軌道を作成して厚みをもたせたPlaneを並べて諸々設定を行い、剛体の設定まで終了させました。
f:id:rikoubou:20180402223022p:plain

「Torus」が親の影響を受けなくなる85フレーム目が「Torus」の最終位置なので、ベルトコンベアのPlaneとPathの座標を調節してその位置までベルトコンベアを移動させます。
f:id:rikoubou:20180402223606p:plain


3:移動させるオブジェクトの剛体設定をしてキーフレームを登録していく
「Torus」を選択した状態で「Torus」にRigid Bodyを追加します。
f:id:rikoubou:20180402223850p:plain

「Dope Sheet」を表示させて1フレーム目を選択し、現在のRigid Bodyの「Dynamic」と「Animated」を「iキー」を押してキーフレームを登録します。
f:id:rikoubou:20180402224159p:plain

 84フレーム目までは手づけのアニメーションなので、84フレーム目を選択してもう一度Rigid Bodyの「Dynamic」と「Animated」を「iキー」を押してキーフレームを登録します。
f:id:rikoubou:20180402224335p:plain

 これで1フレーム目から84フレーム目まで「Torus」は手づけのアニメーション通りに動きます。

 85フレーム目からは物理シミュレーションに任せたいので、85フレーム目を選択して「Dynamic」をチェック、「Animated」のチェックを外した状態で「iキー」を押してキーフレームを登録します。
f:id:rikoubou:20180402224717p:plain

 この状態で一度再生してみるとこのようになります。
f:id:rikoubou:20180402225019g:plain

 ちょっとわかりにくいですが、85フレーム目から「Torus」が落下してベルトコンベアの上に落ちています。あとはベルトコンベアの動きを作るだけです。


4:ベルトコンベアのアニメーションを作成する
 1フレーム目にX軸の値が0の状態のベルトコンベアのキーフレームを登録します。
f:id:rikoubou:20180402225832p:plain

 どこでもよいですが12フレーム目にX軸を「-0.3」だけ回転させたベルトコンベアのキーフレームを登録します。
f:id:rikoubou:20180402225914p:plain

 12フレーム目を選択した状態で「Channel」→「Extrapolation Mode」→「Make Cycle」を選択してベルトコンベアをループ再生するようにします。
f:id:rikoubou:20180402230041p:plain


5:完成
 1〜4の手順を踏んだ結果、以下のように最初は手づけ、後半は剛体シミュレーションというミックスさせたアニメーションが作成できました。
f:id:rikoubou:20180402230449g:plain


 以上が今までの知識を組み合わせたアニメーションです。これで工場のラインなどはBlenderである程度は再現できるのかなと思います。