[mayaPython] blendShapeに追加・削除するScripts

[python]
import maya.cmds as mc

def deleteBlendShape(blendShapeNode,geo):

if mc.objExists(blendShapeNode) == True:

blendShapeTaget = mc.blendShape(blendShapeNode,q=True,g=True)

targetNodeList = mc.blendShape(blendShapeNode,q=True,t=True)

if geo in targetNodeList:

taget_index = targetNodeList.index(geo)

mc.blendShape(blendShapeNode,e=True,rm=True,t=(blendShapeTaget[0],taget_index,geo,1))

def addBlendShape(blendShapeNode,geo,weight=1):

if mc.objExists(blendShapeNode) == True:

blendShapeTarget = mc.blendShape(blendShapeNode,q=True,g=True)

targetNodeList = mc.blendShape(blendShapeNode,q=True,t=True)

if (geo in targetNodeList) != True:

mc.blendShape(blendShapeNode,e=True,t=(blendShapeTarget[0],len(targetNodeList),geo,weight))
[/python]

blendShapeコマンドでBlendShapeのシェイプターゲット追加・削除 ができるのですが、このコマンドを使ってやろうとすると非常にわかりにくいので

自分でコマンドを書いてみました。

引数の blendShape には、追加したいBlendShapeNodeの名前 geo には、追加したいメッシュノードの名前を入れます。

blendShapeコマンドの、 target(t)には、

  1. string: ベース オブジェクト
  2. int: インデックス
  3. string: ターゲット オブジェクト
  4. double: ターゲット値

を、タプル形式でセットして指定する必要があり、これが非常にややこしいのでそれを毎度かくのがメンドクサイ。。。

 

はじめ、shapeをDeleteするために使うアトリビュートが rm と geometry だとばかり思って、コマンドでは消せないのか?とか頭をよぎったりしましたが。

だって、Helpの書き方が

-rm フラグも指定していない限り、指定したオブジェクトは、このデフォーマ オブジェクトによって変形されるオブジェクトのリストに追加されます

とか、どうみても rm=True,g=ShapeNode にしろとしか見えないですって(‘A`)

と、地味にターゲットの消し方がわからずしばらくあたふたしたものの、消せるようになったのでメモがてら書き起こしておきます。

コメントを残す

メールアドレスが公開されることはありません。


*