我是Autodesk Maya的新手。 我查看了互联网,找到了一些有关如何在python脚本中命令的详细信息,以及一个对象在选择时更改它的颜色。 我知道如何看到所选对象,但是,我没有成功改变颜色。 我用过这个函数 -
enter code here
'result = cmds.ls(orderedSelection =True)
Trans = result[0]
cmds.color(Trans,userDefined =8 ) '
当我按下一个物体时,它被选中,但它的颜色不会改变。
如果你可以帮助我,将会很有帮助.. :)
答案 0 :(得分:0)
这是一个大致如何做的方式:
import maya.cmds as cmds
selections = cmds.ls(sl=True)
for sel in selections:
# get shape of selection:
sel_shape = cmds.ls(o=True, shapes=True)
# get shading groups from shape:
shadingGrps = cmds.listConnections(sel_shape,type='shadingEngine')
# get the shaders:
shaders = cmds.ls(cmds.listConnections(shadingGrps),materials=True)
# change the color of the material to red
cmds.setAttr(shaders[0]+".color", 1, 0, 0, type="double3")
选择所需内容并运行脚本。
注意:如果多个对象共享相同的材质,选择一个将改变所有其他对象的颜色。
(如果要在不运行脚本的情况下选择对象时更改材质颜色,则必须查看maya python命令 scriptJob )
答案 1 :(得分:0)
您可以使用两个步骤设置wirecolor:
# there are 32 wire color numbered 0 to 31
cmds.setAttr(your_object + ".displayOverride", 1)
cmds.setAttr(your_object + ".overrideColor", color)
设置表面颜色,以便为每种材质指定单独的颜色。简单的答案是为每个对象提供自己的材质,并通过设置材质的.color属性来控制颜色,如@ Ale_32的示例所示。您可以根据建议使用selectionChanged scriptJob来更改颜色。
如果你不想要太多材料,你也可以创建一个着色器使用tripleShadingSwitch节点来驱动它的颜色。 tripleShadingSwitch将为每个对象提供输入,您可以使用开关中对象的索引直接设置颜色:
def set_indexed_color(switchNode, index, color):
cmds.setAttr(switchNode+ ".input[%i]" % index, *color)
# note: that asterisk is important, since color is a 3-piece
# value like [1,0,1]
如果您没有手动设置,可以找出传入的对象正在使用
def get_input_shapes(switchNode):
input_count = cmds.getAttr(switchNode + ".input", size=True)
results = {}
for item in range(input_count):
inshape = cmds.listConnections(switchNode + ".input[%i].inShape" % item)[0]
results[inshape] = item
return results
将为您提供将形状映射到其索引号的字典