リグでDuplicateSpecialを活用する

2019/12/09

こんにちは、BACKBONEのゆはらです。

日々の作業で「duplicate」はよく使用する機能の一つですよね。
ctrl+dは、毎日必ず使用するショートカットの一つではないでしょうか。
今回はリグにも役立つ、duplicateの使用事例についてご紹介します。

 


1.Duplicate input graphメソッドで複製する

follicleを使用してnurbsSurfaceに複数の骨を追従させる、
というリグを左右に2つ作成する場合を想定してみます。

nurbsSurface上の骨の位置にfollicleを作成し、follicleの子にjointを配置して、、、、、
という具合に、左側のリグを作成しました。
※トップノード(ribbon_setupGp_L、ribbon_srf_L、ribbon_follicleGp_L)のピボットは原点に設定しています。

 

これと同じものが右側にもほしい時、手作業で同様に設定するのは面倒です。
リグを丸ごと複製して、右側に再現したいですよね。

ただ、リグがまとまっているトップノード(上図のribbon_setupGp_L)を選択して複製(ctrl+d)しても
ノードがバラバラに複製され、各ノードのコネクションは再現されません。
各ノードに対するコネクションや、設定情報を維持したまま複製するには、
Duplicate SpecialのDuplicate input graphメソッドを使用します。

 

Edit > Duplicate Special
オプションメニューのDuplicate input graphにチェックを入れます。

グルーピングされているトップノードを選択して実行すると、同じ場所に同じものが複製されます。
pythonではこんな感じでしょうか。
複製ついでにリネームもできますね。
LをRに変えておきましょう。

 

これを右側に反転すれば、リグの反転は完了ですね。
ribbon_srf_RのscaleXに-1を設定して右側に反転します。
反転後、ribbon_srf_RにfreezeTransformationsを実行します。
サーフェイスのノーマルが反転しているので、ReverseSurfaceDirectionを実行します。

 

<補足>
コネクションを上流までさかのぼって複製するため、リグを構成している要素ごとにグループ化しておくなど、
分かりやすく階層化しておくことをお勧めします。

今回の事例の場合、nurbsSurfaceが階層外の骨でバインドされていると、階層外の骨まで複製されます。

 


2.Duplicate input connectionsメソッドで複製する

こちらの手法は、フェイシャルリグなど、複雑なリグを検証しながら作成する場合によく使用します。
例えば、同じインプットコネクションを持つmultMatrixを作成(複製)したい場合、手作業でmatrixを繋ぐのは面倒です。

 

同じ入力接続を維持したまま複製するにはDuplicate SpecialのDuplicate input connectionsメソッドを使用します。
Duplicate input connectionsメソッドを使用すると、ノードの入力接続を維持した状態で新しいノードが複製されます。

 

Edit > Duplicate Special
オプションメニューのDuplicate input connectionsにチェックを入れます。

pythonはこちら。


例えば、test_decomposeMatrix_Lを選択して実行すると、test_multMatrix_Lからの入力接続を維持した状態で
test_decomposeMatrix_Lが複製(test_decomposeMatrix_L1)されます。

 

test_multMatrix_Lを選択して実行すると、test_ctrl_Lとtest_ctrlSpace_Lからの入力接続を維持した状態で
test_multMatrix_Lが複製(test_multMatrix_L1)されます。

 

test_multMatrix_Lとtest_decomposeMatrix_Lの入力接続を1セットで複製したい場合は
test_multMatrix_L、test_decomposeMatrix_Lの順に選択して実行します。

 

ここで注意が必要です。
test_decomposeMatrix_L、test_multMatrix_Lの順で選択して実行すると、test_decomposeMatrix_Lの入力接続が
test_multMatrix_Lのため、複製されたtest_decomposeMatrix_L1の入力接続はtest_multMatrix_Lからになります。
また、test_multMatrix_Lの入力接続はtest_ctrl_Lとtest_ctrlSpace_Lのため、複製されたtest_multMatrix_L1の入力接続は
test_ctrl_Lとtest_ctrlSpace_Lからになります。

 

<補足>
Duplicate input connectionsメソッドでは、multMatrixやdecomposeMatrixなどのDGノードと、
トランスフォームノードやジョイントなどの
DAGノードを一緒に選択して複製した場合、
DAGノードが優先されDAGノードの入力接続のみが再現されます。
DGノードは複製も、入力接続の再現もされないようです。

 


まとめ

Duplicate Specialは、リグ作業の効率化にも効果的です。
使い方次第ですが、是非、色々と試してみてください。

ではまた!

 

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