2020年11月2日月曜日

pickWalk 使ってますか?

 pickWalk と聞いてピンと来ない人も居るかもしれませんが、mayaのDAG階層は「矢印キー」で選択を変更することができるようになっています。

 プレビューウィンドウだけで作業が完結するようなモデラーさんには馴染みはないかもしれませんが、アウトライナを使うような古いアニメーターさんなんかは知っている人が居るかもしれません。


 簡単に説明すると、

  • 上下の矢印キーで親子方向の選択変更。
  • 左右の矢印キーで兄弟方向の選択変更。

 が行われます。


 ノード選択のハイライトが移動していると思いますが、この間、マウスクリックはしていません。
 ただ、最近のアニメーターさん、ジョイントを直接アニメーションさせずに、コントロールリグを使ってモーション付けをしている場合が多いんじゃないかと思います。
 そういった環境では、この pickWalkという機能、あまり有効に働かないんですよねぇ。

 たとえば、ロケータだけの階層で pickWalkを行うと・・・


 親方向への移動やシブリング方向への移動はスムーズに行くのですが、子階層への移動でつまづきます。

 察しの良い人ならもう分かると思いますが、pickWalkさせたとき、シェイプノードを選択してしまっているため子階層の選択がスムーズに行かなくなっています。

 実際、アウトライナで Display > Shapes をオンにすると、


 こんな感じで、トランスフォームノードの下にロケータシェイプが隠されています。

 mayaでは、ほとんどのオブジェクトで「トランスフォームノード」と「シェイプノード」が1組となって構成されています。
 ジョイントの場合は、ジョイントノードだけでオブジェクトを構成しているのでシェイプノードがありません。だから、pickWalkが上手く機能してくれるわけです。


 ま、普通ならココで終わってしまう場合が多いのですが、折角なので、もう少し踏み込んで、解決策みたいなのを考えてみます。

 pickWalkで子方向へ移動させると、子のリストの中から一番最初のノードを選択の対象にしています。という事は、子のリストの最初がトランスフォームノードになっていれば、もっとスムーズに移行することが出来るはずです。

 アウトライナ上で階層の順番を変えるには、MMB(Middle Mouse Button)プレスでノードの順番を変更できます。

 が、シェイプノードではソレが出来ません。

 同一トランスフォームノード下で操作されるとは保証できないので、フールプルーフな良い設計だと思います。


 そして、ここからが裏ワザ部分。
 reorderコマンドというのをこんな風に使用します。

reorder -back "lctLeftForeArmShape";

 全てのシェイプノードを対象に再帰で行えば、一瞬でこんな感じに変更できます。


 中々お目にかかれない奇妙な階層構造です。
 けれども、一般人が見ている Display > Shapes がオフの場合、なんの変哲もない構造となっています。


 これで pickWalkを操作すると・・・


 これくらいストレスなく操作できれば pickWalkを使う気になるかな。

 前回のジョイントを先頭に持っていくというのも、

{
    string $jnt =`joint`;
    reorder -front $jnt;
    
}

みたいにすれば、スクリプトだけで全てを完結できるという按配です。



0 件のコメント:

コメントを投稿