如何在Python脚本中为Autodesk Maya 2016中的对象添加颜色?

时间:2015-07-22 01:28:40

标签: python scripting maya autodesk

我是Autodesk Maya的新手。 我查看了互联网,找到了一些有关如何在python脚本中命令的详细信息,以及一个对象在选择时更改它的颜色。 我知道如何看到所选对象,但是,我没有成功改变颜色。 我用过这个函数 -

enter code here

   'result = cmds.ls(orderedSelection =True)
    Trans = result[0]
    cmds.color(Trans,userDefined =8 ) '

当我按下一个物体时,它被选中,但它的颜色不会改变。

如果你可以帮助我,将会很有帮助.. :)

2 个答案:

答案 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

将为您提供将形状映射到其索引号的字典