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

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

【Blender】ボーンを使わないでアニメーションを作成する

rikoubou.hatenablog.com

 前回ロボットアームっぽいモデルをBlenderに取り込みました。このモデルを一体化してボーンを設定して…という風にすれば動かすことはできますが、伸び縮みしたり変形したりする部分が出てきます。

 今回は「形が変わらずに動かす」ためにボーンを使用しない方法でアニメーションを作成していきます。今回はロボットアームという性質上、とある部分を軸として回転する方法を固定させるという方法で設定していきます。
 基本的には親子関係+3D Cursorの位置固定+軸の回転方向固定を繰り返して設定するだけです。


1:親と子となるオブジェクトを決め、どう動かすかを決める
 取り込んだロボットアームのモデルの土台となる部分を親(赤枠部分)、そこから伸びているパーツを子(緑枠部分)とします。
f:id:rikoubou:20180402134838p:plain

 設計上親の土台部分に対して、子のパーツは土台の中心を軸として回転する動き以外は行えないので、以下のような動きで拘束されるように設定すればよいということになります。
f:id:rikoubou:20180402135339p:plain


2:子の回転軸の中心となる場所にカーソルを持ってくる
 1でどう動かすかを決めたので、その部分にカーソルを持ってきます。

 今回はちょうど原点が子の回転軸の中心になるので、3D Viewの3D Cursorの値を全て0にして原点に持ってきます。
f:id:rikoubou:20180402140047p:plain

 十字のカーソルが原点に移動させたら、左側にある「Tool」→「Set Origin」→「Origin to 3D Cursor」を選択して、座標のカーソルを十字のカーソルに合わせます。
f:id:rikoubou:20180402140756p:plain

 これで座標のカーソルを子の回転軸の中心に持ってくることができました。
f:id:rikoubou:20180402140841p:plain


3:親子関係を作成し、回転軸を固定させる
 子となるオブジェクトを右クリックした状態で「Shit+右クリック」で親のオブジェクトを選択します。必ず子となるオブジェクトを先に選択しておいてください。
f:id:rikoubou:20180402141249p:plain

 子と親が選択された状態で「Ctrl+Pキー」を押して「Object」を選択します。
f:id:rikoubou:20180402141606p:plain

 すると右側のところで子のオブジェクトが親のオブジェクトの下へと移動します。これで親子関係が設定できました。
f:id:rikoubou:20180402141721p:plain

 親子関係を設定したので次は子のオブジェクトの移動方向などを制限していきます。

 子オブジェクトを右クリックで選択した状態で「Objectアイコン」をクリックし「Transform Locks」の項目を開きます。
f:id:rikoubou:20180402142124p:plain

 この「Transform Locks」でオブジェクトの移動や回転などの制限を行うことができます。

 今回はZ軸に対する回転しか行わないので、以下のように設定します。
f:id:rikoubou:20180402142517p:plain

 ちゃんと拘束されているかを確認する場合は、オブジェクトを選択した状態で「Rキー」を押すと回転させることができます。
f:id:rikoubou:20180402142652g:plain


4:親オブジェクトを移動させて原点が次の回転軸の中心になる位置まで持ってくる
 親子関係が設定できているので、親のオブジェクトを移動させると子のオブジェクトも移動します。
f:id:rikoubou:20180402142952g:plain

 次の回転の中心となる部分が原点になるように調節します。
f:id:rikoubou:20180402143224p:plain
f:id:rikoubou:20180402143329p:plain


5:次の子となるオブジェクトを移動させて親子関係を作成する
 次の子となるパーツの回転軸の中心が原点と合う位置まで移動させます。
f:id:rikoubou:20180402143631p:plain

「Origin to 3D Cursor」を行って座標のカーソルも原点に合わせます。
f:id:rikoubou:20180402143757p:plain

 そして新たな親子関係を作成します。
f:id:rikoubou:20180402143845p:plain

 同じように「Transform Locks」でオブジェクトの移動や回転を拘束させます。
f:id:rikoubou:20180402144002p:plain


6:1〜5を繰り返す
 1〜5の手順を繰り返して各オブジェクトの親子関係を構築し、移動や回転の範囲を拘束させていきます。

 今回全てのオブジェクトについて行うとこのようになります。
f:id:rikoubou:20180402145350g:plain


7:グループ化を行う
 親子関係はできましたが、今のままだとオブジェクト同士は親子までの関係しか見れていません。
 ロボットアーム全体で一つという塊にしたいが、一つのオブジェクトにはしたくないという場合はグループ化を行います。

 ロボットアームの全てのオブジェクトを「Shift+右クリック」で選択します。
f:id:rikoubou:20180402150100p:plain

 この状態で「Ctrl+Gキー」でグループ化します。グループになるとオブジェクトが緑枠になります。グループ名が左側に表示されるので、任意の名前に変更します。
f:id:rikoubou:20180402150247p:plain

 これでロボットアーム全体を一つのグループとすることができました。


8:アニメーションを作成する
 基本的にはボーンでアニメーションを作成した時と同様です。違うのは「Object Mode」で各部位を任意の位置まで持ってきて「iキー」でキーフレーム登録をしていくだけです。

 「Dope Sheet」に切り替えたら、まず初期位置として現在の状態をキーフレームとして登録します。

「Shift+Gキー」→「Group」を選択してロボットアーム全体を選択した状態にします。
f:id:rikoubou:20180402150759p:plain
f:id:rikoubou:20180402150843p:plain

 この状態で「iキー」を押してキーフレームとして登録します。
f:id:rikoubou:20180402151011p:plain
f:id:rikoubou:20180402151101p:plain

 あとは同じようにして各パーツを移動させた後「Shift+G」→「Group」を選択して「iキー」でキーフレームを登録というのを繰り返します。
f:id:rikoubou:20180402152239p:plain

 そして今回作成したアニメーションは以下のようになります。
f:id:rikoubou:20180402152546g:plain


 以上がボーンを使わずに作成したアニメーション作成方法になります。
 生物ではなく、工業製品などをBlender上で再現するにはボーンではなくこっちの方法が合っていると思います。

 さらに物理演算などを組み合わせれば色々なことができるようになると思うので、楽しいですね。

おまけ:キーフレームの削除方法
 削除したいフレームまで移動させ、キーフレームに登録しているオブジェクトを選択した状態で「Alt+iキー」を押すとキーフレームを削除できます。

・参考資料