我正在创建用于作业分配的工具,以创建材料并将其应用于目标对象的选定面。这个想法是,您将能够选择面部,键入名称,选择颜色,它将创建材质并将其应用于场景中的所选面部/对象。我还不太清楚如何将材质应用于所选的面...

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

#create a shader (material)
shader=cmds.shadingNode('blinn', asShader=True, n="Wood") #placeholder name
#create a shading group
shading_group=cmds.sets(renderable=True, noSurfaceShader=True, empty=True)
#connect the shader to the shading group
cmds.connectAttr('%s.outColor' %shader, '%s.surfaceShader'%shading_group)
#Change the colour
cmds.setAttr(shader+'.color', R,G,B) #replace r,g,b with values between 0 and 1
selected= cmds.ls(sl=True)


到目前为止,我目前所有的代码都可以使用,但是我不知道该使用什么命令将材料应用于我的选择。

到目前为止,我已经看过cmds.hyperShade,cmds.setAttr和cmds.sets了,但是我不知道该如何处理我的控制台。

最佳答案

从我的其他帖子中:How can I perform shader assignment to a geo efficiently and non-destructively?

您可以使用cmds.sets分配着色器

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)

关于python - 如何使用Python将 Material 应用于Maya中的选定面?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57797087/

10-11 22:06
查看更多