今回はオブジェクトを掴むアニメーションをBlender上で再現する方法です。
1:掴む物がない状態でのアニメーションを作成する
今回は以前の記事で作ったアニメーションをそのまま流用します。
【Blender】ボーンを使わないでアニメーションを作成する - ソースに絡まるエスカルゴ
以下の記事のやり方に沿って新規ファイルに元のファイルを読み込ませます。
【Blender】別のBlenderファイルを読み込む方法 - ソースに絡まるエスカルゴ
動きとしては以下のような形です。何かを掴んで移動させるという動作をさせています。
2:掴む対象物のオブジェクトを作成する
掴む対象物専用のモデルを作成するのでもよいですが、面倒なのでここではTorusを掴むことにします。
最初のフレームになっていることを確認してから、左側の「Create」タブから「Torus」を選択します。
このままだと大きいので追加された「Torus」を右クリックで選択した状態で「Objectアイコン」の「Scale」を調節します。
今回はScaleの値全てを「0.3」に設定しました。
3:掴む対象物の座標を合わせる
今回のアニメーションでは60フレームのところでハンド部分を閉じて物を掴むようにしているので、60フレーム目を選択します。
この時のハンド部分に合うように「Torus」を移動させて座標を合わせます。
「Torus」を移動させたら、「Torus」を選択した状態で「iキー」を押して現在の位置などを登録します。
これで選択した項目だけ(Torusだけ)がキーフレームとして登録されます。
1フレーム目から「Torus」は今の位置にいて欲しいので、1フレーム目を選択して「iキー」を押して現在位置を登録します。
これで「Torus」は1フレーム目から60フレーム目までは同じ位置になります。
4:掴む対象物に「Child Of」を追加する
「Torus」を選択した状態で「Constraintsアイコン(鎖のようなアイコン)」を選択し、「Add Object Constraint」から「Child Of」を選択します。
追加したら親にしたいオブジェクトを「Target」から選びます。今回はグリッパ部分で掴んでいるので、グリッパの右側のオブジェクトを選択します。
選択するとおかしな位置に「Torus」が移動しますが、「Influence」の値を0にすると元の位置に戻ります。
5:掴む対象物をキーフレーム登録していく
1〜60フレームまではグリッパの影響を受けないので、1フレーム目にして「Influence」にマウスカーソルを乗せた状態で「iキー」を押して「Child Of」のキーフレームを登録します。
キーフレームが登録されると項目が追加され、登録された部分が黄色くなります。
同様にして60フレーム目も「Influence」の内容を登録します。
これで1〜60フレーム目までは親の影響を受けないことになります。
61フレーム目からは親の影響を受けるので、61フレーム目にして「Influence」の値を1にします。
すると「Torus」がおかしな位置にいくので「Clear Inverse」ボタン→「Set Inverse」ボタンの順番で押します。
これで「Torus」が元の位置に戻りました。
この状態で「iキー」を押して61フレーム目に「Influence」を登録します。
ここまでで動きを確認すると1〜60フレーム目は何も起きませんが、61フレーム目からはロボットアームのグリッパ部分に連動することがわかります。
動きとして84フレームまではグリッパが閉じていて85フレーム目からグリッパが開き始めているので、今度は85フレームから親の影響を受けないようにします。
そのために84フレーム目を選択した状態で、「Influence」の値が1であることを確認して「iキー」でキーフレームを登録します。
また親の影響を受けて移動しているので3D View画面上で「iキー」を押して位置や回転などの情報もキーフレームとして登録します。
これで61フレーム目から84フレーム目までは親の影響を受ける設定になりました。
次に85フレーム目からは親の影響を受けないようにしないので、85フレーム目を選択した状態で「Influence」の値を0にして「iキー」でキーフレームを登録します。
ただしこの状態だと親の影響を受ける前の位置になってしまうので、「Torus」の位置を調節してから「Torus」の位置情報などを「iキー」でキーフレームとして登録します。
これで85フレーム目以降は親の影響を受けないで移動した先の座標に置かれることになります。
この状態でアニメーションとして再生すると以下のように「Torusを掴んで移動させる」という動きになります。
以上がオブジェクトを掴む動作を作成する方法です。同様に剛体シミュレーションにおいても「あるところまでは物理演算、あるところではオブジェクトの動きに従う」みたいな使い分けも設定できます。
人型にすればアイテムを持つというようなものにも応用できると思います。
・参考資料
www.youtube.com