3DCGbook

映像プロダクションに所属しています。主に毎日のアウトプットを配信していこうと思います。

【Maya Tips】*、?、#で作業効率アップ!

Mayaで*、?等の記号はよく使いますでしょうか?
これらはノードの検索とかで非常によく使えます。
命名規則をしっかりしていればこれだけでなんとかなるものもたくさんあります。

これらは任意の文字列で検索したい時に使います。
正規表現のライト版?みたいな感じでMayaでは使えます。

* と ? の使い方は以下の画像で説明します。
f:id:blendcomp:20151117111054j:plain

* の使い方

これは有名ですね。
長さ0文字以上の任意の文字列にマッチします。
上記の例で*(アスタリスク)を使って選択してみましょう。

import maya.cmds as cmds
# "pSphere"までは固定、それ以降は任意の文字列にマッチ
cmds.select('pSphere*') #Shapeも含めて、全て選択されます。

# "pSphere2"までは固定、それ以降は任意の文字列にマッチ
cmds.select('pSphere2*')#pSphere2A,pSphere2AShape,pSphere2B,pSphere2BShape が選択されます。

# pSphre + 任意文字列 + A にマッチ
cmds.select('pSphere*A')#pSphere1A,pSphere1AShape,pSphere2A,pSphere2AShape が選択されます。

選択結果からお気づきだとは思いますが、これにはデメリットが存在します。
それは末尾に*を使った場合、Shapeも同時に選択されてしまいます。

これを回避する為に?を利用します。

?の使い方

こちらは任意の一文字にマッチします。

import maya.cmds as cmds
# "pSphere"までは固定、それ以降2文字をマッチ。
cmds.select('pSphere??')#pSphere1A,pSphere2A,pSphere1B,pSphere2Bを選択

# "pSphere2"までは固定、それ以降1文字をマッチ。
cmds.select('pSphere2?')#pSphere2A,pSphere2Bを選択

# pSphre + 任意の1文字 + A にマッチ
cmds.select('pSphere?A')#pSphere1A,pSphere2Aを選択

命名規則がしっかりしていれば非常にコントローラの選択が楽になります。
例えば、
・L_hairA_joint
・L_hairB_joint
・L_hairEnd_joint
・R_hairA_joint
・R_hairB_joint
・R_hairEnd_joint
というような規則があった場合に、
「Endがつくものは選択したくない!」
「Rだけ選択したいなぁ…」
とかの要求を簡単に、ココ↓から実現できます。
f:id:blendcomp:20151117114204j:plain

# の使い方

これはワイルドカードとは少し違うので少し違いますが…。
シーンに以下のノードが存在するとします。
f:id:blendcomp:20151117112727j:plain

以下のコマンドを使ってTransformノードを作るとどうなるでしょう?

import maya.cmds as cmds
cmds.createNode('transform',n='rivetSpace_#')

結果は以下になります。
f:id:blendcomp:20151117112908j:plain

要するに、
"rivetSpace_"までを検索しナンバリングして作成します。

末尾にナンバリングするような命名規則で作業している場合に
#を使うことは非常に便利ではないでしょうか?

細かいところで効率化を図っていきましょう~。
それでは。

もう一歩進んで、正規表現を勉強したい方はこちら。
非常にわかりやすいです。www.dfx.co.jp

さらに研究したい方は以下を購入して下さい。(笑)



詳説 正規表現 第3版
詳説 正規表現 第3版
posted with amazlet at 15.11.17
Jeffrey E.F. Friedl
オライリージャパン
売り上げランキング: 122,809