3DCGbook

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

PyMelのススメ

maya.cmds派とpymel.core派の二派閥(?)があるとは思いますが、
あなたはどっち派ですか?

僕はpymel.core派です。
理由はmaya.cmdsはMELをPython化したようにしか感じなかったからです。
もっと他にも理由があるとは思いますが素人な僕は
なんとなく新しくてかっこいいから!という理由でPyMelを選択しました(笑)

何がいいかってのは単純にアトリビュートの取得が容易というところでしょうか。
以下、簡単にですがバウンディングボックスからピボットの最大/最小を求めて
ピボット位置を変更する関数を作りました。

import pymel.core as pm
import logging

def pivotMinMaxY(val):
    sel = pm.selected(typ='transform')
    if val == 'Min':
        pivY = sel[0].getBoundingBoxMin()[1]
    elif val == 'Max':
        pivY = sel[0].getBoundingBoxMax()[1]
    else:
        logging.error("1 argument has to be 'Min' or 'Max'")
    sel[0].scalePivotY.set(pivY)
    sel[0].rotatePivotY.set(pivY)

#Y軸のピボット最小値へ移動
pivotMinMaxY('Min')        
#Y軸のピボット最大値へ移動
pivotMinMaxY('Max')

こんな感じですぐにアクセスできます。
なので、xformとかgetAttrとかほぼ使いません。

あとはsel[0].getBoundingBoxMin()[1]の
[1]を引数にするとXYZの指定もすることができます。

PyMel…是非試してみてください。