3DCGbook

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

【Python】ノードベースな関数!のススメ

まずは例を、

''' 例1 '''
# for等を関数の中に入れる(全部入り)
def selectionLockTranslate():
    sl = cmds.ls(sl=True,type='transform')
    for node in sl:
        cmds.setAttr('%s.translate' %node,l=True)
allTranslateLock()

''' 例2 '''
def lockTranslate(node):
    cmds.setAttr('%s.translate' %node,l=True)

# 外でノードを渡してfor文
nodes = cmds.ls(sl=True)
for node in nodes:
    lockTranslate(node)

もちろん好みもありますが、私は常に例2の方法を薦めています。

例1でのメリットはもちろんあります。
考えずにスクリプトを書けることです。
ただプロジェクト依存になりがちでゴミになる可能性も非常に高いです。

なので、機能単位で分けて関数を書くことをお薦めしています。
不具合の発見もしやすいですし、短いコードをたくさん書くので見やすくなります。

最終的にはそれを組み合わせて、大きなものを作るといった感じでしょうか…。

初歩的なところかもしれませんが、
スクリプトを多く書いてくるとこういう細かいところも気になってきますね。