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

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

【Blender】オブジェクトを回転連動させる方法

 今日も今日とてBlenderに関する内容です。以前の記事で以下のようにロボットアームもどきのモデルを作成し、アニメーションをさせました。

rikoubou.hatenablog.com
rikoubou.hatenablog.com

 ロボットアームの関節というか、回転軸の数だけ一つ一つ角度を指定してアニメーションさせるというかなり面倒なことをやっていたのですが今回は「1つのオブジェクトを動かすとそれに連動して別のオブジェクトも動く」というオブジェクトの連動させる設定方法の紹介です。


1:以前作成したロボットアームのモデルを読み込む
 題材として使うのはなんでもよいのですが、以前作成したロボットアームを使いまわします。

【Blender】別のBlenderファイルを読み込む方法 - ソースに絡まるエスカルゴ
 ↑の記事にあるように「Append」からモデルを読み込みます。
f:id:rikoubou:20180413170337p:plain

 このままではグリッパー部分は片方ずつしか動かず、連動はしません。
f:id:rikoubou:20180413170637g:plain

 これだとアニメーションづけが面倒なのと、左右で同じだけ開かせるということが難しいので連動できるように設定していきます。


2:連動させたいオブジェクトに「Copy Rotation」を追加する
 今回は以下のように正面右のグリッパを動かすと左側のグリッパが連動するようにします。
f:id:rikoubou:20180413171119p:plain

 最初に連動して欲しいオブジェクトである左側のグリッパを選択し、「Constraintアイコン」から「Add Object Constraint」を選び「Copy Rotation」を追加します。
f:id:rikoubou:20180413171243p:plain

「Target」のアイコンの所をクリックし、連動元のオブジェクト(ここでは07_tsumeL)を選択します。
f:id:rikoubou:20180413171505p:plain

 グリッパ部分はZ軸方向の回転しか行わないので、X、Yのチェックを外します。また爪は左右で逆方向に連動して欲しいのでZの「Invert」にチェックを入れます。
f:id:rikoubou:20180413171900p:plain

 次に「Space」のプルダウンを両方とも「Local Space」に変更します。
f:id:rikoubou:20180413172021p:plain

 これで連動の設定は完了です。


3:連動していることを確認する
 2の手順で設定を終えたら実際に連動するかを試してみます。

 以下のように正面右側のグリッパを選択して回転させると、もう片側の方も連動しました。また正面左側を選択して移動させようとしても、連動元が動いていないので動かすことができません。
f:id:rikoubou:20180413172353g:plain

また親オブジェクトを動かして角度や位置がずれても「Local Space」に設定しているため、破綻することなく連動します。
f:id:rikoubou:20180413172800g:plain

 ちなみに両方とも「World Space」に設定した場合は、絶対座標として計算されるらしく、親オブジェクトが移動するとおかしな動きになります。なので基本的には両方とも「Local Space」に設定しておく方が良いと思います。
f:id:rikoubou:20180413173022g:plain


以上がオブジェクトを回転連動させる方法です。
「Add Object Constraint」で出てくる中には位置やサイズの連動もできる項目があったので、同じような方法で位置やサイズも連動できると思います。


・参考資料