3DCGbook

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

スクリプトが苦手な方にオススメ!PyMEL講座2(値の取得と設定編)

スクリプトが苦手な方にオススメ!PyMEL講座1(リネームから始めよう編) - 3DCGbook

前回の続き…
今回は値の取得と設定を主にやっていきます。

かなり雑ですが全てコードにまとめてみました。

"""
1. PyMELを使えるようにするコードは以下
"""
import pymel.core as pm

"""
2.選択したノードを取得します。
	ポリゴンキューブを2つ作り選択してから実行しましょう。
"""
nodes = pm.selected()

"""
3. 1つめのポリゴンキューブの値の取得をしてみます。
"""
translateValue = nodes[0].translate.get() #translate値の取得
rotateValue = nodes[0].rotate.get() #rotate値の取得
scaleValue = nodes[0].scale.get() #scale値の取得

"""
4. 1つめのポリゴンキューブの値を2つめのポリゴンキューブに設定します。
"""
nodes[1].translate.set(translateValue)
nodes[1].rotate.set(rotateValue)
nodes[1].scale.set(scaleValue)

PyMELではだいたい、

・取得
ノード.アトリビュート名.get()

・設定
ノード.アトリビュート名.set(数値)

で取得、設定ができます。
ちょっと難しくなるかもしれませんが軽めに応用してみましょう。
ノードの後ろにつけるコマンドを少し覚えるだけで新しいものが見えてくるかもしれません。

"""
1. PyMELを使えるようにするコードは以下
"""
import pymel.core as pm

"""
2.選択したノードを取得
"""
nodes = pm.selected()

"""
3. 選択したノードのシェイプを取得
"""
shape = nodes[0].getShape()

"""
4. 選択したノードのシェイプのsmoothLevelを変更する
"""
shape.smoothLevel.set(0)

"""
5. 選択したノードのシェイプのsmoothLevelをロックする
"""
shape.smoothLevel.lock()
# ワンポイント:shape.smoothLevel.unlock() でロック解除できます。

mayaは3番キーを押すとスムースがかかりますね。
ただ3番キーを押してもスムースをかけたくないものもあると思います。
あらかじめスムースをかけたくないものはsmoothLevelを0にしてロックして変更できなくしておく。
そういう風にしておくと次の方に渡す際にも親切かもしれません。
ただ当然「事前にそういう設定をしていますよ。」というのは伝えなければいけませんが…。

もし上記なようなことをやる場合を手でやるのは大変かもしれません。
複数ノードに同じ設定を施すにはfor文というのを使います。

リネーム、設定、for文さえできれば十分です。

次回はfor文を使って複数ノードに設定をしましょう。
恐らく次で最終回です(笑)