파이썬을 이용한 Maya Hypershade에서의 여러개의 파일 노드들을 UDIM 타일링 모드로 변경 하는 방법

파이썬을 이용한 Maya Hypershade에서의 여러개의 파일 노드들을 UDIM 타일링 모드로 변경 하는 방법

 

필요한 파이썬 패키지 설치하기

Maya는 자체적으로 Python 환경을 제공합니다. 외부 Python 환경과의 연동을 위한 ‘pymel’ 패키지 설치 방법은 다음과 같습니다.

pip install pymel

 

스크립트 분석

라이브러리 불러오기

# 필요한 라이브러리를 불러옵니다.
import maya.cmds as cmds

 

함수 정의 및 실행

# Hypershade에서 선택된 파일 노드들의 UV Tiling Mode를 UDIM (Mari)로 변경합니다.
def set_udim_tiling():
    selected_nodes = cmds.ls(selection=True)
    file_nodes = [node for node in selected_nodes if cmds.nodeType(node) == 'file']
    for file_node in file_nodes:
        uv_tiling_mode_attr = f"{file_node}.uvTilingMode"
        cmds.setAttr(uv_tiling_mode_attr, 3)
    num_changed_nodes = len(file_nodes)
    if num_changed_nodes > 0:
        cmds.inViewMessage(amg=f'Changed {num_changed_nodes} nodes to UDIM tiling mode.', pos='midCenterTop', fade=True, fit=100)
    else:
        cmds.inViewMessage(amg='No nodes were changed.', pos='midCenterTop', fade=True, fit=100)
set_udim_tiling()

 

 







 

전체 코드

import maya.cmds as cmds

def set_udim_tiling():
    """
    Hypershade에서 선택된 파일 노드들의 UV Tiling Mode를 UDIM (Mari)로 변경합니다.
    """
    # 선택된 노드 가져오기
    selected_nodes = cmds.ls(selection=True)

    # 파일 노드 필터링
    file_nodes = [node for node in selected_nodes if cmds.nodeType(node) == 'file']

    # 각 파일 노드의 UV Tiling Mode 변경
    for file_node in file_nodes:
        # UV Tiling Mode 속성 가져오기
        uv_tiling_mode_attr = f"{file_node}.uvTilingMode"

        # UDIM (Mari) 모드로 설정 (값 3)
        cmds.setAttr(uv_tiling_mode_attr, 3)

    # 변경된 노드 개수 출력
    num_changed_nodes = len(file_nodes)
    if num_changed_nodes > 0:
        cmds.inViewMessage(
            amg=f'', 
            pos='midCenterTop', 
            fade=True, 
            fit=100
        )
    else:
        cmds.inViewMessage(
            amg=f'', 
            pos='midCenterTop', 
            fade=True, 
            fit=100
        )

# 스크립트 실행
set_udim_tiling()

 

Maya Python `cmds` 모듈 상세 매뉴얼

아래는 위 코드에서 사용된 Maya Python 함수 및 명령어들입니다:

maya.cmds 모듈

Maya의 명령어를 사용할 수 있도록 하는 모듈입니다.

cmds.ls()

주어진 조건에 맞는 객체 리스트를 반환합니다.

selected_nodes = cmds.ls(selection=True)

cmds.nodeType()

주어진 객체의 타입을 반환합니다.

cmds.nodeType(node) == 'file'

cmds.setAttr()

지정된 객체의 속성 값을 설정합니다.

cmds.setAttr(uv_tiling_mode_attr, 3)

cmds.inViewMessage()

Maya의 뷰포트 상단에 메시지를 표시합니다.

cmds.inViewMessage(amg='', pos='midCenterTop', fade=True, fit=100)