Maya + Python 数组收集
我有几个基本的问题,想通过这些问题来理解在Maya中使用Python处理数组。
- 我怎么才能把所有选中的节点放到一个叫做'curSel'的数组里呢?
- 接着,我怎么能把'curSel'数组里的'网格'部分收集到一个新的数组'meshArr'里呢?
- 然后,我又怎么能把'curSel'数组里的'曲线'部分放到一个新的数组'curvesArr'里呢?
简单来说,我就是想把所有选中的节点放到一个变量里。然后再通过从这个数组中提取特定的节点,创建两个新的数组。
1 个回答
2
这件事比想象中要复杂一些。
import maya.cmds as cmds
curSel = cmds.ls(sl=True)
这段代码会给你一个包含所选对象的列表。不过,列表里只会有变换信息,除非你明确选择了网格或曲线的形状节点,所以你不能仅仅通过这个列表来获取网格或形状。
要获取这些形状,你需要使用 listRelatives:
curveSel = []
meshSel = []
for xform in curSel:
shapes = cmds.listRelatives(xform, shapes=True) # it's possible to have more than one
for s in shapes:
if cmds.nodeType(s) == 'mesh':
curveSel.append(xform)
if cmds.nodeType(s) == 'nurbsCurve':
meshSel.append(xform)
这个方法会检查每个对象的形状,并根据形状的类型把它们分配到正确的列表中。