1
我有一段python代碼可以在Maya中使用,該代碼應該通過UI colorSliderGrp從用戶處獲取顏色,並使用它來設置材質並將顏色設置爲某些柱面。colourSliderGrp和setAttr之間的鏈接
這是我的顏色滑塊,在createUI中函數中使用,我有:
colourControl=cmds.colorSliderGrp(label='Blue', rgb=(0, 0, 1))
然後,我有我的setMaterial功能:
def setMaterial(objName, colour, materialType='lambert'):
setName=cmds.sets(name='_MaterialGroup_', renderable=True, empty=True)
shaderName = cmds.shadingNode(materialType, asShader=True)
cmds.setAttr(shaderName+'.color', colour[0], colour[1], colour[2], type='double3')
cmds.surfaceShaderList(shaderName, add=setName)
cmds.sets(objName, edit=True, forceElement=setName)
我訪問setMaterial既OBJNAME和顏色參數在第三個函數中,我收到colourControl所在行的錯誤:
'NoneType' object has no attribute '__getitem__'
我有以下的默認顏色的例子後嘗試這樣做:
def setMaterial(objName, materialType='lambert', colour=(0, 0, 1)):
setName=cmds.sets(name='_MaterialGroup_', renderable=True, empty=True)
shaderName = cmds.shadingNode(materialType, asShader=True)
cmds.setAttr(shaderName+'.color', colour[0], colour[1], colour[2], type='double3')
cmds.surfaceShaderList(shaderName, add=setName)
cmds.sets(objName, edit=True, forceElement=setName)
我試過其他滑塊以及和試圖打印colourControl,看看我的工作,但我得到了
a|columnLayout73|colorSliderGrp58
其中a是我的UI窗口的名稱,columnLayout和colorSlider後面的數字在我的代碼的每次運行時都會保持不變。
祝您有美好的一天!
謝謝!我已經能夠在我的代碼中實現這個功能,即使沒有這個部分,它現在也可以工作。如果我理解正確,部分應該改變球體的屬性,因爲我會改變滑塊的位置?我不是在尋找,只是爲了將顏色值傳遞給另一個函數中的setAttr。 –