ドリブンキーを反転する

2019/12/16

こんにちは、株式会社アカツキの3Dデザイナーの堀内と申します。
ご縁があり今年の2月から、BACKBONE様の『リガー育成プログラム』に出向という形で参加させて頂いております。
※2019年4月に書いていただいた記事になります。

 

私がまだ学生の時に「こんな面白い機能があるのか!!」と思った機能があります。
その機能とは・・・

set Driven Key !!!

あっちを動かしたらこっちが動く。
面白い機能ですね。
本日は、set Driven Keyの基本的な機能と、左右反転の効率化についてご紹介したいと思います。

 


◆set Driven Key

腕や足を曲げた時に、それに連動させて他のノードを動かしたい時があります。
そんな時に大変重宝する機能です。


Key > Set Driven Key > Set…

Driver
・制御する側のノードを選択してから[Load Driver]をクリックします。
・左側には登録したノード、右側にはChannelBoxに表示されているアニメーション可能なアトリビュートが表示されます。

◎Driven
・制御される側のノードを選択してから[Load Driven]をクリックします。
・左側には登録したノード、右側にはChannelBoxに表示されているアニメーション可能なアトリビュートが表示されます。

 

ドリブンキーを設定するには、DriverとDrivenに登録した任意のノードと
キーを設定したい任意のアトリビュートを選択してから[Key]をクリックします。
下図の様に補助骨の制御などでよく使用します。
 

 

とても便利な機能ですが、ドリブンキーを設定するにあたり、避けては通れない問題があります。
それは……

ドリブンキーの反転コピー!!!

Mayaには、ジョイントをミラーコピーするMirror Jointや、スキンウェイトをミラーコピーするMirror Skin Weightsが
標準機能として搭載されていますが、ボタン1つでドリブンキーのミラーを行う機能は搭載されていません。(MAYA2018時点)
手作業での反転はとてもとても面倒です!

ではどうするのか。。。

ドリブンキーを設定すると、ドライバーのノードとドリブンのノードとの間にアニメーションカーブが作成されます。
このアニメーションカーブを工夫して使用すると、簡単に反転処理が行えます!

 


ドリブンキーを反転する

ドリブンキーの反転には色々と方法があるようですが、今回は、出向中に教えていただいた、
Duplicate SpecialのDuplicate input connectionsメソッドを使用した反転方法についてご紹介します。

下図の様に、「上腕(upArm_jt_L)のRotateY軸とZ軸を回転すると、補助骨(upArm_ex_L)が動く」
といったドリブンキーを設定します。※右側の骨は、YZ平面に対して左右対称(Behavior)で作成しています。

作成されたドリブンキーコネクションはこちら。

 

これらのコネクションをDuplicate input connectionsメソッドで複製して、右側に使用します。
animCurveノードをDuplicate input connectionsメソッドで複製してしまえば、
blendWeightedなどのコネクションも再現された状態で複製できます。

簡単!便利!

 

Duplicate input connectionsメソッドでの複製は選択順が重要です!
下図の順番で選択します。

 

Duplicate input connectionsメソッドで複製します。

 

複製されたanimCurveノードの入力接続を、右側のドライバーのupArm_jt_Rに、
出力接続を右側の補助骨のupArm_ex_Rに変更します。

 

骨がBehaviorで作成されているので、移動のみ左右でチグハグの挙動になります。

 

Graph EditorのScale Key機能を使用して、移動に関するアニメーションカーブを反転します。
移動に関するアニメーションカーブを選択します。

 

Graph Editor > Edit > Scale > Scale Keys Optionsで、Value Scale/pivotを-1:0に設定して実行します。
実行前

実行後

 

これでドリブンキーの反転コピーが簡単に行えました!

 


まとめ

ドリブンキーの反転は、設定箇所が増えれば増えるほど、11つこのように処理していくのは辛いものがあります。
こういったものはツール化したいですよね?
欲しいツールが無い場合、皆さんはどうしていますか?
私は手動でどうにかする派でした。。。
スクリプトの内部処理について難しい印象があってスクリプトは苦手分野でしたが、
知識と処理の方法を身に着けることによって習得していくことは可能だと、今なら思うことが出来ます。
今後は、
今回学んだことをツール化できるよう、励んでいきたいと思います。
ではまた!

 

※免責事項※
本記事内で公開している全ての情報について、その完全性、正確性、適用性、有用性等いかなる保証も行っておりません。
これらの情報のご利用により、何らかの不都合や損害が発生したとしても、当社は何らの責任を負うものではありません。
自己責任でご使用ください。