0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MayaAdvent Calendar 2024

Day 10

UDIMのファイルを数えたい

Last updated at Posted at 2024-12-09

UDIM便利ですよねー
ただ、結局ファイルが何枚あるのかがよくわからないので数えてみます。

テスト

こんなノードを作ってみます。

image.png

インデックス部分がって書かれてますね。
ここのバリエーションが欲しい。

とりあえず素直に聞いてみます。

cmds.getAttr("file1.fileTextureName")
# Result: D:/test/UDIMtest/udmiTest.1001.png # 

これはー、UDIM指定する前に入力したファイルパスですね。
一応  な文字列を取得できないか調べてみます。

うーん この辺ですかねぇ

  • computedFileTextureNamePattern
  • fileTextureNamePattern

とりあえず聞いてみます。

cmds.getAttr("file1.computedFileTextureNamePattern")
# Result: D:/test/UDIMtest/udmiTest.<UDIM>.png # 

あ、これですね。

UDIMのスタートは1001 で maxは9999ですかね?
とりあえず4桁の連番であるという前提で、ファイルを検索してみます。

若干遠回りしてる気もしますが、

  • computedFileTextureNamePattern から 表記の文字列を取得して
  • 文字列から ディレクトリパス、ファイル名を取得して
  • ファイル名の 部分を正規表現に置き換えて
  • pathlibでファイル取得して
  • ファイル名を正規表現でしらべる

という流れでやってみます。

import os
import pathlib
import re
import maya.cmds as cmds

def getUDIMFileNames(fileNode):
    filePath = cmds.getAttr(fileNode + ".computedFileTextureNamePattern")

    fileDirPath = os.path.dirname(filePath) + "/"
    fileName = os.path.basename(filePath)    
    fileNameSample = fileName.replace("<UDIM>","([0-9|\-]{4})")    
    pathNode = pathlib.Path(fileDirPath).iterdir()    
    UDIMFileNames = []
    
    for node in pathNode:
        if node.is_dir():
            continue
                    
        elif node.is_file():
            ID = re.match(fileNameSample,node.name) or None
            
            if ID == None:
                continue
            
            UDIMFileNames.append(node.name)

    return UDIMFileNames
getUDIMFileNames("file1")
# Result: ['udmiTest.1001.png', 'udmiTest.1002.png', 'udmiTest.1003.png', 'udmiTest.1011.png', 'udmiTest.1012.png', 'udmiTest.1013.png'] # 

お、とれましたね。

ちなみにファイルが格納されているフォルダの中身はこのようになってます。

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?