参考连接:Solved: Manage materials order - Autodesk Community - Maya
objMaterials = [] objs = cmds.ls(sl=True) allFaces = cmds.polyEvaluate(objs,f=True) for obj in objs: print faces for face in range(allFaces): #print face iteFace = obj+".f["+str(face)+"]" print(iteFace) cmds.select(iteFace) cmds.hyperShade(smn=True) material = cmds.ls(sl=True) #print material[0] if not material[0] in objMaterials: objMaterials.append(material[0])
注意:上面的方法如果物体面数多,速度会有点慢,当然可以使用python的list推导方式,速度会很快,原理是一样的。