2017年7月24日月曜日

ノードをレイヤーに登録させない

表示/非表示を簡単に切り替えたりするのに便利なレイヤーですが、モーションなどを外注に出したりした場合、まれにコチラで作成したリグをレイヤーに登録しやがる不届き者が居たりします。
コレをやられると、リグのcurveShapeに設定した overrideColor がレイヤーの色で上書きされてしまい復元できなくなります。要するにリグを破壊されてしまうと言うわけですね。

多くの人は、階層をレイヤーへ登録する場合、なにげなく Select Hierarchy でオブジェクトを選択して、なんとなくレイヤーへ Add Selected Objects で追加していると思います。


意外と忘れられがちですが、こういう風に選択すると shapeノードも選択していることになります。

nodeEditorで確認すると・・・


レイヤーから shapeノードへ素敵なサムシングが接続されています。
Relationsip Editorでも確認できますね。

こうしない為には、Select Hierarchyの後に、

select -d (`ls -sl -s`);

をコマンドラインで実行させる必要があるのです。

面倒です。

発注書とかでネガティブリストを作っても、まぁ守られることはありません。
で、防衛の為にレイヤーへノードを登録させないように細工をしておく必要があるのです。

要は接続できないようにアトリビュートをロックしておけば良い訳です。
どのアトリビュートに接続されているかを確認。


drowOverrideと云うアトリビュートらしい。
いったん全てのオブジェクトをレイヤーから外して、アトリビュートをロックするためのコマンド

setAttr -lock on "locatorShape1.drawOverride";

を実行します。
すると、先ほどの手順でレイヤーへ追加しようとしても

// Error: line 0: Connection not made: 'layer1.drawInfo' -> 'locatorShape.drawOverride'.  Destination is locked. // 

と、エラーでレイヤーへの追加処理が止まりました。
最低でも shapeノード、できればリグのノードの全部のアトリビュートをロックしておけば、レイヤーへ登録しようとしている輩の心をへし折る事ができるでしょう。

こういう事をしておくと、たまに闘志を燃やす変態さんも居たりしますけどね。

ここに・・・。

0 件のコメント:

コメントを投稿