获取场景中的ShadingEngine与对应的形状节点信息
如果着色器全部由对象分配(不是在面级别),可以使用 sets 命令查询着色组并按着色器分组找到所有对象的列表。命令会返回一个字典,其中着色器作为键,其内容列表作为值:
assignments_by_shader = { sg: cmds.sets(sg, q=True) or [] for sg in cmds.ls(type='shadingEngine') }
print assignments_by_shader
返回值形如:
{“SG1”: [“shape_node_1”, “shape_node_2”, “shape_node_3”], “SG2”: [“shape_node_4”, “shape_node_5”]}
如果需要寻找特定形状节点的ShadingEngine, 则代码表示如下
def assigned(object):
shape = cmds.listRelatives(s=True) or object
shaders = cmds.listConnections(shape, type='shadingEngine') or []
return shaders