使用 ls -sl 返回一个转换。我能找到获得变换形状的唯一方法是使用 getRelatives ,但与其他工作流程相比,这似乎很不稳定。有没有更好更标准的方法来从变换中获取形状?
2092 次
2 回答
0
请注意,截至 2018 年,pymelgetShape()
存在缺陷(IMO),因为它假设每个节点只有一个形状,但情况并非总是如此。(就像 99% 的时间一样,情况就是这样,所以我在吹毛求疵)
然而; getShape() 方法仅适用于变换节点类型。如果你有一个未知的节点类型,你试图解析它是网格还是曲线,例如,通过说 getShape() 你会想要检查你是否可以使用该方法。
if pm.nodeType(yourPyNode) == 'transform':
'shape = yourPyNode.getShape()
如果解析未知数:listRelatives()
将shape
ors
标志设置为 true的命令
selected_object = pm.ls(sl=True)[0]
shapes = pm.listRelatives(selected_object, s=True)
if len(shapes) > 0:
for shape in shapes:
# Do something with your shapes here
print('Shapes are: {}'.format(shape))
# or more pymel friendly
shapes = pm.selected_object.listRelatives(s=True)
for shape in shapes:
# Do something in here
于 2019-04-08T23:38:22.110 回答
0
从 PyMEL 中的变换获得形状的非常标准的方法:
transform.getShape()
要从选择列表中获取形状,您可以执行以下操作以生成形状列表。
sel_shapes = [s.getShape() for s in pm.ls(sl=1)]
请注意,某些变换没有形状。就像一个组节点,它基本上是一个空变换。
于 2017-03-08T06:05:12.837 回答