3DCGbook

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

【Maya Tips】お手軽なピッカーの作り方

リグのコントローラを選択しやすくする為に、
ピッカーというのを容易することがあります。

要はコントローラを選択しやすくする為のGUIです。

1.命名規則を作ります。

・選択されるオブジェクトが pSphere1 とします。
・pSphere1を選択するピッカーの名前をpSphere1_gui とします。
選択されるオブジェクト + "_gui" という命名規則に設定しました。

以下のような感じで…。
f:id:blendcomp:20151116135252j:plain

2.pSphere2_gui を映すようなカメラを作成します。

カメラのZ方向(ドリー)は固定しといた方がいいかと。
f:id:blendcomp:20151116135721j:plain

3.ScriptJobを作成します。

ScriptJobとはMayaが何かしらの動作を行った際にスクリプトを実行してくれる超便利機能です。
以下のようなスクリプトを登録しておきます。

impport maya.cmds as cmds
def guiSelectToObjSelect(*args):
    nodes = cmds.ls(sl=True)
    objs = [node.replace('_gui','') for node in nodes if '_gui' in node]
    if len(objs) is not 0:
        cmds.select(objs,r=True)

# Jobを消す為にIDは取っておきましょう。
jobID = cmds.scriptJob(e=["SelectionChanged",guiSelectToObjSelect])

# 消す時はこんな感じで。
cmds.scriptJob(kill=jobID,force=True)

これで簡易ではありますがピッカーが作成されました。
あとは、
【選択されるオブジェクト + "_gui"】という命名規則さえ守ればどんどん追加することが可能です。

またscriptJobはMayaを開いている間は生き続けるので、
scriptJobはscriptNodeで管理する方が良いかもしれませんね。

※上記のスクリプトはあくまで例の為、シンプルに書きました。
 スクリプトジョブは場合によってはかなり危険な動作になるので十分に注意して使用して下さい。



PySide GUI Application Development
Packt Publishing (2013-10-15)