首先,我对Python很陌生,所以我为这里的任何缺点道歉。我试图在Maya中建立一个lookDev脚本,基本上是一个新员工可以访问着色器,纹理,所有有用的东西的窗口。我的问题出现在这里:
def CreateRemapValue():
selNodes = mc.ls(sl = True, type = "file")
if selNodes:
for selNode in selNodes:
newRemapV = mc.shadingNode('remapValue', name = selNode + "_RemapValue", asUtility = True)
mc.setAttr = (selNode + ".alphaIsLuminance", 1)
mc.connectAttr(selNode + '.outAlpha', newRemapV + '.inputValue')
else:
newRemapV = mc.shadingNode('remapValue', asUtility = True, name = "RemapValue")
非常简单,但是发生的事情是我和我更有经验的Python朋友都无法理解的。
如果我选择了一个文件节点并运行它,它会创建一个RemapValue,没问题。如果我在没有选择任何文件节点的情况下运行这个,它会创建一个RemapValue,没有问题。然后,整个脚本都无法工作。没有着色器,没有纹理,没有灯光。什么都没有。这一切都给了我'tuple'对象不可调用的错误。使脚本完全不可用。
它给我的错误行都类似于以下内容。我做了2步,得到了错误,当我试图创建一个基本的木材着色器:
mc.setAttr(RoughWoodA_TileableTX + ".fileTextureName", "T:/06_Image_Lib/Texture_Library/TILEABLE/RoughWood_Tileable_01.tif", type = "string")
给出的错误是:
# Error: TypeError: file <maya console> line 329: 'tuple' object is not callable
任何帮助或指导将非常感激。谢谢:)
您的问题是mc.setAttr = (selNode + ".alphaIsLuminance", 1)
行。你试图将一个元组赋值给一个函数,然后在稍后的代码中试图调用该函数。
mc.setAttr
而不是赋值给它,像这样:mc.setAttr(selNode + ".alphaIsLuminance", 1)