代码之家  ›  专栏  ›  技术社区  ›  Darkgaze

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

  •  0
  • Darkgaze  · 技术社区  · 10 年前

    我引用了节点,使用的纹理路径是图像序列:

    路径\文件&书信电报;f>。iff(我把它分开,这样编辑器就不会更改它)

    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 回复  |  直到 10 年前
        1
  •  0
  •   Darkgaze    10 年前

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

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

    • 文件节点。 纹理文件节点 :这在UI中不隐藏,但如果此文件节点上没有图像序列,则字段的内容与变量的内容相对应。否则,如果您查询它,它将返回序列的第一项。
    • 文件节点。 文件文本名称模式 :包含中显示的路径 带有标记的图像路径字段。如果您 需要带标记的路径。可以修改。
    • 文件节点。 计算文件文本名称模式 :包含生成的maya 带有标记的路径。不能更改!

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

    重要的

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