我引用了node,所用纹理的路径是图像序列:
路径\文件&LT。 f> .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()
还返回没有通配符的路径。
答案 0 :(得分:0)
似乎“属性编辑器”中未显示隐藏属性。花了很长时间才弄清楚这一切。
在激活“使用图像序列”复选框时,在执行的代码中搜索更新路径时,我发现了以下三个属性:
修改fileTextureNamePattern不会更改computedFileTextureNamePattern。要更改它,您需要强制Maya重新生成它,首先修改fileTextureNamePattern,然后是属性textureFileNode(按此顺序!)。
重要:文件应该存在,以便让Maya重新生成第三个参数。否则,在您通过进行一些更改来更新UI之前,它不会被更改并且路径的组合将会存在。如果您正在编写批处理脚本,它将全部混合!
为什么第三个参数很重要,为什么不只使用fileTextureNamePattern属性? 例如,Arnold Render使用computedFileTextureNamePattern来生成ASS文件。为了获得该模式,maya中的内部算法尝试获取它们中的每一个,最后一个是textureFileNode。通常,如果maya重新生成第三个属性,那么第二个属性在此之后是空的,因此获得生成的属性更好。