my funeral week

少しでも日々の生活に変化を。

MayaScripts_EasyNodeSearch:名前からノードを検索

こんにちは。
今回もMaya用のちょっとしたスクリプトの紹介になります。

EasyNodeSearch

任意の文字列からシーン上にあるノードを検索して一覧に表示するスクリプトを制作しました。

Mayaのアウトライナの上部にある検索ボックスあるじゃないですか。まぁ、あれでも充分問題なくノード検索は可能なんですけど・・・個人的にはイマイチ使いにくいと感じています。 特に検索結果のノードが深い階層下にある場合、いちいち階層を展開しないと目的のノードに辿り着けない点とか、ノードタイプのフィルタリングの項目がUI上にバラバラで配置されている点。 例によって聞きますが・・・コレを解決する方法を誰か知りませんか?

とにかく調べるの面倒なんで自分で欲しい機能をまとめた検索スクリプトをこさえました。


ダウンロード

以下のリンクからダウンロードできます。

www.dropbox.com

クリエイティブ・コモンズ・ライセンス


インストール

DLして解凍したフォルダ内の「ParentSwitcherフォルダ」を、以下の場所に配置してください。

C:\Users\"ユーザー名"\Documents\maya\scripts

で、実行するには以下の2行をシェルフ等に登録してお使いください。

import EasyNodeSearch
EasyNodeSearch.main()


使い方

上記のコードを実行すると下図のようなウィンドウが表示されます。

f:id:garysfirearms108:20210807173752j:plain

  • 検索ワード入力フィールド
    • 検索したい任意の文字列を入力してください。
    • 検索には 正規表現 の「.search()」を利用しているので、「メタ文字」が利用可能です。
      • 特定の文字列で始まるもののみとか、任意の文字列数を含む等々の条件指定が可能です。
  • 検索結果表示リスト
    • Searchボタンを押すと、下部のリストにヒットしたノードの一覧が表示されます。
    • 項目を選択するとシーン上でもノードを選択します。
    • 一応、ShiftやCtrlによるセレクションリストへの追加や除外も可能です。
  • 閉じるボタン
    • ウィンドウを閉じます。


また、以下のように各種オプションがあります。

オプション

f:id:garysfirearms108:20210807173826j:plain

  • Not Case-Sensitive
    • 検索ワードや対象範囲のノード名の大文字小文字を区別しなくなります。
  • DAG object only
    • 検索対象範囲をDAGノードに限定します。
  • Include shape nodes
    • 検索対象範囲にShapeノードを含めるようにします。


フィルター

f:id:garysfirearms108:20210807173924j:plain

  • Set node filter
    • 新たにノードフィルターを設定します。
    • 実行すると下図のようなダイアログが表示されます。
    • テキストフィールドに任意のノードタイプを入力してAcceptを押してください。
      • 例:transform、animCurve等
      • ノードタイプは Maya側で用意されたノードタイプに限られます
    • フィルタリングが有効な間はメインウィンドウ上部のラベルの色が緑色に変わります。
    • 既に設定されたノードフィルターを除去するには、テキストフィールドに空の状態でAcceptを押してください。

f:id:garysfirearms108:20210807173846j:plain


  • Show node type list
    • 下図のように利用可能なノードタイプのリストを表示します。
    • ちなみに項目をダブルクリックすると、その項目のノードタイプでフィルタリングできます。

f:id:garysfirearms108:20210807173937j:plain:h400



今回はこんな感じです。
久しぶりに正規表現モジュールを利用しようとしたら、何も使い方を覚えていなくて焦りました・・・。
こんな小規模なスクリプトでもそういう古い知識を復習するという点においては大いに役立ちました。

それでは、さようなら。