CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Blender3.0】コンストレイントでアニメーション作業を効率化!!
こんにちは!
皆さんはBlenderでアニメーションを作っていますか?
たいてい、モデルには多くのボーンがあり、それを一つ一つ制御するのは非常に大変です。
そのため、リギングという工程で、アニメーションがつけやすくなる設定を行う必要があります。
今回は、その中でも特に重要な、他のボーンの動きに応じてボーンを動かす〔コンストレイント〕について紹介します!
コンストレイントとは
コンストレイントとは、簡単に言うと「あるオブジェクト(ボーン)の動きに影響を受けて自分も動く」動作です。
代表的なものでは、以下のような仕組みなどを作ることが出来ます。
- 常にカメラについてくるオブジェクト
- 「かかとを動かしたら足全体が動く」IKコンストレイント
- 手のひら制御用ボーン一つでグー⇔パーを制御
- 注視ボーンを用意し、眼球の動きを制御
このような仕組みを使って、大変なポーズ付けやアニメーションの作業を効率化することができます!
Blenderには、以下のように様々なコンストレイントが用意されており、必要に応じて適切なコンストレイントを選択する必要があります。
今回は、この中でもよく使ういくつかのコンストレイントについて説明します。
オブジェクトコンストレイント
オブジェクトコンストレイントは、プロパティパネルの〔コンストレイントプロパティタブ〕から追加します。
別なオブジェクトの影響を受けて、主にオブジェクトの位置や方向、拡大率などを動かすことが出来るようになります。
コンストレイントそれぞれの使用方法はボーンコンストレイントのものと同じなので、次節以降で紹介いたします!
ボーンコンストレイント
次に、ボーンやオブジェクトの動きに追従してボーンの動きを制御するボーンコンストレイントについて紹介します。
ボーンコンストレイントは、プロパティパネルの〔ボーンコンストレイントプロパティタブ〕から追加します。
チャイルドコンストレイント
チャイルドコンストレイントでは他のボーン(オブジェクト)の動きと同じように、対称のボーンを動かします。
ペアレント設定と同じような挙動ですが、パラメータから追従する要素を細かく選択することが出来るという違いがあります。
追従して動かしたいボーンに〔チャイルド〕コンストレイントを追加します。
次に、〔ターゲット〕に追従したいオブジェクトやボーンを設定します。
次に、位置、回転、スケールそれぞれのx,y,z方向それぞれについて、ターゲットボーンに追従するかしないかを設定することが出来ます。
下の動画は、右側のボーンに、左側のボーンの回転のみを追従させた例です。
トランスフォーム変換コンストレイント
〔トランスフォーム変換コンストレイント〕では、チャイルドコンストレイントと同様に他のオブジェクト(ボーン)の動きを目的のボーンに影響させることが出来ます。
さらに、移動量→回転量 や、移動量→拡大値 のように変換の対象や、その動きの範囲を決めることが出来ます。
動作としてはドライバーにも似ていますが、より簡単な設定が可能です!
例として、下の動画のようにあるボーンのZ方向の移動量に応じて、コンストレイントを適用したボーンをY回転させる方法を紹介します。
向かって右側のボーンに追加したコンストレイントは以下のように設定しました。
より具体的には、ターゲットボーンがZ座標0~2へ変化するのに合わせて、コンストレイントを適用したボーンのY回転を0度~90度に変化させます。
まず、動作のもととなるボーン(今回は向かって左側のボーン)を〔ターゲット〕として設定します。
次に、ターゲットとオーナーそれぞれのトランスフォーム空間を設定します。
今回はポーズ空間を用いましたが、状況に応じてグローバル空間やローカル空間を基準にすることが出来ます。
さらに、マッピング元を指定します。
これは、ターゲットとして追加したボーンの動作を定義します。
今回は、Z軸方向の移動量をもとにしたいので、〔位置〕を選択し、最小値と最大値を設定します。
他の方向の移動量は今回は考慮しないので、すべて0に設定してあります。
最後に、マップ先タブでコンストレイントを適用したボーンの動きを定義します。
今回はY回転を制御したいので、〔ソースのY軸〕を〔Z〕に設定し、最大値と最小値を設定します。
マッピング元と同様に、他の方向については最小値、最大値を0に設定することで影響を受けません。
これで、ターゲットボーンのZ軸方向の移動量に応じて、ボーンの回転を制御することが出来ました!
これを応用することで、こちらの動画のような、手のひらの開閉ボーンなどを作ることが出来ます!
動画では、見やすさのために中指の関連ボーンのみを表示しています。
構造は以下のようになっており、全てトランスフォーム変換モディファイアによって表現されています。
実際はこのほかに、横方向の指の開きを制御するボーンも用意しています!
IKコンストレイント
IKコンストレイントでは、序盤でも紹介したGIF画像のように、足先のボーンの動きに合わせて足全体を動かすような動作が可能です。
こちらの記事で詳しく動作が説明されているので、是非参照してください!
コンストレイントのコピー&ペースト
最後に、ボーンコンストレイントを複製する方法について紹介します!
特に手のひらなどは、すべてのボーンに同じコンストレイントを設定することが多いですよね!
Blenderの機能を使う
動画では、右の二つのボーンに、その隣のボーンのコンストレイントをコピーしています。
手順は以下の通りです。
- 新しくコンストレイントをコピーしたいオブジェクトをすべて選択する
- さらに、Shiftを押しながらコピーしたいコンストレイントを持ったボーンを選択する
- 〔ポーズ〕→〔コンストレイント〕→〔選択したボーンにコンストレイントをコピー〕
- アニメーションを行う
アドオンを使用する方法
先ほどの方法では、全てのコンストレイントを一括でコピーしてしまうため、場合によっては不便です。
ですので、私は〔Copy Attributes Menu〕というアドオンを使っています!
そもそもこのアドオンが非常に強力で使いどころが多いのと、コピーするコンストレイントを指定できる機能もあるため、非常におすすめです。
このアドオンについては、こちらの記事でより詳しく解説されています。
- 新しくコンストレイントをコピーしたいオブジェクトをすべて選択する。
- さらに、Shiftを押しながらコピーしたいコンストレイントを持ったボーンを選択します。
- Ctrl+cを押し、アドオン:Copy Attributes Menuのメニューを起動
- 〔Copy Selected Constraints〕を選択
- 表示されたポップアップから、コピーしたいコンストレイントを選択し、〔OK〕を押す
指定したコンストレイントのみをボーンにコピーすることが出来ました!
コンストレイントをベイク
コンストレイントは、基本的にBlenderの中だけでの機能です。
そのため、他のアプリケーションでコンストレイントを使ったアニメーションを行いたい場合は、一度アニメーションをベイクする必要があります。
これによって、コンストレイントによる動きが、通常のアニメーションとして記録されます。
今回は、このようなアニメーションを用意しました。
左側の上下するボーンにはキーフレームが打ってありますが、右側の緑色のボーンはコンストレイントによって動作しているため、キーフレームは打たれていません。
以下の手順によってアニメーションをベイクします。
- ポーズモードで、〔ポーズ〕→〔アニメーション〕→〔アクションをベイク〕を選択
- 〔ビジュアルキーイング〕〔コンストレイントをクリア〕のみにチェックを入れる。(〔選択ボーンのみ〕はチェックを外す。)
- 〔OK〕を選択
これによって、動画のように右側のボーンのすべてのフレームにキーフレームが打たれ、コンストレイントが削除されました。
このように作成したアニメーションは、他の3Dソフトウェアやゲームエンジンにエクスポートする際も安心です!
Unityとの連携
前章でも述べた通り、コンストレイントはBlender内部のみでの機能です。
コンストレイントをそのままUnityにもっていくことはできません。
そのため、以下のいずれかの方法などを用いてアニメーションをエクスポートする必要があります。
- 前章の内容を用いてコンストレイントをアニメーションにベイクする
- Unityで新たにコンストレイントを設定する
- FBXエクスポートの設定からアニメーションをベイクする
3つ目のFBXエクスポートの設定を使う方法では、あらかじめアニメーションをベイクしなくても、エクスポートと同時に行うことが出来ます。
〔ファイル〕→〔エクスポート〕→〔FBX〕から表示されるファイルビューウィンドウで〔アニメーションをベイク〕にチェックを入れます。
まとめ
今回は、主にボーンコンストレイントに注目して使い方を紹介しました!
コンストレイントを使用することで、リギングの表現の幅が広がり、確実にアニメーションの質も向上します。
是非自分なりの使いやすいリグを組むために、コンストレイントを活用してみて下さい!