无法从文件节点修改或查询带有标记 <f> 的图像序列路径

Unnable to modify or query image sequence path with token <f> from file nodes

我有参考节点,使用的纹理路径是图像序列:

path\file.< f >.iff (I put it separated so that the editor doesn't change it)

当我执行 getAttr

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

我得到:

path\file.0001.iff

这是序列的第一张图片。它不是常规序列,而是动画纹理,这意味着有时它是 0001,有时是 0002...等等,具体取决于附加到图像序列的动画曲线。

如何使用通配符为纹理设置通用名称?

如果我编辑该属性,Arnold Render 会告诉我这是一个无效标记。似乎还有其他事情在发生。

已编辑:

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

Returns 也没有通配符的路径。

似乎有隐藏的属性没有显示在属性编辑器中。我花了很长时间才弄明白这一切。

在激活 "Use Image Sequence" 复选框时执行更新路径的代码中搜索,我找到了这三个属性:

  • fileNode.textureFileNode : 这个在UI里面没有隐藏但是如果没有image sequence on的话这个字段的内容对应变量的内容这个文件节点。否则,如果您查询它,它 returns 序列的第一项。
  • fileNode.fileTextureNamePattern :包含显示在 带有标记的图像路径字段。这是你应该查询的,如果你 想要带有标记的路径。可以修改。
  • fileNode.computedFileTextureNamePattern :包含生成的 maya 带有标记的路径。无法更改!

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

重要:为了让 Maya 重新生成第三个参数,文件应该存在。否则,它将不会更改,并且会出现混合路径,直到您通过进行一些更改来更新 UI 。如果你是写批处理脚本,那就全混了!

为什么第三个参数很重要,为什么不只使用 fileTextureNamePattern 属性? 例如,Arnold Render 使用 computedFileTextureNamePattern 来生成 ASS 文件。为了获得图案,maya 中的内部算法会尝试获取它们中的每一个,最后一个,textureFileNode。一般来说,如果maya重新生成了第三个属性,后面的第二个属性是空的,所以还是拿生成的那个比较好。