如何使用Python将材质应用于Maya中的选定面?

如何使用Python将材质应用于Maya中的选定面?,python,maya,Python,Maya,我正在为家庭作业创建一个工具,用于创建材质并将其应用于目标对象的选定面。这样做的目的是,您可以选择面、键入名称、选择颜色,它将创建材质并将材质应用于场景中选定的面/对象。我不太明白如何将材质应用到选定的面上,尽管 到目前为止,我已经创建了材质,为材质创建了着色组,将材质连接到着色组,并更改了颜色。我对使用python编写脚本相当陌生,因此我很难找到许多命令中的哪一个会将我的新材质应用到我选择的面上 创建着色器材质 shader=cmds.shadingNode'blinn',asShader=T

我正在为家庭作业创建一个工具,用于创建材质并将其应用于目标对象的选定面。这样做的目的是,您可以选择面、键入名称、选择颜色,它将创建材质并将材质应用于场景中选定的面/对象。我不太明白如何将材质应用到选定的面上,尽管

到目前为止,我已经创建了材质,为材质创建了着色组,将材质连接到着色组,并更改了颜色。我对使用python编写脚本相当陌生,因此我很难找到许多命令中的哪一个会将我的新材质应用到我选择的面上

创建着色器材质 shader=cmds.shadingNode'blinn',asShader=True,n=Wood占位符名称 创建着色组 shading_group=cmds.SetRenderable=True,noSurfaceShader=True,empty=True 将着色器连接到着色组 cmds.connectAttr“%s.outColor”%shader“%s.surfaceShader”%shading\u组 换颜色 cmds.setAttrshader+'.color',R、G、B将R、G、B替换为介于0和1之间的值 选定项=cmds.lssl=True 到目前为止,我当前的所有代码都有效,但我不知道使用什么命令将材质应用于我的选择

到目前为止,我已经查看了cmds.hyperShade、cmds.setAttr和cmds.sets,但我不知道如何理解我的控制台从我的另一篇文章中吐出的内容:

可以使用cmds.set指定着色器

selection = cmds.ls(sl=True, o=True)[0]    
faces = cmds.ls(sl=True)
x = 0
# assign shader
sha = cmds.shadingNode('lambert', asShader=True, name="{}_{}_lambert".format(selection, x))
sg = cmds.sets(empty=True, renderable=True, noSurfaceShader=True,  name="{}_{}_sg".format(selection, x))
cmds.connectAttr( sha+".outColor", sg+".surfaceShader", f=True)
cmds.sets(faces, e=True, forceElement=sg)

您可以包括您为解决此问题所做的任何尝试吗?我尝试了cmds.hyperShadeWood,apply=True cmds.setAttrselected,e=True,mat=Wood都不起作用。。。我希望找到一些线索来解决这个问题,因为我对脚本编写还比较陌生。编辑:尝试cmds.sets命令hyperShade命令记录错误,应编写mds.hyperShade apply='Wood'。无论如何,hypershade在我的内存中有限制,您应该使用cmds.setx第3行中的x=0是什么?假设我希望能够将材质应用于面,而不管所选面的对象数是多少?感谢您指导我使用cmds.sets命令!成功了!我刚刚修改了前面一个答案中的代码,我需要生成几个着色器。我没有重写,而是把x=0,这样就不会给你带来错误。请随意删除它并更改名称。如果它解决了您的问题,请不要忘记将问题标记为“好”:I have:D只是我太新了,它还不算什么