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。 –