3DCG屋さんの活動記録

PROFILE ★★こんな人です

映像制作会社でクリエイティブの修行中。日ごろはMaya&AEを中心にいろんなCGソフトを触りながら、TD寄りの作業が好きで、インタラクティブな体験型空間演出をやりたいと模索中。面白いこと新しいこと大好きな『素直』でいつづける

2017年1月12日木曜日

MayaでベベルノードだけアクティブにするPythonスクリプト


Maya pythonスクリプト


パスをベベルプラスで押し出したオブジェクトが複数あり、
一括で押し出し距離を変更したいとき・・・面倒ですよね。

オブジェクトを選択して実行すると、ベベルノードだけがアクティブになるスクリプト作りました。

# coding: UTF-8
##===================================================
## ベベルプラスで押し出したオブジェクトのベベルノードを一括選択
##===================================================
#  使い方:押し出したオブジェクトを選択、実行でベベルノードのみ選択
#  結果:ベベルノードだけがアクティブになります。
#
#

import maya.cmds as  mc

#list select objects  to Shapes
selObj = mc.ls(sl=True)
selObjShapes = mc.listRelatives(list)

bevelNodes = []

#list bevelNodes
for i in listShapes:
    connectSource1 = mc.listConnections(i+".inMesh",s=True)
    connectSource2 = mc.listConnections(connectSource1[0]+".inputPolymesh",s=True)
    bevelNodes.append(connectSource2[0])
 
print bevelNodes
#[u'bevelPlus4', u'bevelPlus3', u'bevelPlus1', u'bevelPlus2']




内容としては、
選択したオブジェクトをリスト化。
ここでシェイプノードのリストに変換。
各シェイプノードで、コネクションを遡ってベベルノード名を取得。
ベベルノード名を、ベベルノードリストに追加。
これをシェイプノードのリストぶんだけfor文で繰り返す。



今回は、ベベルノードがアクティブになっただけで・・・
さらにこの後AttributeSpreadSheetとかで値を変更する必要があります。

時間あれば、リアルタイムに値が反映される attrFieldSlider を使ってみようと思います。


0 コメント:

コメントを投稿