Maya Script Python 表示のトグル

選択したオブジェクトの表示をトグルする方法です。

import maya.cmds as cmds
sel = cmds.ls(sl=1,o=1)[0]
cmds.setAttr(sel+".visibility",not cmds.getAttr(sel+".visibility"))

一つのオブジェクトを選んで実行すれば、表示がトグルされます。
で、pymelでは、

import pymel.core as pm
sel = pm.ls(sl=1,o=1)[0]
sel.hide() if sel.isVisible() else sel.show()

メソッドが用意されております。

 

マヤコマンドにもメソッドが用意されておりますが、pymelのほうが圧倒的に多いようです。
トランスフォームノードで73個と286個の差がありました。
因みに特定の名前のトランスフォームノードをトグルするには、

import maya.cmds as cmds
[cmds.setAttr(x+".visibility",not cmds.getAttr(x+".visibility")) for x in cmds.ls("Rig*",type="transform")]

もしくは、

import pymel.core as pm
[x.hide() if x.isVisible() else x.show() for x in pm.ls("Rig*",type="transform")]

と、なります。
この場合名前が「Rig」で始まるトランスフォームノードに対して作用します。
どのようなメソッドが用意されているか調べるためには、

import pymel.core as pm
for x in dir(pm.ls(sl=1)[0]):
	print x

で出力可能です。
オブジェクトを選択してスクリプトエディタで実行すると表示されます。
pymelははじめの読み込みに時間がかかるのが難点ですが、
C:\Users\(ユーザー名)\Documents\maya\2013-x64(※バージョンによって違う)\ja_JP\scripts\
内に、userSetup.pyというテキストファイルを作成し、

import pymel.core as pm

と書き込んでおけば起動時に読み込まれます。
起動には時間がかかるので、pymelを読み込む時間は体感できないものになります。

コメントする

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トラックバックする

トラックバック用URL:

アニメーションが親切に解説されております

レンダリング、ライティングの基本が分かります

図版が見やすい美術解剖書です