2016-09-20 69 views
0

我已經引用的節點文件中的節點,其中所使用的紋理的路徑是圖像序列與令牌 查詢圖像序列路徑: Unnable修改或從

路徑\文件。 <˚F> .IFF(我把它分離,使得編輯器不改變它)

當我做GETATTR

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

我得到:

路徑\文件。 0001.iff

這是序列的第一個圖像。它不是常規序列,但它是一個動畫紋理,這意味着有時它是0001,其他時間是0002 ...等,這取決於附加到圖像序列的動畫曲線。

如何使用通配符爲紋理設置通用名稱?

如果我編輯該屬性,Arnold Render告訴我這是一個無效的標記。似乎下面還有其他事情發生。

編輯:

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

原封不動地返回通配符也路徑。

回答

0

似乎隱藏屬性沒有在屬性編輯器中顯示。花了很長時間才弄明白這一切。

在執行更新路徑,當你激活「使用圖像序列」複選框的代碼搜索,我發現這三個屬性:

  • filenode的。 textureFileNode:如果在此文件節點上沒有圖像序列,則這不會隱藏在UI中,而是該字段的內容對應於變量的內容。否則,如果您查詢它,它將返回序列的第一個項目。
  • fileNode。 fileTextureNamePattern:包含具有標記的 圖像路徑字段中顯示的路徑。如果你想要帶有標記的路徑,那麼這是你應該查詢的那個。可以修改。
  • fileNode。 computedFileTextureNamePattern:包含maya生成的帶有標記的 路徑。它不能改變!

修改fileTextureNamePattern不會改變computedFileTextureNamePattern。要更改它,您需要強制Maya重新生成它,首先修改fileTextureNamePattern,然後是屬性textureFileNode(按照該順序!)。

重要:文件應該存在才能讓Maya重新生成第三個參數。否則,它將不會被更改,並且在您通過做一些更改來更新UI之前,路徑的組合將會一直存在。如果您正在編寫批處理腳本,它將會混雜在一起!

爲什麼第三個參數很重要,爲什麼不使用fileTextureNamePattern屬性? 例如,Arnold Render使用computedFileTextureNamePattern來生成ASS文件。爲了得到這個模式,maya中的內部算法試圖獲得它們中的每一個,最後一個是textureFileNode。一般來說,如果maya重新生成第三個屬性,那麼第二個屬性在之後是空的,因此獲取生成的屬性是一個更好的主意。