无法显示除首选之外的所有信息

时间:2014-06-20 03:54:29

标签: python list maya

我使用以下代码处理在我的场景中找到的图像列表,在收集的信息之前,即在另一个函数中使用tifPath和texPath。

然而,在我的场景中有3个纹理,因此我应该看到3组tifPath和texPath,但我只看到其中的1个。而如果我正在运行检查surShaderOutsurShaderTex我能够看到所有3个纹理信息。

例如,3纹理文件路径如下(在surShaderTex中):/user_data/testShader/textureTGA_01.tga, /user_data/testShader/textureTGA_02.tga, /user_data/testShader/textureTGA_03.tga

我想我想说的是,为什么在我的for声明中,它能够打印出所有3个结果,但是除了它之外,它只打印出一个结果。

有任何建议吗?

surShader = cmds.ls(type = 'surfaceShader')
for con in surShader:
    surShaderOut = cmds.listConnections('%s.outColor' % con)
    surShaderTex = cmds.getAttr("%s.fileTextureName" % surShaderOut[0])   

path = os.path.dirname(surShaderTex)
f = surShaderTex.split("/")[-1]
tifName = os.path.splitext(f)[0] + ".tif"
texName = os.path.splitext(f)[0] + ".tex"
tifPath = os.path.join(path, tifName)
texPath = os.path.join(path, texName)

convertText(surShaderTex, tifPath, texPath)

1 个答案:

答案 0 :(得分:1)

只有两行是for循环的一部分。其余的只执行一次。

所以首先运行:

surShader = cmds.ls(type = 'surfaceShader')
for con in surShader:
    surShaderOut = cmds.listConnections('%s.outColor' % con)
    surShaderTex = cmds.getAttr("%s.fileTextureName" % surShaderOut[0])   

然后在该循​​环之后,只有一个surShader,一个surShaderOut和一个surShaderTex,以下执行

path = os.path.dirname(surShaderTex)
f = surShaderTex.split("/")[-1]
tifName = os.path.splitext(f)[0] + ".tif"
texName = os.path.splitext(f)[0] + ".tex"
tifPath = os.path.join(path, tifName)
texPath = os.path.join(path, texName)

缩进与上面的行相同,并且将为 surShader的每个元素运行,而不是仅运行一次。