logo-roadto3dcg
ヘッダー画像

Road to 3DCG

Blender | ドライバーを利用して、シェイプキーをボーンで制御する

2015-11-28

まばたき用のシェイプキーをボーンで制御する方法。目を閉じた状態のシェイプキーを作って、ドライバーでボーンと関連付けをすると、ボーンを動かすことでシェイプキーの影響度を変えられるようになる。

プロパティエディタ→DataのShape Keys欄にて、目を開けたデフォルト顔の状態で右側の+ボタンを押し、「Basis」として登録。さらに+ボタンを押して新規シェイプキーを作成、「Key 1」という名前部分をクリックして変更。ここでは「eye-close」にした。「eye-close」を選択したままエディットモードに入り、メッシュを編集して目を閉じた状態にする。

シェイプキーの構成
シェイプキー「Basis」は目を開けたデフォルト顔
シェイプキー「eye-close」はエディットモードで目を閉じた顔に編集

(すでにキーフレームを打ってあるシェイプキーにドライバーを適用したい場合は、キーフレームを削除しておく。)

オブジェクトモードでの作業。 「eye-close」の右側にある数字0.000を右クリックして、表示されるメニューからAdd Driverを選択(目のアイコン上などでクリックすると別の操作になってしまうので注意)。

下のValueのスライダが紫色に変わる。ドライバーの制御下になったということで、この後は手動でスライダをいじらないようにする。

モデルのアーマチュアを選択してエディットモードに切り替え。Shift+Aでまぶたの制御用ボーンを追加して、プロパティエディタのボーンタブでわかりやすいボーン名をつけ、見やすいポジションに置いておく。ここでは「_eye-control」というボーン名にした。

まぶたの制御用ボーンを追加
ボーン名を「_eye-control」にした

オブジェクトモードで顔オブジェクトを選択してから、Graph Editerを開いてDriversモードにする。

  1. 左側のリストから「Value(eye-close)」を選択(表示されていない場合は、項目名の左にある三角マークをクリックしていきリストを展開)。
  2. Nキーで表示されるプロパティシェルフでDrivers > TypeをAveraged Valueにする。
  3. その下のvarをTransform Channel、コントローラーにするアーマチュア名とボーン名(_eye-control)を選択。ボーンをZ方向(上下)に動かすとシェイプキーの形状が反映されるようにしたいので、Type:Z Location、Space:Local Spaceに設定。
  4. このままではかなり大きくボーンを動かさないと反映されないので、動きを10倍にして伝えるよう対策する。設定のさらに下にあるModifiersで、Add Modifierボタンをクリックして表示されるメニューからGeneratorを選択。数式が書いてある欄を「y = 0.000 + -10.00 x」に設定。 単に10倍するだけでなくマイナスの数値にしておくと、ボーンを下方向へ移動させるほどシェイプキーの影響が大きくなるため、目を閉じる動作を直感的に操作しやすくなる。
  5. 設定をいじったときはUpdate Dependenciesボタンをクリックしてドライバの接続を更新する。これを忘れるとちゃんと動かない。

ポーズモードでコントロール用ボーンを選択。G→Zキーを押してから上下方向に動かすと連動してまぶたが開閉する。アニメーションさせるにはボーンのZ Locationにキーフレームを打てばいい。

シェイプキーにドライバーを追加 | Blender Snippet

上記ページを参考にしてボーンコンストレイントのLimit Locationで移動範囲制限をつけてみたが、Z軸マイナス方向への移動に対応させるため、Minimum Zを-10cmに、他の値を0にしておいた。ConvertはLocal Spaceを選択。

使用ソフトのバージョン: Blender 2.76 / Blender 2.76b