スムーススキンの編集をまとめてロックするPythonスクリプト

初めまして、蓮沼です。
NTW-GAMESで主にデザイン面を担当しています。

突然ですがMayaでスキニングをする時、みなさんどうされていますか?
私はコンポーネントエディタやペイント機能、ボーナスツールのウェイトエディターなんかを使っています。

Mayaの標準機能なので、良くも悪くもシンプルにまとまっていると思いますが、
ひとつ、面倒だなぁと思うことがあって、
スムーススキン編集のロックアンロックがまとめて出来ないんですよね(出来ないですよね・・・?)

 とか 


ということで、 タイトルの通りですが、
スムーススキンの編集をまとめてロック、アンロック出来るスクリプトを作成しました。
Maya2019上での動作を確認しています。
Maya2022上でPython3でも動きました。(21/7/1時点

Pythonスクリプト
def main(isLock = True):
    lockJoint = cmds.ls(sl=True)

    if cmds.nodeType(lockJoint) == 'joint':

        cmds.select(cl=True)
        cmds.select(lockJoint, hi=True)
        lock_Joints = cmds.ls(sl=True)

        for joint in lock_Joints:
            if cmds.nodeType(lockJoint) == 'joint':#ゲーム系ではあまりやらないと思いますが、ジョイント群の中にジョイント以外のものがあった場合、除外します。
                cmds.setAttr(joint + '.liw', isLock)
    
    else:
        cmds.error('Please select joint.')

main(True) #ロックしたい場合True、アンロックしたい場合Falseを代入
使い方

ロック、アンロックしたいジョイント群のルートをMaya上で選択しておき、
上記のスクリプト17行目のmainの引数に
ロックしたい場合はTrueを、アンロックしたい場合はFalseを代入して
スクリプトエディターのPythonタブ上で実行してください。


ジョイント数が少ない時は別にいいんですが、指とか髪の毛とかでジョイント数が増えると、
ウェイト振りたくないところのジョイントをロックするだけで一苦労です。
こんな感じでコンピューターに任せられるところはどんどん任せていきたいですね。

以上、スムーススキンの編集をまとめてロック、アンロックするPythonスクリプトでした。

コメント

タイトルとURLをコピーしました