2019/12/09
リグでDuplicateSpecialを活用する
こんにちは、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は、リグ作業の効率化にも効果的です。
使い方次第ですが、是非、色々と試してみてください。
ではまた!
※免責事項※
本記事内で公開している全ての情報について、その完全性、正確性、適用性、有用性等いかなる保証も行っておりません。
これらの情報のご利用により、何らかの不都合や損害が発生したとしても、当社は何らの責任を負うものではありません。
自己責任でご使用ください。