变量和maya命令 #getAttr #setAttr #xform #connectAttr #disconnectAttr
get attribute!
set attribute!
xform!(可查询设置transform节点中任何参数)
connect attribute!
disconnect attribute!
#得到,设置,链接,断开属性
#getAttr & setAttr
1)变量loc是新创建locator的transform节点。#如果打印loc变量,列表[0]是transform节点,[1]是shape节点。
2)设置变量sx,为得到locator的X轴向的缩放值。
3)修改变量sx,让sx值增加一倍。#变量可以改数值并覆盖的。
4)设置locatorX轴向的缩放值为现sx值。
#这一步若不知如何设置,可先手动调整一下locator的值,看mel是怎么改的。然后替换变量,加上字符串,即可。
#注意!locator1.scaleX字符串中locator1要替换成变量。用+号串起来(不是用逗号,“.scale”中的"."不能掉!)
#后面的空格用逗号隔开。见下面代码中的第5行
1 import maya.cmds as cmds 2 loc = cmds.spaceLocator()[0] 3 sx = cmds.getAttr(loc+'.scaleX') 4 sx = sx*2 5 cmds.setAttr(loc+'.scaleX', sx)
#xform (复合属性。不可编辑!)
## 查询。在上一步代码中,使用xform命令打印locator的平移(注意这里要查询!),使用的是translation!会得到列表[0.0, 0.0, 0.0]。
6 print cmds.xform(loc, query=True, translation=True)
## 新设置 translation值,注意值是列表!这里不用editor=True!
7 cmds.xform(loc, translation=[0,1,0])
##对比使用getAttr和setAttr查询并设置locator的平移。注意这里使用的是translate!会得到包含元组的列表[(0.0, 0.0, 0.0)]。设置值的时候,按照顺序指定值(x,y,z)
这里会看起来比较繁琐。没有xform命令看起来明了。
print cmds.getAttr(loc+'.translate') cmds.setAttr(loc+'.translate',1,2,3)
#connectAttr & disconnectAttr &multiplyDivide
链接属性、断开属性、乘除节点
1)打开新的场景,创建一个球体和立方体,并保存他们的transform节点。
2)创建属性链接,球体Y轴的移动,驱动立方体的Y轴旋转。选择球体(测试)。#select命令
3)断开上面两个属性的链接。
4)在两个属性之间创建一个multiplyDivide节点,使球体每移动1个单位,立方体旋转90°。#createNode命令
1 import maya.cmds as cmds 2 Sphere = cmds.polySphere()[0] 3 Cube = cmds.polyCube()[0] 4 5 cmds.connectAttr(Sphere+'.ty', Cube+'.ry') 6 cmds.select(Sphere) 7 8 cmds.disconnectAttr(Sphere+'.ty', Cube+'.ry') 9 10 mult = cmds.createNode('multiplyDivide') 11 cmds.connectAttr(Sphere+'.ty', mult+'.input1X') 12 cmds.setAttr(mult+'.input2X', 90) 13 cmds.connectAttr(mult+'.outputX', Cube+'.ry') 14 cmds.select(Sphere)