スクリーンショット_2019-05-05_00

[2.8]ふらつく・倒れる缶のリグ

「ジュースの缶を傾けて手を離したらどうなるか」観察したことはありますか?そしてそれを3Dのアニメーションでやろうとしたことはありますか?

↓こういうやつ

おそらく「缶オブジェクトを動かせばええんちゃうの?」と考えられる方が多いと思います。

複雑な動きを簡単に

ただ、これを缶オブジェクトの移動や回転のみのキーアニメーションでやろうとすると大変です。左側に傾いているときは左下隅を回転の軸としなければならないですし、右側に傾いているときは右下隅、という風に。オブジェクト原点は回転中心になりますが、一つのオブジェクトに一つの原点なので、オブジェクトのみを動かす場合には、「回転+移動」のキーをたくさん打たないといけないでしょう。

「キーをたくさん打つ」ということは「後の修正が大変」ということなので、これをコントロールして「回転だけでコントロールできないかな」という考えに至ります。

コントローラーを動かすことで複雑な動きを制御する、そういった仕組みを「リグ」と言います。

リグのチュートリアルを探してみるとフットリグが多いですね、そういえば。

「缶リグ」を組んでみよう

ということで「缶リグ」を組んでみましょう。

オブジェクトの追加

先にオブジェクトを追加しておきましょう。

・ Cylinder を追加
・ Armature を追加 (Propettiesエディタ>Object Data> Vierport Display> In front にチェックを入れる)

次にArmatureを選択した状態でエディットモードに入り、一本あるボーンをX軸上に3つ複製([Shift]+[D])して、全てのボーンの名前を変えます。このとき、Propertiesエディタ>Object Data> Vierport Display>Names と Axis にチェックを入れておきましょう。

次にボーンに親子関係をつけます。Rightの子がLeft、Leftの子がCan 。子ボーンを左クリックで選択、[Shift]+左クリック で親となるボーンを追加選択し、[Ctrl]+[P] > Keep Offset で。

親ボーンのテールから子ボーンのヘッドに関係を示す点線が表示されるはずなので、これを目安に親子の関係付けができているか確認できます。

コンストレイントの追加

ControllerボーンにLimit Rotationコンストレイントを追加します。Limit Xにチェック、Limit Yにチェック、 Convert に Localspace を指定。これで、グローバルY軸のみで回転するようになりました。

Controllerボーンの回転の値をRightボーンにコピーするためにRightボーンにCopy Rotstionコンストレイントを追加します。Target=Armature、Bone=Controller、スペースの変換の値に両方ともLocal Space を指定します。

ここで「缶が左側に傾くときは回転させない」という制限を与えます。Limit Rotation コンストレイントを追加します。Limit Z にチェック、 Min=-90、Max=0、Convert にLocal Space を指定します。

するとどうでしょう、Controllerボーンが左に倒れたとき、Rightボーンが傾きません。

Leftボーンも同様に、Copy Rotation、Limit Rotation を指定します。

ここまでできたら Controllerボーン を[R]キーで回転、左右に振って、ボーンの動きを確認します。確認が終わったらControllerボーンの回転値をクリアするために[Alt]+[R]を押します。

Controllerボーン、Leftボーン、Rightボーンを変形対象から除外します。それぞれのボーンを選択、 Propertiesエディタ>Bone>Deform のチェックを外します。

ボーンとメッシュオブジェクトの関連付け

3DビューのモードをObject Mode にして、Cylinder > Armature の順に選択します。[Ctrl]+[P] > With Automatic Weights をクリックします。

次にポーズモードにしてControllerボーンを選択して左右に回転させてみます。

手順としては以上です。お疲れ様でした。あとはアニメーションつけてあげるだけですね。

なお、手順では見た目と操作のためにControllerをX軸上に配置しています(冒頭のツイートではY軸上)が、ローカル軸回転がコントロールの要素ですので位置はあまり関係ありません。

リグが組めたら、Propertiesエディタ>Object Data> Vierport Display>Names と Axis のチェックを外しておきましょう。

終わりに

実際に缶を傾けてみるとわかるんですが、上下軸に対して回転の動き入りますよね。こう「左右にしか揺れない」というのは「リアルじゃない」というのがわかります。けれども動きに「対面に角がある感」を出せればかなり表現が変わってきます。

ということで、「Blenderで軽率にリグ作ってみよう」、っていうお話でした。

追記:1ボーンでロールリグを

こういうのを blenderartists.org で見つけました。


お読みいただきありがとうございます。サポートいただいた分はおやつのグレードアップに使おうかと思います。スキ、SNSにシェアもよろしくお願いします!