无法使用文件节点中的标记<f>修改或查询图像序列路径

时间:2016-09-20 09:36:22

标签: python-2.7 textures nodes maya mel

我引用了node,所用纹理的路径是图像序列:

  

路径\文件&LT。 f&gt; .iff(我把它分开,以便编辑器不会改变它)

当我做getAttr

texture_path = cmds.getAttr('{}.fileTextureName'.format(file_node))

我明白了:

  

路径\ file.0001.iff

这是序列的第一张图片。它不是常规序列,但它是一个动画纹理,有时它是0001,其他时候是0002 ......等等,这取决于附加到图像序列的动画曲线。

如何使用通配符获取纹理的通用名称?

如果我编辑该属性,Arnold Render告诉我这是一个无效的令牌。好像下面还发生了其他事情。

编辑:

import pymel.core as pc
obj = pc.PyNode( 'textureFileNode')
obj.fileTextureName.get()

还返回没有通配符的路径。

1 个答案:

答案 0 :(得分:0)

似乎“属性编辑器”中未显示隐藏属性。花了很长时间才弄清楚这一切。

在激活“使用图像序列”复选框时,在执行的代码中搜索更新路径时,我发现了以下三个属性:

  • fileNode。 textureFileNode :这不会隐藏在UI中,但如果此文件节点上没有图像序列,则该字段的内容对应于变量的内容。否则,如果您查询它,它将返回序列的第一项。
  • fileNode。 fileTextureNamePattern :包含显示的路径 带有标记的图像路径字段。如果你这是你应该查询的那个 想要带有令牌的路径。可以修改。
  • fileNode。 computedFileTextureNamePattern :包含生成的maya 带有令牌的路径。它无法改变!

修改fileTextureNamePattern不会更改computedFileTextureNamePattern。要更改它,您需要强制Maya重新生成它,首先修改fileTextureNamePattern,然后是属性textureFileNode(按此顺序!)。

重要:文件应该存在,以便让Maya重新生成第三个参数。否则,在您通过进行一些更改来更新UI之前,它不会被更改并且路径的组合将会存在。如果您正在编写批处理脚本,它将全部混合!

为什么第三个参数很重要,为什么不只使用fileTextureNamePattern属性? 例如,Arnold Render使用computedFileTextureNamePattern来生成ASS文件。为了获得该模式,maya中的内部算法尝试获取它们中的每一个,最后一个是textureFileNode。通常,如果maya重新生成第三个属性,那么第二个属性在此之后是空的,因此获得生成的属性更好。