2015-07-22 38 views
0

我在Autodesk Maya中是新。 我看着在互聯網上找到我怎麼能在Python腳本命令,一個對象改變被選中時,它的顏色一些細節。 我知道怎麼看所選擇的對象,但是,我沒有成功來改變顏色。 我用這個功能 -如何在Python腳本中爲Autodesk Maya 2016中的對象添加顏色?

enter code here 

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

當我按下一個對象,被選中它,但它的顏色不會改變。

這將是有益的,如果你能幫助我.. :)

+0

你想改變什麼顏色的?線框顏色或整個材質顏色? –

+0

嗨,謝謝你的回答。 – ErezProductions

+0

我想改變整個顏色。確切的顏色並不重要,但讓我們說紅色例如.. – ErezProductions

回答

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") 

選擇你想要什麼,並運行該腳本。

注意的是:如果倍數的對象共享相同的材質,選擇一個將改變所有其它的顏色。

(如果你想,當你選擇一個對象,而不運行腳本來改變材料的顏色,你必須看看瑪雅蟒蛇命令scriptJob)使用兩步

+0

我會更好地解釋它 - 我有一個由8 * 8 polyCubs製成的板。我想更改接近我按下的位置的2個立方體的顏色。在選擇另一個立方體或我選擇了所選立方體之後,我希望這些立方體返回到它們的prev。顏色。 – ErezProductions

0

您可以設置wirecolor處理:

# there are 32 wire color numbered 0 to 31 
cmds.setAttr(your_object + ".displayOverride", 1) 
cmds.setAttr(your_object + ".overrideColor", 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 

,這將給你一個字典映射形狀的索引號

相關問題