赞
踩
1.输入:
import maya.cmds;
sphereNodes=maya.cmds.polySphere();
print (sphereNodes);
输出:
我们可以看到maya.cmds.polySphere();创建圆球后返回值被记录到sphereNodes中,注意返回的列表不包含maya节点,只包含节点的名称。此列表使用del()函数不会删除maya节点,仅仅会删除具有两个字符串的列表。
maya大纲视图示例:
我们可以使用sphereShape=sphereNodes[1];将列表中1标量的值传给sphereShape,来进行后续一系列的操作。
输入:
rad=maya.cmds.polySphere(
sphereShape,q=True,radius=True
);
maya.cmds.polySphere(sphereShape,e=True,radius=rad*2);
此时maya窗口:
代码表示的是查询sphereShape中名称的半径,将值传输给rad,并进入编辑模式将rad查询的半径值乘以2。
输出后此时maya窗口:
因此可以读取球体属性以创建其他物体:
rad=maya.cmds.polySphere(
sphereShape,q=True,radius=True
);
print (rad);
maya.cmds.polyCube(
width=rad*2,
height=rad*2,
depth=rad*2
);
代码表示的是读取查询sphereShape的半径,存储到rad中,并打印rad值,读取出为2,后续则创建4*4*4的立方体。
maya窗口:
2.需要注意的是maya创建相同名字的时候,后创建的物体会在名称后面叠加数字,例如:
import maya.cmds;
maya.cmds.polySphere(name='head');
maya.cmds.polyCube(name='head');
代码分别创建名为head的球体和立方体
窗口:
此时后创建的Cube名称改成了head1,maya要避免重名。
此时查询名为head的Cube,得到的是错误信息。
mayapython是根据选择物体名称来操作节点和属性的,因此如果没有捕获到正确的名称,将无法进行操作,后续会有替代方法。
3.获取与设置值。getAttr和setAttr。
import maya.cmds;
loc=maya.cmds.spaceLocator()[0];
创建新的定位器,将其transform节点的名称保存在名为loc的变量中。
sx=maya.cmds.getAttr(loc+'.scaleX');
print(sx);
将定位器x-scale保存在变量中打印结果,结果默认为1.0
getAttr命令允许获得任意节点的属性值,只需要将节点名称、句点和属性名称作为字符串传递。此例字符串为“locator1.scaleX”。
sx *=2;
maya.cmds.setAttr(loc+'.scaleX',sx);
此代码将sx的值增加一倍并为节点设置一个新值。
4.符合属性
由于一些属性属于符合属性,可能包含多个值,这些属性类型与setAttr命令和getAttr命令的工作方式不同。造成这种差别的原因是,setAttr与getAttr命令不知道特点属性想要或包含的数据类型,除非通过属性名称查找。其他命令只适用于特点节点的特定属性,因此可以一种更为直接的方式工作。
继续上一步代码,查询平移数据:
print(maya.cmds.xform(loc,q=True,translation=True));
输出值为[0.0, 0.0, 0.0]
同样使用xform命令时可以改变平移值:
maya.cmds.xform(loc,translation=[0.0, 1.0, 0.0]);
getAttr()查询值:
print(maya.cmds.getAttr(loc+'.translate'));
输出值为[(0.0, 1.0, 0.0)],这是一个包含元组的列表。
使用setAttr()设置值:
maya.cmds.setAttr(loc+'.translate',1,2,3);
重新print(maya.cmds.getAttr(loc+'.translate'));
打印值为[(1.0, 2.0, 3.0)]
5.connectAttr和disconnectAttr
属性连接的基本要求是类型相同,字符串与十进制数无法连接,但是maya会自动内置转换,比如角度值控制平移。
import maya.cmds;
sphere=maya.cmds.polySphere()[0];
cube=maya.cmds.polyCube()[0];
maya.cmds.connectAttr(cube+'.ry',sphere+'.ty');
maya.cmds.select(cube);
创建立方体和球体,将立方体的y-rotation连接到球体的y-translation。
此时使用旋转工具沿着y轴旋转立方体,球体会大幅度平移。
执行下列代码断开连接:
maya.cmds.disconnectAttr(cube+'.ry',sphere+'.ty');
执行下列代码创建multiplyDivide节点:
mult=maya.cmds.createNode('multiplyDivide');
maya.cmds.connectAttr(cube+'.ry',mult+'.input1X');
maya.cmds.setAttr(mult+'.input2X',1.0/90.0);
maya.cmds.connectAttr(mult+'.outputX',sphere+'.ty');
maya.cmd.select(cube);
现在旋转立方体,每旋转90度,球体偏移一个单位。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。